Object Send Order: An integer indicating the object send order send-order or priority ordering-by-priorities value. <del> Object Payload Length: The length of the following Object Payload. If this field is absent, the object payload continues to the end of the stream. </del> <ins> Object Forwarding Preference: An enumeration indicating how a sender sends an object.  The preferences are Track, Group, and Object.  An Object MUST be sent according to its "Object Forwarding Preference", described below. </ins> Object Payload: An opaque payload intended for the consumer and SHOULD NOT be processed by a relay. <ins> 6.3.2. An "OBJECT_STREAM" message carries a single object on a stream. There is no explicit length of the payload; it is determined by the end of the stream.  An "OBJECT_STREAM" message MUST be the first and only message on a unidirectional stream. An Object received in an "OBJECT_STREAM" message has an "Object Forwarding Preference" = "Object". To send an Object with "Object Forwarding Preference" = "Object", open a stream, serialize object fields below, and terminate the stream. Subscribe ID: Subscription Identifer as defined in message- subscribe-req. Track Alias: Identifies the Track Namespace and Track Name as defined in message-subscribe-req. The Track Namespace and Track Name identified by the Track Alias is different from the one specified in the subscription identified by Subscribe ID, the receiver MUST close the session with a Protocol Violation. Other fields: As described in canonical-object-fields. 6.3.3. When multiple objects are sent on a stream, the stream begins with a stream header message and is followed by one or more sets of serialized object fields.  If a stream ends gracefully in the middle of a serialized Object, terminate the session with a Protocol Violation. A sender SHOULD NOT open more than one multi-object stream at a time with the same stream header message type and fields. TODO: figure out how a relay closes these streams When a stream begins with "STREAM_HEADER_TRACK", all objects on the stream belong to the track requested in the Subscribe message identified by "Subscribe ID".  All objects on the stream have the "Object Send Order" specified in the stream header. All Objects received on a stream opened with STREAM_HEADER_TRACK have an "Object Forwarding Preference" = "Track". To send an Object with "Object Forwarding Preference" = "Track", find the open stream that is associated with the subscription, or open a new one and send the "STREAM_HEADER_TRACK" if needed, then serialize the the following object fields. When a stream begins with "STREAM_HEADER_GROUP", all objects on the stream belong to the track requested in the Subscribe message identified by "Subscribe ID" and the group indicated by "Group ID". All objects on the stream have the "Object Send Order" specified in the stream header. All Objects received on a stream opened with "STREAM_HEADER_GROUP" have an "Object Forwarding Preference" = "Group". To send an Object with "Object Forwarding Preference" = "Group", find the open stream that is associated with the subscription, "Group ID" and "Object Send Order", or open a new one and send the "STREAM_HEADER_GROUP" if needed, then serialize the following fields. 6.3.4. Sending a track on one stream: Sending a group on one stream, with a unordered object in the group appearing on its own stream. </ins> 6.4. A receiver issues a SUBSCRIBE to a publisher to request a track.