1 aMule with Boost ASIO networking - by Stu Redman
3 We are still having some networking problems with wxWidgets, even with 2.8.12.
4 With wx 2.9 SVN networking was completely broken for some versions. So I wanted to see
5 how a different networking layer behaves, and if it is even possible to integrate
7 I decided on Boost ASIO because of the good reputation of the Boost library.
9 The goal is to have an aMule which can be configured to use either wx Sockets
10 or ASIO sockets for all major tasks (this may exclude things like http download).
11 And with ASIO sockets it should perform better at least in some aspects
12 (stability, speed, CPU, memory) for this endeavour to make sense.
14 There are no plans to "boostify" aMule. Boost is encapsulated in the implementation
15 and not even included in the headers.
17 Implementation is near complete. It's been tested in Windows and Linux.
18 More testing is required.
20 In some environments using Boost saves a lot of CPU, in others it doesn't.
23 - better error handling/error messages
24 - further abstraction (replace wx socket constants in code)
25 - make use of background resolve for AsyncDNS instead of spawning a thread
27 If you like to play with new stuff I'd like you to try it out and give me feedback.
28 Especially if you are having networking problems or out of memory crashes, or if you
29 are running aMule at high speeds.
34 Get current boost lib from www.boost.org . Extract it to your favorite
35 place (like ~/amule/boost_1_49_0).
36 Boost.Asio is header-only. It requires Boost.System for its error codes,
37 but we include the single .cpp directly, so we don't need to build
41 ./configure --with-boost
43 ./configure --with-boost=/path/to/boost/sources
45 Important: aMule prints "Asio thread started" in log and console on startup.
46 If it doesn't you have probably configured it to use wx sockets!