<> <> < TransactionMap.Handle, and public operations on TransactionMap.Handle.>> <> <> <> <> <> <> DIRECTORY AlpineEnvironment, AlpineInternal, BasicTime; TransactionMap: CEDAR DEFINITIONS = BEGIN Conversation: TYPE = AlpineEnvironment.Conversation; TransID: TYPE = AlpineEnvironment.TransID; FileInstanceHandle: TYPE = AlpineInternal.FileInstanceHandle; Handle: TYPE = AlpineInternal.TransHandle; nullHandle: Handle = NIL; <> Register: PROC [self: Handle] RETURNS [alreadyRegistered: BOOL]; <> <> <> GetHandle: PROC [transID: TransID] RETURNS [Handle]; <> Unregister: PROC [self: Handle]; EnumProc: TYPE = PROC [Handle] RETURNS [stop: BOOL]; LockedEnumerate: PROC [proc: EnumProc]; <> <> <> UnlockedEnumerate: PROC [proc: EnumProc]; <> <> <> <> GetTransID: PROC [self: Handle] RETURNS [TransID]; <> StartWork: PROC [self: Handle, difficulty: AlpineInternal.WorkLevel _ normal] RETURNS [canWork: BOOL]; <> <> <> <> <> <> <> StopWork: PROC [self: Handle, estimatedUpdateCost: INT]; <> <> <> <> GetTimeOfLastStartWork: PROC [self: Handle] RETURNS [BasicTime.GMT]; <> <> GetEstimatedUpdateCost: PROC [self: Handle] RETURNS [INT]; <> EnableAlpineWheel: PROC [self: Handle, conversation: Conversation, enable: BOOL]; IsAlpineWheel: PROC [self: Handle, conversation: Conversation] RETURNS [enabled: BOOL]; <> <> <> GetFileInstanceList: PROC [self: Handle] RETURNS [fileInstanceList: FileInstanceHandle]; <> SetFileInstanceList: PROC [self: Handle, fileInstanceList: FileInstanceHandle]; <> GetLockHeader: PROC [self: Handle] RETURNS [lockHeader: AlpineInternal.LockTransHeaderHandle]; <> GetOutcome: PROC [self: Handle] RETURNS [outcome: AlpineInternal.WorkerOutcome]; <> <<>> AssertBackupFinished: PROC [self: Handle]; <> <<>> IsCommitted: PROC [self: Handle] RETURNS [BOOL]; <> <> TransState: TYPE = AlpineInternal.TransState; --{committed, aborted, ready}-- StateDuringRecovery: PROC [self: Handle] RETURNS [TransState]; <> <> AbortUnilaterally: PROC [self: Handle, why: AbortReason]; <> <> AbortReason: TYPE = { clientRequest, deadlock, timeout, blockingNewLockRequest, tooManyTransactions, oldUncommittedUpdates }; AssertUpdatesAreComplete: PROC [self: Handle]; <> <<(if self committed) or have been undone (if self aborted), at the level of the>> <> <> <> END. <> <> <<>>