3.2.1 Abstract Data Model

This section describes a conceptual model of possible data organization that an implementation maintains to participate in this protocol. The described organization is provided to facilitate the explanation of how the protocol behaves. This specification does not mandate that implementations adhere to this model as long as their external behavior is consistent with that described in this document.

Client-ID: The value of this variable is an identifier assigned by the server for the current streaming "session". The initial value is undefined.

Client-features: This variable stores the capabilities that the client specified on the most recently received Supported header.

Client-Version: This variable stores the client product name and the major and minor version number that the client specified on the most recently received User-Agent header.

Data-Connection: This variable stores information that identifies the TCP connection that the server sends $D packets to. The variable is comprised by the following information: source IP address, source TCP port number, destination IP address, and destination TCP port number. The source IP address and source TCP port number represent the IP address and TCP port number on which the server received the TCP connection. The destination IP address and destination TCP port number represent the IP address and port number on the client to which the server is sending TCP packets for this connection. The fields can assume any value allowed by the TCP/IP protocol implementation. A destination TCP port number value of 0 is reserved to indicate that the Data-Connection variable does not have a valid value. By default, the destination TCP port number value is 0.

Higher-Layer-ID: This variable is a numerical identifier that is assigned by the higher layer.  In case the higher layer is maintaining multiple instances of the server role, the higher layer can use this variable to determine which server role instance is invoking it, as long as the higher layer makes sure to assign a distinct Higher-Layer-ID value to each instance of the server role.  The initial value is undefined.

Incarnation: This variable stores a number that is used when assigning a value to the Incarnation field of Data packets. The initial value of this variable is 0.

KeepAlive-Mode: This variable specifies whether the protocol is in pipelined mode or non-pipelined mode.

Pending-Responses: This variable is an ordered list where each element is a response to one of the request types defined in 2.2.2. Elements are always added to the tail end of the list when a request  is received and removed from the head of the list when a corresponding response is sent. The default value of this variable is an empty list.

Pipeline-Test-Started: A flag that, if set to 1, indicates that the first out of two Pipeline requests (2.2.1.4.16) has been received. Possible values are 0 and 1. The default value is 0.

Pipeline-Test-Timer-Running: A flag that, if set to 1, indicates that the Pipeline-Test timer is running.  If the flag is set to 0, it indicates that the Pipeline-Test timer is not running. Possible values are 0 and 1. The default value is 0.

Playlist-gen-id: The value of this variable is an identifier assigned by the server to identify the current playlist entry. The default value is 0.

Request-Connection: This variable stores information that identifies the TCP connection on which the most recently received request was received. The variable is comprised by the following information: source IP address, source TCP port number, destination IP address, and destination TCP port number. The source IP address and source TCP port number represent the IP address and TCP port number on which the server received the TCP connection. The destination IP address and destination TCP port number represent the IP address and port number on the client to which the server is sending TCP packets for this connection. The fields can assume any value allowed by the TCP/IP protocol implementation. A destination TCP port number value of 0 is reserved to indicate that no request has been received yet. By default, the destination TCP port number value is 0.

SelectStream-Time: This variable stores the local server time value of the time that the most recent SelectStream request was received. The initial value is 0, which indicates that SelectStream has never been received.

Session-State: This variable stores the state of the streaming session identified by the Client-ID variable. Possible values are INIT, STREAMING, WAITING, and IDLE.

Note The preceding conceptual data can be implemented by using a variety of techniques. An implementation is at liberty to implement such data in any way it pleases.