Alo Sarv
lead developer

Donate via

Latest Builds

version 0.3
tar.gz tar.bz2
Boost 1.33.1 Headers
MLDonkey Downloads Import Module Development
Payment completed
Development in progress.
Developer's Diary

Monday, September 05, 2005

IPV4Address fixed; ChunkSelector optimizations

IPV4Address class was fixed by cyberz, now it keeps internal data always in host endian setting, removing lot of rather inconvenient handling of ip addresses in plugins. BT module also saw progress, there were a number of issues in files.cpp (the PartData/SharedFile wrappers), forwarding calls were still broken, and the custom hasher class got few fixed into it as well (altough a lot of chunks seem to fail verification still). On the bright side, I did notice few times PartData claiming it successfully verified chunks ... whether or not it is actually true is yet to be determined.

The ChunkSelector topic - I realized that we don't have to write a new ChunkSelector after all - you can't really start writing everything from scratch w/o even trying to work it out with the existing solution. So, I threw in a number of optimizations into the existing chunk-selector - it shouldn't be visible from end-user perspective, but it was neccesery to speed some things up. For example, when requesting a chunk for downloading, from a range of chunks (client is a partial source), prior to today, this meant that a complete RangeList64 was generated (list of 64bit begin/end offsets) from the passed boolean list (where each boolean indicated whether the client has the chunk or not); and the actual checks were done against RangeList64. Now, that step is completely eliminated, and we do some simple integer math directly on the passed vector, which is considerably faster.

Also, on the same area, we formerly didn't make any difference between "partially downloaded" and "not downloaded" chunks; the former would then be a chunk that has some data already downloaded, while the latter hasn't been downloaded at all. This caused the first round of ChunkSelection (which prefers partially-downloaded chunks in attempt to complete and hash them) walk the ENTIRE chunkmap (74 steps for a 700mb ed2k download). This no longer happens, and a usable chunk is generally found within 1-4 steps. The above also caused some issues with rarest-selector, which should also work more effectivly now.

View entire change list

Madcat, ZzZz

A realy good torrent to test the BT Part of HN:
This torrent is 591345 bytes big.
7727875550 bytes in 29480 Chunks
Post a Comment

<< Home

This page is powered by Blogger. Isn't yours?