The PartData::getLock() method bug got fixed (the bug actually lied inside Range API, namely, Range::erase() method). However, PartData::getRange() method (where the actual chunk-selection code, the most important part of PartData v2 lies), also seems to have some problems. So it still needs further debugging.
I merged my local code tree to CVS, since the amount of differences between CVS and my local tree started to get out of hand (hadn't commited anything in almost two weeks). Now I can get back to more regular CVS updates, and have better means of keeping track of changes.
Below is the complete list of changes merged to CVS (changes between 01/24/05 and 02/06/05):
- hydranode/tests/test-hasher/ (Makefile.am test-hasher.cpp Makefile): Regress-test for Hasher v2.
- hydranode/tests/test-range/ (Makefile.am test-range.cpp test-range2.cpp): Regress-test for Range API v2.
- hydranode/tests/test-partdata/ (Makefile.am test-partdata.cpp): Regress-test for PartData v2.
- hydranode/tests/Makefile.am: Added test-ipfilter, test-range, test-partdata and test-hasher subdirs.
- hydranode/modules/hnsh/shellclient.cpp: Cosmetic changes. Now uses global lambda_placeholders.h for lamba stuff.
- hydranode/include/hn/ (bind_placeholders.h lambda_placeholders.h osdep.h): Bind placeholders moved to bind_placerholders.h. lambda_placeholders.h added.
- hydranode/configure.ac: Enable 64-bit file I/O support.
- hydranode/include/hn/event.h: Now uses bind_placeholders.h
- hydranode/include/hn/eventbase.h: Cosmetic and documentary changes.
- hydranode/ (include/hn/rangelist.h include/hn/range.h src/Makefile.am): Range API v1 replaced globally with Range API v2.
- hydranode/include/hn/range2.h: Range2.h removed.
hydranode/ (4 files in 2 dirs): PartData v2.
- hydranode/ (include/hn/hash.h src/hash.cpp): Part renamed to Chunkin Hash/HashSet classes.
- hydranode/ (include/hn/hasher.h src/hasher.cpp): Hasher v2, now based on WorkThread API.
- hydranode/include/hn/hashsetmaker.h: Added MD4Hash generation.
- hydranode/ (8 files in 3 dirs): Use ints for events instead of enums.
- hydranode/ (include/hn/scheduler.h include/hn/sockets.h src/sockets.cpp): Wording change - timeouted -> timed out
- hydranode/ (include/hn/workthread.h src/workthread.cpp): Simplification and cleanup in WorkThread API.
- hydranode/modules/ed2k/ (clients.cpp clients.h packets.cpp packets.h): Now uses PartData v2 and Range API v2.
- hydranode/modules/ed2k/ (ed2k.cpp ed2ksearch.cpp): Now includes sharedfile.h
- hydranode/src/eventbase.cpp: EventTableBase methods definitions moved to source file.
- hydranode/src/hashsetmaker.cpp: Misc fixes, cleanups and changes.
- hydranode/src/hydranode.cpp: Disabled few trace masks.
- hydranode/src/Makefile.am: Added ipfilter.cpp to compilation.
- hydranode/src/ipfilter.cpp: Now includes rangelist.h
Everything not dealing with downloading should work just as before (I hope). Downloading things works in theory, in practice, it runs into endless loops frequently during part-selection and/or chunk-locking - that's the part that needs further debugging.