1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
//File: ConcurrencyControl.idl
//The only module of the Concurrency Control Service
#ifndef _COS_CONCURRENCY_CONTROL_IDL_
#define _COS_CONCURRENCY_CONTROL_IDL_
// omniORB specific pragmas to insert extra includes into the stub header.
#pragma hh #include "COS_sysdep.h"
#include <orb.idl>
#pragma prefix "omg.org"
#include <CosTransactions.idl>
module CosConcurrencyControl {
enum lock_mode {
read,
write,
upgrade,
intention_read,
intention_write
};
exception LockNotHeld{};
interface LockCoordinator
{
void drop_locks();
};
interface LockSet
{
void lock(in lock_mode mode);
boolean try_lock(in lock_mode mode);
void unlock(in lock_mode mode)
raises(LockNotHeld);
void change_mode(in lock_mode held_mode,
in lock_mode new_mode)
raises(LockNotHeld);
LockCoordinator get_coordinator(
in CosTransactions::Coordinator which);
};
interface TransactionalLockSet
{
void lock(in CosTransactions::Coordinator current,
in lock_mode mode);
boolean try_lock(in CosTransactions::Coordinator current,
in lock_mode mode);
void unlock(in CosTransactions::Coordinator current,
in lock_mode mode)
raises(LockNotHeld);
void change_mode(in CosTransactions::Coordinator current,
in lock_mode held_mode,
in lock_mode new_mode)
raises(LockNotHeld);
LockCoordinator get_coordinator(
in CosTransactions::Coordinator which);
};
interface LockSetFactory
{
LockSet create();
LockSet create_related(in LockSet which);
TransactionalLockSet create_transactional();
TransactionalLockSet create_transactional_related(
in TransactionalLockSet which);
};
};
#endif /* ifndef _COS_CONCURRENCY_CONTROL_IDL_ */
|