Main Page | Class Hierarchy | Data Structures | File List | Data Fields | Globals | Related Pages

Moonlight's Save Upload Queue Wait Time (MSUQWT, last updated: 2004-02-04)

Lastest updates:

Ever tried to get some rare files using eMule only to see sources quit on you after waiting for days to get from #6000 to #500? Well, with SUQWT, this is not going to be as much of a problem anymore.

How does SUQWT help?

  1. Client A is sharing some rare files with a queue of 5000 and an average uptime of 20-30 hours and an average downtime of 10-20h.
  2. When joining the queue without SLS, you always end up around 5000 unless you get a lucky shot and it takes 24h to get to 4000, at which point the source disappears.
  3. Next time the source comes back, instead of having an initial wait time of 0h, you are at 24h and will start at around 4000. By the time the source disappears again, you might manage to reach 3000. Without SUQWT, you would again go back to ~5000 the next time you find the source.
  4. Step #3 repeats until you get a send slot and have a successful upload session.
  5. After the session has ended, the wait time are reset and the cycle restarts anew for the next session.

Basically, SUQWT allows one to carry wait time from previous dead-end upload queue waiting sessions over to the next upload queue sessions until one manages to get through the upload queue, somewhat like holding a spot in a waiting line by using your gym bag or other article - if you're not there, the bag stays there and people move around it. (in an ideal civilized world anyway)

The point behind SUQWT is that many sources that have rare files often have very long queues and go offline every now and then. Each time these sources disappear, your queue ranking you had to wait 2-3 days to get from #1000 to #10 is lost and you have to start waiting all over again. These excessively long source queues make the sources worth little more than dead sources since you have little to no chance of ever getting an upload slot through normal means and downloads take forever if there are few sources or the sources have so many favoured regulars in their client queues that clients with no credit are eternally stuck near the upload queue's end.

Warning:
Because saving the wait time requires a new CreditStruct, the clients.met file's format will not be backwards-compatible so you should make a backup of the clients.met file before using the SUQWT-modified client since the next official eMule may not integrate this enhancement or not integrate it the exact same way. For this reason, SUQWT now also saves a 30c-format file in clients.met.30c.bak. Just replace clients.met with clients.met.30c.bak to restore 30c credits format.

Deprecated:
CREDITFILE_VERSION_30_SUQWTv1 and CreditStruct_30c_SUQWTv1 should be replaced by v2 ASAP since choosing the next number up for a mod was not a good idea for obvious reasons - gets in the devs' way. v2 uses an 'out of the way' version ID to avoid possible clashes.
I recommend using 0x80 as the base version for unofficial CreditStruct implementations so the stock client could check for the 8th bit to detect unofficial formats.

Warning:
All full files and code fragments are taken from Moonlight's Mod (Upcoming build: 0.42g-0.22g, ????) and may contain changes unrelated to the ones enumerated here.

Implementation

Implementing this requires surprisingly few changes (ommitting comments and structure/code duplications, the total being about 50 lines) in the following files:

For complete source files for Moonlight's Save Upload Queue Wait Time (MSUQWT, last updated: 2004-02-04) and more, download the newest Moonlight's Mod (Upcoming build: 0.42g-0.22g, ????) zipped changed sources.

Opcodes.h:

ClientCredits.h:

ClientCredits.cpp:

UploadQueue.cpp:

UploadClient.cpp


Generated on Thu Jul 1 20:28:04 2004 for Moonlight's eMule Hacks by doxygen 1.3.6