Been a long, but not very interesting day + night. Sadly, due to several distractions by real life, development didn't go as actively as I had planned, but nonetheless, here's what I managed to get done:
- AllHandlers concept implemented into new EHS - handlers for all sources of given type. This was part of the original event engine, but wasn't implemented to new engine until now. This means starting new downloads now properly triggers automatic source queries again.
- Enabled Ed2k.ServerList timed self-callbacks, used for source reasks and some other things. Apparently these were never enabled for some reason, but now are, so Ed2k module now properly reasks sources from server every 20 mins, and also pings server with empty OfferFiles packet every 20 mins.
- As a minor update, when connecting to a server, and login negotiation takes longer than 5 seconds, the attempt is dropped. Note that this is different from the 3-second TCP connection attempt timeout. Before this update, it often took hydranode very long time to get a connection because it tried to connect to a slow/faraway server. This shouldn't happen anymore.
- Added additional tags support to SearchResult parser - namely CT_MEDIA_LENGTH(0xd3), CT_MEDIA_BITRATE(0xd4), CT_MEDIA_CODEC(0xd5) and CT_LASTSEENCOMPL(0x05). While these are still not displayed in hnshell output (because I couldn't find a clean way of displaying it in console output), they are handled properly internally in HydraNode Search API, and can easily be displayed in full UI when needed.
- Related to the above, I also added debug timer to SearchResult packet parser, since that's the best location to test our packet parser speed due to the large amount of data coming in through that. Initial tests showed 0.50s parse time for 300 search results (0.35s in optimized build). Would be helpful to know if these times remain same on mid/low-end systems (hint - test!)
Madcat, ZzZz
PS: If any1 happens to know a good
dev-blog-title-generator, let me know :P