Well, I don't know what hit me, but I'm dead tired, and it's only midnight ... bah. Well, call it a day then. Today hydranode learned the following new tricks:
- Autosaves MetaDb every 10 minutes - no more lost hashes
- hydranode.log is now timestamped, including date and time
- HydraNode now performs a clean shutdown when SIGTERM or SIGQUIT is received
- ServerList internal structures now perform proper duplicate checking
- Servers received from Servers are now stored in ServerList
- Dead servers are removed from ServerList after 3 retries
Other than that, I'v been working on the
Client::DownloadInfo and
Client::SourceInfo objects separation and handling. While originally
Client::DownloadInfo was managing everything, now it will only be loaded when actual data transfering occours, and the rest of the time, only
Client::SourceInfo object is kept alive. This is cleaner, and saves a lot of memory when many sources are being handled. However, the new implementation is not yet complete (and I'm too tired to complete it today), so hopefully it can be deployed tomorrow.
Port newsWindows port uses, as we know, MSVC. And the function object's lib the
Event Subsystem uses is too old, and breaks on modern MSVC. While I originally thought it only applied to function calls to inside modules, it also breaks on function calls within core. The Event Subsystem has been scheduled for structural redesign anyway, to be based on Boost.Signal instead, so...
For OSX port, modules loading/handling seems to be working fine now, but there are two problems left:
- Sockets. I have no idea (yet) what's going on there, but I'm not getting any events.
- Multiply defined symbols between different boost headers. This is a compiler-related issue, response from boost-users mailing list was basically to hack the relevant boost header and use different compiler workaround. Haven't gotten around to do it (yet).
On other news, seems my
eDonkey2000 Protocol Specification has drawn some interest - today it was linked from
eMule forums :)
Madcat, ZzZz
PS: HydraNode uses port 4663 for ED2K right now to allow co-existing with existing ED2K clients. If you'r getting LowID with hydranode, open up TCP port 4663 in your firewall, or modify
TCP Port setting in
$(HOME)/.hydranode/ed2k/ed2k.ini file.