Seems the short break was very useful, today I managed to pull a measly 18+-hour dev-session, with nice progress at various areas. At the time of this writing, I'm alreay at 24h-uptime region, so I'll be brief (dah, I'll never run out of excuses to be brief, don't I? :P).
- [core] API change: EventTable::postDelayedEvent renamed to overloaded EventTable::postEvent(object, event, delay).
- [core] Added explicit single-value constructor for creating single-value ranges (e.g. Range(0) == Range(0, 0) -> length = 1)
- [core] New byte-swapping macros: SWAPXX_ALWAYS, SWAPXX_ON_BE and SWAPXX_ON_LE, where XX denotes number of bytes to swap. Available from newly added hn/endian.h, based on wxWidgets library defs.h
- [core] Implemented priorities for Sockets and Modules, which affect how network traffic is scheduled in Scheduler. Currently defined priorities are PR_LOW, PR_NORMAL and PR_HIGH.
- [core] Scheduler now supports Socket and Module priorities.
- [core] Scheduler now ignores traffic from/to localhost/LAN addresses.
- [core] Generalized application version handling. APPVER_* are now defined in osdep.h (okok, we need a better place for stuff like that).
- [hnsh] Properly erase prompt when log message is shorter than prompt.
- [hnsh] HNShell is now PR_HIGH by default, and uses PR_HIGH sockets to provide faster response times.
- [ed2k] Fixed QueueRanking sending when client was already in queue, but connected to us via TCP.
- [ed2k] Protocol documentation update - added UDP stuff
- [ed2k] Client<->Client UDP (and TCP if needed) source reasks implemented. We reask every 30 minutes, using UDP whenever possible, but falling back to TCP if needed.
- [ed2k] Client UDP reask timeout is now 30s. If 3 UDP reasks timeout in a row, we attempt to establish TCP connection. If that fails, we drop the source as dead one. Also, we store last reask timestamp, and dont attempt reask if last communication was <>
- [ed2k] Fixed Client<->Client UDP packets construction (was using TCP-packet format, but UDP uses different, more compact, format).
- [ed2k] More verbosity (read: greppable) to Client UDP reasks code.
- [ed2k] Initial code for Client<->Server UDP reasks
- [ed2k] GlobGetSources packet implemented.
- [ed2k] Cleanup in ServerList internal constants naming style.
- [ed2k] Finalizing global Server UDP stuff: Servers are now asked via UDP for sources. No server is asked twice during 20-minute period. During normal rotation, one server is queried every ListSize/ReaskTime seconds, e.g. for 60-server-list, one server is queried every 3 minutes.
- [ed2k] ServerList sorting by Name and Desc should now work properly.
- [ed2k] Better filtering for servers which we cant ask sources for via UDP.
Bottom line is that Client UDP stuff is coming along nicely. There's still some fine-tuning needed, but the hardest stuff is already in place. Server UDP stuff, e.g. global sources searching technically should work, however, I'm not getting any responses from the servers, so something must be wrong in my GlobGetSources() packet construction that's causing the servers to refuse them. For that reason, I disabled the packet sending in CVS right now, to avoid flooding network with bogus packets.
Madcat, ZzZz
PS: Tomorrow I need to take care of some RL stuff (unavoidable...), so doubtful I'll get any code done then. But I guess only time will tell...