CosTransactions_Coordinator
(cosTransactions)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 = #objrefControl = #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 = #objrefName = 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 = #objrefStatus = 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 = #objrefStatus = atom()
Returns the status of the transaction associated with the target object.
get_top_level_status(Coordinator) -> Status
Coordinator = #objrefStatus = atom()
Returns the status of the top-level transaction associated with the target object.
hash_top_level_tran(Coordinator) -> Return
Coordinator = #objrefReturn = 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 = #objrefReturn = integer()
Returns a hash code for the transaction associated with the target object.
is_descendant_transaction(Coordinator, OtherCoordinator) -> Return
Coordinator = #objrefOtherCoordinator = #objrefReturn = 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 = #objrefOtherCoordinator = #objrefReturn = 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 = #objrefReturn = Boolean
Returns true if the transaction associated with the target object is a top-level transaction.
register_resource(Coordinator, Resource) -> RecoveryCoordinator
Coordinator = #objrefResource = #objrefRecoveryCoordinator = #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 = #objrefReturn = 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 = #objrefReturn = ok
The transaction associated with the target object is modified so the only possible outcome is to rollback the transaction.