3.7.7.2 Begin Phase One

The Begin Phase One event MUST be signaled with the following arguments:

  • An Enlistment object.

  • A Boolean Single-Phase Commit value:

    • If true, the  Superior Transaction Manager Facet (section 1.3.3.3.4) SHOULD attempt to perform a Single-Phase Commit.

    • If false, the Superior Transaction Manager Facet MUST NOT attempt to perform a Single-Phase Commit.

If the Begin Phase One event is signaled, the Superior Transaction Manager Facet MUST perform the following actions:

  • If the provided Single-Phase Commit value is set to true:

    • Send a PARTNERTM_PROPAGATE_MTAG_PREPAREREQ (section 2.2.9.1.1.1.6) message using the connection.

      • Set the fSinglePhase field to a nonzero value.

      • Set the grfRM field to the GRFRM field of the transaction object referenced by the Enlistment object.

  • Otherwise:

    • Send a PARTNERTM_PROPAGATE_MTAG_PREPAREREQ (section 2.2.9.1.1.1.6) message using the connection.

      • Set the fSinglePhase field to zero.

      • Set the grfRM field to the GRFRM field of the transaction object referenced by the Enlistment object.

  • Set the connection state to Awaiting Prepare Response.