A publisher sends a 'TRACK_STATUS' message on the control stream in response to a TRACK_STATUS_REQUEST message.
TRACK_STATUS Message {
Type (i) = 0xE,
Length (i),
Track Namespace (tuple),
Track Name Length(i),
Track Name (..),
Status Code (i),
Last Group ID (i),
Last Object ID (i),
}
The 'Status Code' field provides additional information about the status of the track. It MUST hold one of the following values. Any other value is a malformed message.
0x00: The track is in progress, and subsequent fields contain the highest group and object ID for that track.
0x01: The track does not exist. Subsequent fields MUST be zero, and any other value is a malformed message.
0x02: The track has not yet begun. Subsequent fields MUST be zero. Any other value is a malformed message.
0x03: The track has finished, so there is no "live edge." Subsequent fields contain the highest Group and object ID known.
0x04: The publisher is a relay that cannot obtain the current track status from upstream. Subsequent fields contain the largest group and object ID known.
Any other value in the Status Code field is a malformed message.
When a relay is subscribed to a track, it can simply return the highest group and object ID it has observed, whether or not that object was cached or completely delivered. If not subscribed, a relay SHOULD send a TRACK_STATUS_REQUEST upstream to obtain updated information.
Alternatively, the relay MAY subscribe to the track to obtain the same information.
If a relay cannot or will not do either, it should return its best available information with status code 0x04.
The receiver of multiple TRACK_STATUS messages for a track uses the information from the latest arriving message, as they are delivered in order on a single stream.