So, back at development; I figured to get us warmed up again, I'll do some optimizations, and few bugfixes along the way. Most part of today went to profiling and fixing the resulting bottlenecks. Some things, however, are outside my control for now - namely, ed2k module has rather heavy bottleneck at Crypto calls (which is external code).
Anyway, the listing:
- [FIXED] ed2k now properly set connected state in BaseClient for incoming clients as well.
- [FIXED] Fixed duplicate calls to socketError(), which resulted in errors ala "Error closing socket: Success".
- [FIXED] Moved Bt::Manager shutdown code to Bt::Manager::exit() method instead of destructor to solve some shutdown crashes.
- [OPTIMIZATION] Removed top-level exception handlers (were only enabled in release build). Rationale is that if we ever need those, we should fix the bugs instead of relying on such things.
- [OPTIMIZATION] Scheduler optimization: Optimizes away the 5% time spent in ~SSocketWrapper by moving the object from stack to heap (wrapped in shared_ptr).
- [OPTIMIZATION] Inline PartData::isComplete() calls.
- [OPTIMIZATION] Scheduler optimization: Reduce map lookups by storing SSocketWrapper pointer in SSocket as well.
- [IMPROVED] Better command-line handling in bget: now passes args to hncore as well, so all normal args work now.
- [IMPROVED] Build system improvements: Now you can compile --with-mod-xxx or --without-mod-xxx; bjam install, install-libs and install-headers (almost) work as well. (patch by sca)
Madcat, ZzZz