3.2.7.20 Enlistment Vote Complete
The Enlistment Vote Complete event MUST be signaled with the following arguments:
An Enlistment object.
A value indicating the Enlistment's vote. This value MUST be set to one of the following values:
Read Only
Prepared
Aborted
If the Enlistment Vote Complete event is signaled, the Core Transaction Manager Facet (section 1.3.3.3.1) MUST perform the following actions:
If the transaction's Doomed flag is set to TRUE, the Core Transaction Manager Facet MUST cease processing the event.
Otherwise:
If the Enlistment's Vote outcome is Aborted:
Set the transaction's Doomed flag to TRUE.
Remove the Enlistment from the transaction's Phase One (section 1.3.1.2) Voter Enlistment list.
Signal the Phase One Completed event (section 3.2.7.25) on the transaction's Superior Enlistment's Transaction Manager facet with the following arguments:
The transaction's Superior Enlistment object.
The Aborted outcome.
Signal the Notify Aborted (section 3.2.7.23) event on the Core Transaction Manager Facet (section 1.3.3.3.1) with the provided transaction object.
Otherwise:
If the enlistment's Vote outcome is Read Only:
Remove the Enlistment from the transaction's Phase One Voter Enlistment list.
Otherwise:
Move the Enlistment from the transaction's Phase One Voter Enlistment list to the transaction's Phase Two (section 1.3.1.3) Voter Enlistment list.
If the transaction's Phase One Voter Enlistment list is now empty:
If the transaction state is Voting (section 3.2.1.3.5):
Signal the Voting Complete (section 3.2.7.35) event on the Core Transaction Manager Facet (section 1.3.3.3.1) with the provided transaction object.
Otherwise, if the transaction state is Phase One (section 3.2.1.3.7):
If both the transaction's Phase One Voter Enlistment list and Phase One Enlistment list are now empty:
Signal the Phase One Completed (section 3.2.7.25) event on the Core Transaction Manager Facet (section 1.3.3.3.1) with the provided transaction object.