<> <> <> <<>> <> <> <> <> DIRECTORY OldAlpineEnvironment, OldAlpineTransaction, AlpineTransaction; TransactionActionsImpl: PROGRAM IMPORTS AT: OldAlpineTransaction, AlpineTransaction EXPORTS OldAlpineTransaction = BEGIN OPEN AE: OldAlpineEnvironment; <> Create: PUBLIC PROC [conversation: AE.Conversation, createLocalWorker: BOOL _ TRUE] RETURNS [transID: AE.TransID] ~ { Work: PROC ~ { transID _ AlpineTransaction.Create[conversation, createLocalWorker]; }; DoWork[Work]; }; CreateWorker: PUBLIC PROC [conversation: AE.Conversation, transID: AE.TransID, coordinator: AE.FileStore] ~ { Work: PROC ~ { AlpineTransaction.CreateWorker[conversation, transID, coordinator]; }; DoWork[Work]; }; AssertAlpineWheel: PUBLIC PROCEDURE[conversation: AE.Conversation, transID: AE.TransID, enable: BOOLEAN] = BEGIN Work: PROC ~ { AlpineTransaction.AssertAlpineWheel[conversation, transID, enable]; }; DoWork[Work]; END; Finish: PUBLIC PROCEDURE[conversation: AE.Conversation, transID: AE.TransID, requestedOutcome: AT.RequestedOutcome, continue: BOOL _ FALSE] RETURNS [outcome: AE.Outcome, newTrans: AE.TransID] = BEGIN Work: PROC ~ { [outcome, newTrans] _ AlpineTransaction.Finish[conversation, transID, requestedOutcome, continue]; }; DoWork[Work]; END; DoWork: PROC [work: PROC] RETURNS [] ~ { operationReason: OldAlpineEnvironment.OperationFailure; unknownWhat: OldAlpineEnvironment.UnknownType; { ENABLE { AlpineTransaction.OperationFailed => {operationReason _ why; GOTO operationFailed}; AlpineTransaction.Unknown => {unknownWhat _ what; GOTO unknown}; }; work[]; EXITS operationFailed => ERROR AT.OperationFailed[operationReason]; unknown => ERROR AT.Unknown[unknownWhat]; }; }; END. CHANGE LOG <> <> <> <> <> <> <> <> <> <<>>