2.2.4.4 MSG_GETSEGLIST

The MSG_GETSEGLIST (GetSegmentList) message contains a request for a download segment list. It is used when retrieving a set of segments. This message MUST be formatted as follows.<6>


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

RequestID

...

...

...

CountOfSegmentIDs

SizeOfSegmentID

SegmentID (variable)

...

ZeroPad (variable)

...

SizeOfExtensibleBlob

ExtensibleBlob (variable)

...

RequestID (16 bytes): Unique identifier among all outstanding GetSegmentList Requests from this peer.

CountOfSegmentIDs (4 bytes): Count of the Segment IDs in the current GetSegmentList Request.

The following three fields are repeated N times where N is equal to CountOfSegmentIDs.

SizeOfSegmentID (4 bytes): Size, in bytes of the first SegmentID, immediately subsequent to this field. Implementations MUST support all allowed SegmentID lengths and MUST support content with 32-byte SegmentIDs.

SegmentID (variable): Public Segment Identifier for the first target segment of content (also known as HoHoDk). See [MS-PCCRC] section 2.2 for a description of segment identifiers.

ZeroPad (variable): Sequence of bytes added (as needed) to restore 4-byte alignment, relative to the beginning of this message. The value of each byte MUST be set to zero. This field is 0 to 3 bytes in length, as required.

SizeOfExtensibleBlob (4 bytes): Size, in bytes, of the ExtensibleBlob field. Implementations MAY support extensible blobs in MSG_GETSEGLIST messages. Implementations that do not support extensible blobs in MSG_GETSEGLIST messages MUST set SizeOfExtensibleBlob to zero and omit the ExtensibleBlob field.

ExtensibleBlob (variable): An extensible binary large object (BLOB). See Extensible BLOB (section 2.2.6) for the definition of currently defined extensible BLOBs. Implementations MAY support extensible BLOBs in MSG_GETSEGLIST messages. Implementations that do not support extensible BLOBs in MSG_GETSEGLIST messages MUST set SizeOfExtensibleBlob to zero and omit the ExtensibleBlob field. Relative indexes contained in the extensible BLOB are relative to the first segment in the first SegmentRange carried by the current MSG_GETSEGLIST message.