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 specification.
Note In a peer-to-peer voice session, the voice client maintains the abstract data items identified in section 3.1.1. In a client/server voice session, the voice server maintains both the abstract data items identified in section 3.1.1, as well as those listed in this topic. Although the abstract data items identified in section 3.1.1 use the same names as those listed in this topic, there is no internal conflict. In a client/server configuration, the voice server maintains the abstract data items identified in this topic from the perspective of a voice server, while the items listed in section 3.1.1 are maintained from the perspective of the voice server as a player in the voice session, and therefore, as a voice client. Differentiation between the similarly named abstract data items is maintained internally by DirectPlay.
The following are abstract data items maintained by the voice server:
Voice Client List: A list of voice clients in the voice session. The Voice Client List contains the DVID and host order ID of each voice client in the voice session.
Next Host Order ID: When host migration is enabled as described in section 1.3.3.1, the voice server stores the value of the next host order ID.
Client Voice Target List: The voice server maintains a voice target list for each voice client in the voice session when server-controlled targeting is enabled. This list is used to target speech messages sent from the voice client. If the voice target list is empty, then speech messages are discarded rather than sent.
Jitter Buffers: When the voice server is using the Mixing Voice Session Subprotocol (section 1.3.4), it maintains a jitter buffer for each voice client in the voice session.
Current Message Number: When the voice server is using the Mixing Voice Session Subprotocol (section 1.3.4), this contains the message number of the current voice burst. This value is stored per voice client. When a new voice burst to a voice client is started, this value is incremented by one for the specific voice client.
Current Sequence Number: When the voice server is using the Mixing Voice Session Subprotocol (section 1.3.4), this contains the sequence number of the next speech message being sent within the current voice burst. This value is stored per voice client. When a new voice burst is started, this value is reset to 0.