3.2.1.2 Session State

An MSDTC Connection Manager: OleTx Transports Protocol partner MUST maintain a session table (a table of session objects) keyed by the contact identifier (CID) field of the Name field referenced by each session object. Each partner maintains a table of the sessions in progress. This table grows and shrinks as sessions are established and terminated. A session object MUST maintain the following data elements:

Name: A name object that contains contact information for the remote partner.

Version: A BOUND_VERSION_SET structure representing the session values negotiated between the two participants in the session.

Binding Handle: An RPC binding handle to the remote partner.

Context Handle: The RPC context handle associated with this session for the remote partner.

Timers: Each session has two timers: a Session Setup timer and a Session Teardown timer.

State: The current state of the session. The state of the session MUST be one of the following values:

  • Connecting

  • Confirming Connection

  • Active

  • Requesting Teardown

  • Teardown

The valid state transitions are described by one of the two following state diagrams, depending on whether the local partner is the primary partner in the session or not. Only a secondary partner has the option to enter the Requesting Teardown state.

Primary session state

Figure 4: Primary session state

Secondary session state

Figure 5: Secondary session state

Note It is possible to implement the conceptual data defined in this section using a variety of techniques. An implementation is at liberty to implement such data in any way it pleases.