3.7.5.1.2.1.9 Connection Disconnected
When a CONNTYPE_PARTNERTM_BRANCH (section 2.2.9.1.2.1) connection is disconnected, the superior transaction manager facet MUST perform the following actions:
If the connection state is Awaiting Prepare Response:
If the state of the transaction object that is referenced by the connection is Single Phase Commit (section 3.2.1.3.9):
Signal the Enlistment Phase Zero Complete (section 3.2.7.17) event on the Core Transaction Manager Facet (section 1.3.3.3.1) with the following arguments:
The Enlistment object that is referenced by this connection
The In Doubt outcome value
Otherwise:
Signal the Enlistment Phase Zero Complete event on the Core Transaction Manager Facet with the following arguments:
The Enlistment object that this connection references
The Aborted outcome value
Otherwise, if the connection state is Awaiting Commit Response:
Retrieve the Enlistment object that is referenced by the connection object.
Initiate a new CONNTYPE_PARTNERTM_REDELIVERCOMMIT (section 2.2.9.2.2.1) connection using the Name object referenced by the Name field of the Session object containing the provided connection.
Add the new connection object to the connection list of the transaction object referenced by the Enlistment object.
Assign the new connection object to the enlistment Enlistment Object.Connection field of the Enlistment Object.
Assign the enlistment to the new connection's Enlistment field.
Send a PARTNERTM_REDELIVERCOMMIT_MTAG_COMMITREQ (section 2.2.9.2.2.1.1) message using the connection:
Set the guidTX field to the Transaction Object.Identifier field of the transaction object that is referenced by this connection Enlistment object.
Set the new connection state to Awaiting Confirmation.
Otherwise, if the connection state is Awaiting Abort Response:
Signal the Enlistment Rollback Complete (section 3.2.7.18) event on the Core Transaction Manager Facet with the Enlistment object that is referenced by this connection.
Otherwise, if the connection state is either Phase Zero, Phase Zero Registration During Phase Zero, or Phase Zero with Outstanding Registration:
Signal the Enlistment Phase Zero Complete event on the Core Transaction Manager Facet with the following arguments:
The Enlistment object that is referenced by this connection
The Aborted outcome value
Otherwise, if the connection state is either Branching, Active, Phase Zero Registration, or Requesting Phase Zero:
Signal the Enlistment Unilaterally Aborted (section 3.2.7.19) event on the Core Transaction Manager Facet with the Enlistment object that is referenced by this connection.
Finally, in all cases, the event MUST be processed as specified in section 3.1.8.3.