<> <> < YgTransactionMap.Handle, and public operations on YgTransactionMap.Handle.>> <> <> <> <> <> <> DIRECTORY BasicTime, YggEnvironment, YggInternal; YggTransactionMap: CEDAR DEFINITIONS = BEGIN Conversation: TYPE = YggEnvironment.Conversation; TransID: TYPE = YggEnvironment.TransID; <> TransHandle: TYPE = YggInternal.TransHandle; nullTransHandle: TransHandle = NIL; <> Register: PROC [self: TransHandle] RETURNS [alreadyRegistered: BOOL]; <> <> <> GetTransHandle: PROC [transID: TransID] RETURNS [TransHandle]; <> Unregister: PROC [self: TransHandle]; EnumProc: TYPE = PROC [TransHandle] RETURNS [stop: BOOL]; LockedEnumerate: PROC [proc: EnumProc]; <> <> <> UnlockedEnumerate: PROC [proc: EnumProc]; <> <> <> <> GetTransID: PROC [self: TransHandle] RETURNS [TransID]; <> StartWork: PROC [self: TransHandle, difficulty: YggInternal.WorkLevel _ normal] RETURNS [canWork: BOOL]; <> <> <> <> <> <> <> StopWork: PROC [self: TransHandle]; <> <<>> GetTimeOfLastStartWork: PROC [self: TransHandle] RETURNS [BasicTime.GMT]; <> <> GetEstimatedUpdateCost: PROC [self: TransHandle] RETURNS [INT]; <> EnableYggdrasilWheel: PROC [self: TransHandle, conversation: Conversation, enable: BOOL]; IsYggdrasilWheel: PROC [self: TransHandle, conversation: Conversation] RETURNS [enabled: BOOL]; <> <> <> GetOpenDocList: PROC [self: TransHandle] RETURNS [documentList: YggInternal.OpenDoc]; <> SetOpenDocList: PROC [self: TransHandle, documentList: YggInternal.OpenDoc]; <> GetLockHeader: PROC [self: TransHandle] RETURNS [lockHeader: YggInternal.LockTransHeader]; <> IsCommitted: PROC [self: TransHandle] RETURNS [BOOL]; <> <> TransState: TYPE = YggInternal.TransState; --{committed, aborted, ready}-- StateDuringRecovery: PROC [self: TransHandle] RETURNS [TransState]; <> <> AbortUnilaterally: PROC [self: TransHandle, why: AbortReason]; <> <> AbortReason: TYPE = { clientRequest, deadlock, timeout, blockingNewLockRequest, tooManyTransactions, oldUncommittedUpdates }; AssertUpdatesAreComplete: PROC [self: TransHandle]; <> <<(if self committed) or have been undone (if self aborted), at the level of the>> <> <> <> END. <> <> <<>>