by mojo85 » 02 Dec 2009 21:12
I don't think this will add any benefit unless downloading from a G1 client. It would add a new layer of complication for too little a gain. It only works as a limited scope "mp3" files, and those files are small enough that 12 original sources are enough as opposed to 100. It also defeats the reason for implementing a tagless hashing for mp3's ... the real metadata was constantly changing and fragmenting the original sources ... it may have started as 100 sources but as time progresses you get 75 under original hash1 25 under new hash2. A couple of months later this changes again ... and more peers are able to share but some under totally new hashes like hash(3,4,5,...n). This was the reason ... now we go back to constantly changing hashes.
The bittorrent idea sounds neat ... but I got an alternative. Instead of re-inventing the wheel (a virtual file to me sounds like a container file). Could we not utilize collections for this sake? It is our equivalent to a Torrent but it is much more powerful and useful. We could add BTIH urn support, and Tracker support. Each file would have it's own sha1/ eD2k/ and TTH hashes ... but on top of that the whole set of files in the collection could also have batch download support (sha1/ TTH/ and BTIH with Tracker), and sha1/ eD2k/ tth hashes for each file within it could be passed to the Downloader as a virtual file. We can modify TorrentWizard to spit out Collections ... this would move us in the right step and also create a semi standard for how future Torrents should behave with respect to batch file. At this point we can't wait for BT to write the rules for us, we have to set an example and they can follow if need be. But it would make Shareaza a better BT client.
If the above is implemented on the collections side of things, we have to suport it on the download side of things. I think the best approach is to use the virtual idea at this point. A batch download would appear as a Folder a drop down menu containing the files within the folder, and there individual progress. Another drop down menu under each file would show the peers we are downloading from. Now each file is technically a virtual file because in the partials it appears as one .sd file ... but because we are treating it as a virtual file ... it contains the information necessary to download from G2, G1, and eD2k (hashes, file offsets, file size, file name, etc...) ... bittorrent would only require the tracker and btih from the collection to download.
Now for progress bars, we can color them in individually for each downloaded part because we know it's offsets and so when downloading we can color based on those ranges with respect to the offsets ... but the parent batch download folder can be colored in based on overall downloaded percentage instead of downloaded pieces.
On uploading ... the BT upload runs as usual but now we can support partial file support for each child file under a batch download folder.