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.