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, January 24, 2005

Designing HydraNode SmartChunkSelector(tm)

New PartData API design is slowly, but surely evolving. An updated version can be seen here. Most notable changes are also making LockRange an object, and bringing in HashRange (which will be the base of chunkhash maps implementation). As can be seen, the new PartData API is moving more towards nice object-oriented approach, compared to the old, rather clumsy mess.

From the implementation side, adding chunk masks works, and now I'm trying to figure out how should chunkselection done. We basically have a numbe of criterias to be considered when choosing a chunk (most likely in this order):
While the second and third are relativly easy to handle (the least-available-chunk selection system was designed a few days ago already), the first and last are rather complex to handle, so need more time to figure those out.

For those sitting around, watching and wondering "why is he wasting time on stuff like this when he should get ed2k downloading working instead?" - well, ed2k downloading has been working for quite some time - but the ranges get too fragmented near the end of the file, so the entire thing gets confused and it's hard to complete downloads. Hence the need for "complete any partial chunks" for example. As for the least-available chunk selecting, it should enhance the overall download handling significently, and also benefit the networks. So - worth spending time on.

Madcat, ZzZz

Make it easy on yourself. Choose sort of "internal rating". Each chunk gets a rating, according to its current status of downloading and spread on the network its rating changes. Then you always try to download the chunk with the highest/lowest rating, whichever way you want to do it. Changing the parameters later for how much "points" what accounts for, will then be the fine tuning, while the baisc system is generic.
Post a Comment

<< Home

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