3.2.7.21 Export Transaction
The Export Transaction event MUST be signaled with the following arguments:
A transaction object
A Name object representing the remote subordinate transaction manager
If the Export Transaction event is signaled, the Core Transaction Manager Facet (section 1.3.3.3.1) MUST perform the following actions:
If the transaction state is not Active (section 3.2.1.3.2), or Phase Zero (section 3.2.1.3.3), or Phase Zero Complete (section 3.2.1.3.4):
Signal the Export Transaction Failure (section 3.4.7.11) event on the Transaction Manager communicating with an Application facet with the following arguments:
The provided transaction object
The Too Late reason code
Otherwise, if the Core Transaction Manager Facet.Durable Log is too full (section 3.2.3.2) to accept the provided transaction object:
Signal the Export Transaction Failure event on the Transaction Manager Communicating with an Application facet with the following arguments:
The provided transaction object
The Log Full reason code
Otherwise:
Compute the number of Enlistment objects in the transaction's Phase One Enlistment list whose Transaction Manager Facet field is the superior transaction manager.
If that number is equal to an implementation-specific value that indicates the maximum allowed Transaction Manager enlistments:<28>
Signal the Export Transaction Failure event on the Transaction Manager communicating with an Application facet with the following arguments:
The provided transaction object
The Too Many reason code
Otherwise:
Signal the Propagate Transaction (section 3.7.7.10) event on the Superior Transaction Manager facet with the following arguments:
The provided transaction object
The provided Name object