CosTransactions_Coordinator

MODULE

CosTransactions_Coordinator

MODULE SUMMARY

This module implements the OMG CosTransactions::Coordinator interface.

DESCRIPTION

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

EXPORTS

create_subtransaction(Coordinator) -> Control

Types:

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

Types:

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

Types:

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

Types:

Coordinator = #objref
Status = atom()

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

get_top_level_status(Coordinator) -> Status

Types:

Coordinator = #objref
Status = atom()

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

hash_top_level_tran(Coordinator) -> Return

Types:

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

Types:

Coordinator = #objref
Return = integer()

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

is_descendant_transaction(Coordinator, OtherCoordinator) -> Return

Types:

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

Types:

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

Types:

Coordinator = #objref
Return = Boolean

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

register_resource(Coordinator, Resource) -> RecoveryCoordinator

Types:

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

Types:

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

Types:

Coordinator = #objref
Return = ok

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