<> <> <> <<>> <> <> <> <> DIRECTORY AccessControl USING[AssertAlpineWheel, OperationFailed], AlpineEnvironment USING[Conversation, TransID], OldAlpineTransaction USING[OperationFailed], FilePrivate USING[EstablishTransactionContext, TransactionWork], Rope USING[ROPE], SkiPatrolLog USING[notice, OpFailureInfo]; MiscActionsImpl: PROGRAM IMPORTS AC: AccessControl, AT: OldAlpineTransaction, FP: FilePrivate, SkiPatrolLog EXPORTS OldAlpineTransaction = BEGIN OPEN AE: AlpineEnvironment; <> AssertAlpineWheel: PUBLIC PROCEDURE[conversation: AE.Conversation, transID: AE.TransID, enable: BOOLEAN] = BEGIN -- non system-fatal errors: OperationFailed[notAlpineWheel, regServersUnavailable], Unknown[transID]. Work: FP.TransactionWork --[trans, pUpdateCost]-- = BEGIN IF NOT AC.AssertAlpineWheel[conversation, trans, enable ! AC.OperationFailed => GOTO opFailed] THEN { logProc: PROC [SkiPatrolLog.OpFailureInfo]; IF (logProc _ SkiPatrolLog.notice.operationFailed) # NIL THEN { message: Rope.ROPE _ IF enable THEN "couldn't assert Alpine Wheel status" ELSE "couldn't turn off Alpine Wheel status"; logProc[[ what: notAlpineWheel, transID: transID, where: "AccessControlCacheImpl.AssertAlpineWheel", message: message ]]; }; ERROR AT.OperationFailed[notAlpineWheel]; }; EXITS <<(This error is logged by SkiPatrolLog elsewhere)>> opFailed => ERROR AT.OperationFailed[regServersUnavailable]; END; -- Work FP.EstablishTransactionContext[conversation, transID, Work]; END; END. CHANGE LOG <> <> <> <> <> <> <> <> <> <<>>