3.3.7.1.2 Push TIP Transaction

The Push TIP Transaction event MUST be signaled by using the following arguments:

If the Push TIP transaction event is signaled, the TIP interoperability provider MUST perform the following actions:

  • Construct an OLETX_TIP_TX_ID object from the Identifier field of the transaction for which the TIP push propagation was requested, and set the OurTipTxId field of the transaction object to be the OLETX_TIP_TX_ID object. The format of the szTxId field in the OLETX_TIP_TX_ID structure SHOULD be the nonstandard form of TIP transaction identifier formats specified in [RFC2371] section 8. Optionally, the TIP Interoperability Provider Role MAY instead format the szTxId field in the OLETX_TIP_TX_ID structure using the standard form of TIP transaction identifier formats specified in [RFC2371] section 8.

  • If the transaction state (as specified in [MS-DTCO] section 3.2.1.3) is not one of the following: Active, Phase Zero, or Phase Zero Complete (as specified in [MS-DTCO]):

    • Signal the TIP Push Failure event on itself by using the following arguments:

      • The transaction object

      • The TIP error reason code

  • If the durable log of the Core Transaction Manager Facet is too full<9> to accept a new enlistment:

    • Signal the TIP Push Failure event on itself by using the following arguments:

      • The transaction object

      • The TIP error reason code

  • Using implementation-specific functionality, perform a TIP push propagation of the transaction against the TIP transaction manager that is specified in the provided OLETX_TIP_TM_ID object.

  • If the TIP push propagation operation is successful:

  • Otherwise, if the TIP push propagation operation failed:

    • Signal the TIP Push Failure event on itself by using the following argument:

      • The transaction object

      • A reason code that matches the cause of the failure, as follows:

        • TIP Connect Error: If the failure was caused by a connectivity issue.

        • TIP Error: If any other failure occurred.