3.4.5.3.1.1 Receiving a TXUSER_GETTXDETAILS_MTAG_GET Message

When the transaction manager receives a TXUSER_GETTXDETAILS_MTAG_GET message, the transaction manager MUST perform the following actions:

  • If the connection state is Idle:

    • Set the connection state to Processing Inquiry.

    • Find the transaction object in the transaction table of the transaction manager by using the guidTx field from the message as the key:

      • If the transaction object is not found in the list, the transaction manager MUST:

      • Otherwise:

        • Send a TXUSER_GETTXDETAILS_MTAG_GOTIT message using the connection with the message fields set as follows:

          • The vszSuperiorName field MUST be set to a new OLETX_VARLEN_STRING structure that is populated with the transaction object's Superior Enlistment object's Name property.

          • The vszSuperiorID field MUST be set to a new OLETX_VARLEN_STRING structure that is populated with the transaction object's Superior Enlistment object's Enlistment Object.Identifier property.

          • The rgSubordinates field MUST be set to an array of OLETX_VARLEN_STRING structures. Each subordinate entry is represented by two adjacent structures, whose values are set as follows:

            • For each enlistment object in the Phase One enlistment and Phase Two enlistment lists of the transaction:

              • The first subordinate structure MUST be set to the Name property of the enlistment object.

              • The second subordinate structure MUST be set to the Enlistment Object.Identifier property of the enlistment object.

          • The lSubordinateCount field MUST be set to the number of enlistment objects whose values were added to the rgSubordinates array.

    • Set the connection state to Ended.

  • Otherwise, the message MUST be processed as an invalid message as specified in section 3.1.6.