3.4.5.1.1.1 Receiving a TXUSER_BEGINNER_MTAG_BEGIN Message
When the transaction manager communicating with an application facet receives a TXUSER_BEGINNER_MTAG_BEGIN (section 2.2.8.1.1.2) 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_BEGINNER_MTAG_BEGIN_NO_MEM (section 2.2.8.1.1.4) message using the connection.
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.
Create a new GUID as specified in [RFC4122] and assign it to the Transaction Object.Identifier field of the transaction object.
Add the connection to the connection list of the transaction.
Set the Transaction field of the connection to the transaction object.
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 (section 1.3.3.3.1) with the Enlistment object.
Otherwise, the message MUST be processed as an invalid message, as specified in section 3.1.6.