Editing Mod Multi Packet

From EMule Wiki
Jump to: navigation, search

Warning: The database has been locked for maintenance, so you will not be able to save your edits right now. You may wish to cut-n-paste the text into a text file and save it for later.

The administrator who locked it offered this explanation: site maintenance

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 32: Line 32:
 
= Mod Multi Packet Applications =
 
= Mod Multi Packet Applications =
  
== ICS ==
+
== ICS v1/v2 ==
ICS (Version 2) Extends the regular chunk status with the status of incomplete chunks, it sends a separated status bit field listing chunks that are incomplete but not empty. This is use full for [[Intelligent_chunk_selection]] as well as for release related features.
+
ICS Extends the regular chunk status with the status of incomplete chunks, it sends a separated status bit field listing chunks that are incomplete but not empty. This is use full for [[Intelligent Chunk Selection]] as well as for release related features (v2).
  
 
The ICS informations should be accepted in every Multi Packet because all 4 variants should use the same parsing function.
 
The ICS informations should be accepted in every Multi Packet because all 4 variants should use the same parsing function.
Line 43: Line 43:
 
</pre>
 
</pre>
  
The ICS version used for mod Prot is v2 and it sends the Status in request answers, as well as in the request itself.
+
=== v1 ===
 +
The v1 version sends the informations only in file request answers over TCP, it don't sent them over UDP and it also don't sends them to the source in a file request.  
  
The purpose of sending the data in file request is to allow the releasing clients have a better overview witch parts are needed as well as don't apply part hiding for a particular client on parts that he have incomplete.
+
=== v2 (Neo) ===
As well as heaving the status for a4af sources as well in order to can better select the most needed chinks.
+
The Neo v2 extension enables sending of the status informations over UDP and in file request. The purpose of sending the data in file request is to allow the releasing clients have a better overview witch parts are needed as well as don't apply part hiding for a particular client on parts that he have incomplete.
 
+
Note: the old v1 sends the informations only in file request answers over TCP, it don't sends them to the source in a file request.
+
  
 
== SCT ==
 
== SCT ==
Line 55: Line 54:
 
The mod multi packet entry for SCT have the following format:
 
The mod multi packet entry for SCT have the following format:
 
<pre>
 
<pre>
[uint8 1] opts  // [bits 1-3] // block divider how many blocks are represented by one bit (only 1, 2, 3, 4, 7 are valid)
 
                // [bits 4-8]  // reserved
 
 
[uint8 1] count        // Map Count
 
[uint8 1] count        // Map Count
 
if count == 0xff [uint16 2] long count  // just in case
 
if count == 0xff [uint16 2] long count  // just in case
 
// block maps for selected parts
 
// block maps for selected parts
 
[uint16 2] part // part number
 
[uint16 2] part // part number
[bitField 7/Div]       // what blocks are done
+
[bitField56 7]          // [bits 1-53] block status
 +
                        // [bits 54-55] reserved
 +
                        // [bits 56] determines if the map contains verified blocks
 
// next map
 
// next map
 
</pre>
 
</pre>
Line 68: Line 67:
 
The Maps are sent progressive, only when all have been sent they are resent from the begin and only on TCP, on UDP no resent is done after all maps are out.
 
The Maps are sent progressive, only when all have been sent they are resent from the begin and only on TCP, on UDP no resent is done after all maps are out.
  
== RPS ==
+
== RPT ==
 
Real Part Status is an additional extension of the part status informations, it contains the informations witch parts have been hidden/blocked by releasing client. The Mon Multi packet entry have the exact same format as ICS. It can be sent under 2 different opcodes indicating if the parts are only hidden and are downloadable or if they are completely blocked.
 
Real Part Status is an additional extension of the part status informations, it contains the informations witch parts have been hidden/blocked by releasing client. The Mon Multi packet entry have the exact same format as ICS. It can be sent under 2 different opcodes indicating if the parts are only hidden and are downloadable or if they are completely blocked.
  
 
= Appendix  =
 
= Appendix  =
== UDP Handling ==
 
Whether the Extended mod file status informations are to be sent as well over UDP or not is determined by a separated flag (UDP Mod File Status). The flag tels us if the extended status informations enabled for TCP by mod flags are to be sent as well over UDP.
 
 
== Status Handling ==
 
 
The client must be able to handle the situation when the remote client don't send the extended status informations on  every reask(answer) (it must not drop the old status until new status is received).
 
 
Clients should only send the extended status over UDP when something in the status changed since the last time.
 
 
The extended status should Always be sent over TCP because we don't know if the remote client restarted in the mean time, and lost the old status, if he hadn't he should used a UDP reask.
 
  
 
== OpCodes ==
 
== OpCodes ==
Line 99: Line 88:
 
|-
 
|-
 
|SOP_FILEINCSTATUS
 
|SOP_FILEINCSTATUS
| '0x8E'
+
| '0x49'
 
|-
 
|-
 
|SOP_SUBCHUNKMAPS
 
|SOP_SUBCHUNKMAPS
Line 105: Line 94:
 
|-
 
|-
 
|}
 
|}
 
 
[[category:Mod_protocol_extensions]]
 

Please note that all contributions to EMule Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see EMule Wiki:Copyrights for details). Do not submit copyrighted work without permission!

Cancel | Editing help (opens in new window)
Personal tools