mirror of
https://github.com/transmission/transmission.git
synced 2025-12-20 02:18:42 +00:00
2b917de65b378fe458c2c6a9d77dcbed89b056cc
This refactoring is driven by the need to be able to do true queued RPC calls (where each successive call uses the result of the previous). Currently, such queueing of requests is done by assigning them special "magic" tag numbers, which are then intercepted in one big switch() statement and acted upon. This (aside from making code greatly unclear) effectively makes each such queue a singleton, because state passing is restricted to global variables. We refactor RpcClient to assign an unique tag to each remote call, and then abstract all the call<->response matching with Qt's future/promise mechanism. Finally, we introduce a "RPC request queue" class (RpcQueue) which is built on top of QFutureWatcher and C++11's <functional> library. This class maintains a queue of functions, where each function receives an RPC response, does necessary processing, performs another call and finally returns its future.
(trunk) #3939 "autogen.sh doesn't work correctly on systems where /bin/sh doesn't point to bash" -- fixed with patch from er13
ABOUT
Transmission is a fast, easy, and free BitTorrent client.
It comes in several flavors:
* A native Mac OS X GUI application
* GTK+ and Qt GUI applications for Linux, BSD, etc.
* A headless daemon for servers and routers
* A web UI for remote controlling any of the above
Visit http://www.transmissionbt.com/ for more information.
BUILDING
Transmission has an Xcode project file (Transmission.xcodeproj)
for building in Xcode.
For a more detailed description, and dependancies, visit:
http://trac.transmissionbt.com/wiki/
Building a Transmission release from the command line:
$ xz -d -c transmission-2.11.tar.xz | tar xf -
$ cd transmission-2.11
$ ./configure
$ make
$ sudo make install
Building Transmission from the nightly builds:
Download a tarball from http://build.transmissionbt.com/job/trunk-linux-inc/
and follow the steps from the previous section.
If you're new to building programs from source code, this is typically
easier than building from SVN.
Building Transmission from SVN (First Time):
$ svn co svn://svn.transmissionbt.com/Transmission/trunk Transmission
$ cd Transmission
$ ./autogen.sh
$ make
$ sudo make install
Building Transmission from SVN (Updating):
$ cd Transmission
$ make clean
$ svn up
$ ./update-version-h.sh
$ make
$ sudo make install
Notes for building on Solaris' C compiler: User av reports success with
this invocation: ./configure CC=c99 CXX=CC CFLAGS='-D__EXTENSIONS__ -mt'
Description
Languages
C++
72.5%
Objective-C++
15.4%
JavaScript
4%
CMake
2.4%
Objective-C
1.9%
Other
3.8%