3.4.5.1.3.1 Receiving a TXUSER_BEGINNER_MTAG_PROMOTE Message
When the transaction manager communicating with an application facet receives a TXUSER_BEGINNER_MTAG_PROMOTE message, the transaction manager communicating with an application facet MUST perform the following actions:
If the connection state is Idle:
Set the connection state to Beginning Transaction.
If the transaction manager does not have sufficient memory available to process the message:
Send a TXUSER_BEGIN2_MTAG_SINK_ERROR message using the connection:
The Error field MUST be set to TRUN_TXBEGIN_ERROR_NO_MEM.
Set the connection state to Ended.
Otherwise:
Create a transaction object using the transaction settings provided in the message:
Use the isoLevel field as the Isolation Level value of the transaction.
Use the dwTimeout field as the Timeout value of the transaction.
Use the szDesc field as the Description value of the transaction.
Use the isoFlags field as the Isolation Flags value of the transaction.
Use the guidTX field as the Transaction Object.Identifier value of the transaction.
Add the connection to the connection list of the transaction.
Create a new Enlistment object with the following values:
The transaction manager communicating with an application facet.
The transaction object.
The connection.
Set the Enlistment field of the connection to the new Enlistment object.
Signal the Create Transaction (section 3.2.7.13) event on the Core Transaction Manager Facet with the enlistment object.
Otherwise, the message MUST be processed as an invalid message as specified in section 3.1.6.