# 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 transction 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 transction 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 transction 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.

| 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.

| 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.

### AUTHORS

support - support@erlang.ericsson.se

cosTransactions 1.2
Copyright © 1991-2007 Ericsson AB