# CosTransactions_Resource

### MODULE

CosTransactions_Resource

### MODULE SUMMARY

This module implements the OMG CosTransactions::Resource interface.

### DESCRIPTION

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

### EXPORTS

`commit(Resource) -> Return`

Types:

`Resource = #objref`
`Return = ok | {'EXCEPTION', E}`
`E = #'CosTransactions_NotPrepared'{} | #'CosTransactions_HeuristicRollback'{} | #'CosTransactions_HeuristicMixed'{} | #'CosTransactions_HeuristicHazard'{}`

This operation instructs the Resource to commit all changes made as a part of the transaction.

The Resource can raise:

- Heuristic Exception - if a Heuristic decision is made which differ from the true outcome of the transaction. The Resource must remember the Heuristic outcome until the `forget` operation is performed.

`commit_one_phase(Resource) -> Return`

Types:

`Resource = #objref`
`Return = ok | {'EXCEPTION', E}`
`E = #'CosTransactions_HeuristicHazard'{} | #'CosTransactions_TransactionRolledBack'{}`

If possible, the Resource should commit all changes made as part of the transaction, else it should raise the TRANSACTION_ROLLEDBACK exception. This operation can only be used if the Resource is the only child of its parent.

`forget(Resource) -> Return`

Types:

`Resource = #objref`
`Return = ok`

This operation informs the Resource that it is safe to forget any Heuristic decisions and the knowledge of the transaction.

`prepare(Resource) -> Return`

Types:

`Resource = #objref`
`Return = Vote | {'EXCEPTION', E}`
`Vote = 'VoteReadOnly' | 'VoteCommit' | 'VoteRollback'`
`E = #'CosTransactions_HeuristicMixed'{} | #'CosTransactions_HeuristicHazard'{}`

This operation is invoked on the Resource to begin the two-phase commit protocol.

The Resource can reply:

- 'VoteReadOnly' - if no persistent data has been modified by the transaction. The Resource can forget all knowledge of the transaction.
- 'VoteCommit' - if the Resource has been prepared and is able to write all the data needed to commit the transaction to stable storage.
- 'VoteRollback' - under any circumstanses but must do so if none of the alternatives above are applicable.
- Heuristic Exception - if a Heuristic decision is made which differ from the true outcome of the transaction. The Resource must remember the Heuristic outcome until the `forget` operation is performed.

`rollback(Resource) -> Return`

Types:

`Resource = #objref`
`Return = ok | {'EXCEPTION', E}`
`E = #'CosTransactions_HeuristicCommit'{} | #'CosTransactions_HeuristicMixed'{} | #'CosTransactions_HeuristicHazard'{}`

This operation instructs the Resource to rollback all changes made as a part of the transaction.

The Resource can raise:

- Heuristic Exception - if a Heuristic decision is made which differ from the true outcome of the transaction. The Resource must remember the Heuristic outcome until the `forget` operation is performed.

### AUTHORS

support - support@erlang.ericsson.se

cosTransactions 1.2
Copyright © 1991-2003 Ericsson Utvecklings AB