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.