4.1 Client States

The following diagram illustrates the states in the client role and the transitions between the states:

Client States

Figure 1: Client States

The following describes the preceding diagram:

  • The client enters INIT state when the higher layer asks the client to retrieve information about content on a server, as described in section 3.1.4.1.

  • The client transitions from INIT state to READY state when the client receives the ASF File Header.  The ASF File Header is obtained from one or more Data packets, as described in section 3.1.5.12.

  • The client begins the transition from READY to STREAMING state when the higher layer asks to start streaming content, as described in section 3.1.4.2.  However, the actual transition into STREAMING state does not occur until the client receives confirmation that the server has started the streaming.  This happens when the client receives the LinkMacToViewerReportStartedPlaying message, as described in section 3.1.5.15 or when the client receives the LinkMacToViewerReportStartStriding message, as described in section 3.1.5.16.

  • When the client is in STREAMING state, it can transition to READY if it receives a LinkMacToViewerReportEndOfStream message, as described in section 3.1.5.18. The LinkMacToViewerReportEndOfStream message might have been sent by the server because it has transmitted all of the Data packets for the content, or because the client requested that the server stop streaming, as described in section 3.1.4.5.

  • When the client is in STREAMING state and the higher layer requests to change the playback position, as described in section 3.1.4.6, a message is sent to the server which eventually results in a transition to READY state, which is followed by additional message processing and a transition back to STREAMING state.  The individual steps that cause these transitions are as follows: 

    First, the client requests the server to stop streaming.  When the client receives the LinkMacToViewerReportEndOfStream message that confirms that the server has stopped, it transitions to READY state.  At that point, the client requests the server to start streaming again from the new playback position.  When the client receives a LinkMacToViewerReportStartedPlaying or LinkMacToViewerReportStartStriding message confirming that streaming has started, then the client transitions back to STREAMING state.

  • If a new playlist entry is available, then the client will transition from STREAMING to READY state once the higher layer selects which streams it requires to be played from the new playlist entry, as described in section 3.1.4.4.

  • When the client is in READY state, the state machine terminates the connection if the higher layer asks the client to finish the streaming session, as described in section 3.1.4.8.