3.3.7.1.2 Push TIP Transaction
The Push TIP Transaction event MUST be signaled by using the following arguments:
An OLETX_TIP_TM_ID object that contains the contact information of the TIP transaction manager against which to push the transaction.
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:
Set the RemoteTipTransactionUrl field of the transaction object to the value of the TIP URL that is returned by the push propagation.
Create an Enlistment object (as specified in [MS-DTCO] section 3.1.3.1) with the following values:
The TIP interoperability provider role as a facet (For more information, see Interface with the Core Transaction Manager Facet of the Local Transaction Manager.)
The transaction object
A null connection object
Name: an Empty string
Identifier: an Empty string
Signal the Create Subordinate Enlistment event (as specified in [MS-DTCO] section 3.2.7.11) on the Core Transaction Manager Facet with the following arguments:
The enlistment object
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.