CosTransactions_Coordinator

This module implements the OMG CosTransactions::Coordinator interface.

To get access to the record definitions for the structures use:
-include_lib("cosTransactions/include/CosTransactions.hrl").

Functions


create_subtransaction(Coordinator) -> Control

  • Coordinator = #objref
  • Control = #objref

A new subtransaction is created whose parent is the Coordinator argument.

Raises exception:

'SubtransactionsUnavailable' - if nested transactions are not supported. 'Inactive' - if target transaction has already been prepared.

get_transaction_name(Coordinator) -> Name

  • Coordinator = #objref
  • Name = string() of type "oe_name@machine_type_timestamp"

Returns a printable string, which describe the transaction. The main purpose is to support debugging.

get_parent_status(Coordinator) -> Status

  • Coordinator = #objref
  • Status = atom()

Returns the status of the parent transaction associated with the target object. If the target object is a top-level transaction this operation is equivalent to get_status/1 operation.

Possible Status replies:

'StatusCommitted' 'StatusCommitting' 'StatusMarkedRollback' 'StatusRollingBack' 'StatusRolledBack' 'StatusActive' 'StatusPrepared' 'StatusUnknown' 'StatusNoTransaction' 'StatusPreparing'

get_status(Coordinator) -> Status

  • Coordinator = #objref
  • Status = atom()

Returns the status of the transaction associated with the target object.

get_top_level_status(Coordinator) -> Status

  • Coordinator = #objref
  • Status = atom()

Returns the status of the top-level transaction associated with the target object.

hash_top_level_tran(Coordinator) -> Return

  • Coordinator = #objref
  • Return = integer()

Returns a hash code for the top-level transaction associated with the target object. Equals the operation hash_transaction/1 if the target object is a top-level transaction.

hash_transaction(Coordinator) -> Return

  • Coordinator = #objref
  • Return = integer()

Returns a hash code for the transaction associated with the target object.

is_descendant_transaction(Coordinator, OtherCoordinator) -> Return

  • Coordinator = #objref
  • OtherCoordinator = #objref
  • Return = Boolean

Returns true if the transaction associated with the target object is a descendant of the transaction associated with the parameter object.

is_same_transaction(Coordinator, OtherCoordinator) -> Return

  • Coordinator = #objref
  • OtherCoordinator = #objref
  • Return = Boolean

Returns true if the transaction associated with the target object is related to the transaction associated with the parameter object.

is_top_level_transaction(Coordinator) -> Return

  • Coordinator = #objref
  • Return = Boolean

Returns true if the transaction associated with the target object is a top-level transaction.

register_resource(Coordinator, Resource) -> RecoveryCoordinator

  • Coordinator = #objref
  • Resource = #objref
  • RecoveryCoordinator = #objref

This operation registers the parameter Resource object as a participant in the transaction associated with the target object. The RecoveryCoordinator returned by this operation can be used by this Resource during recovery.

Note!

The Resources will be called in FIFO-order when preparing or committing. Hence, be sure to register the Resources in the correct order.

Raises exception:

'Inactive' - if target transaction has already been prepared.

register_subtran_aware(Coordinator, SubtransactionAwareResource) -> Return

  • Coordinator = #objref
  • Return = ok

This operation registers the parameter SubtransactionAwareResource object such that it will be notified when the transaction, associated wit the target object, has committed or rolled back.

Note!

The Resources will be called in FIFO-order. Hence, be sure to register the Resources in the correct order.

rollback_only(Coordinator) -> Return

  • Coordinator = #objref
  • Return = ok

The transaction associated with the target object is modified so the only possible outcome is to rollback the transaction.