-- AlpineTransaction.mesa
-- Last edited by
-- MBrown on March 1, 1983 3:30 pm
-- Taft on 29-Jan-82 10:14:13
-- Kolling on March 8, 1983 2:35 pm
DIRECTORY
AlpineEnvironment;
AlpineTransaction: DEFINITIONS =
BEGIN
Conversation: TYPE = AlpineEnvironment.Conversation;
TransID: TYPE = AlpineEnvironment.TransID;
FileStore: TYPE = AlpineEnvironment.FileStore;
Create: PROC [conversation: Conversation, createLocalWorker: BOOL ← TRUE]
RETURNS [transID: TransID];
--! OperationFailed {busy};
-- Call from client to coordinator.
-- If createLocalWorker, then calls CreateWorker[conversation, transID, <self>],
-- and is guaranteed not to raise any of the errors raised by CreateWorker.
CreateWorker: PROC [
conversation: Conversation,
transID: TransID,
coordinator: FileStore];
--! Unknown {coordinator, transID};
-- Call from client to worker.
-- This procedure returns (i.e. does not raise an error) iff trans becomes active
-- (prepared to do work) on the called server. Of course, there is no guarantee
-- that this state will last for any length of time.
AssertAlpineWheel: PROC [
conversation: Conversation,
transID: TransID,
enable: BOOL ← TRUE];
-- ! OperationFailed {regServersUnavailable, notAlpineWheel},
-- ! Unknown {transID}.
-- When called with enable = TRUE, causes all subsequent calls for this
-- (conversation, transID) pair to pass all access control checks without further
-- checking; raises OperationFailed [notAlpineWheel] if the caller identified by
-- conversationis not a member of the AlpineWheels group for this server. When
-- called with enable = FALSE, causes normal access control checking to resume
-- for this (conversation, transID) pair.
RequestedOutcome: TYPE = AlpineEnvironment.CommitOrAbort;
Outcome: TYPE = AlpineEnvironment.Outcome;
Finish: PROC [
conversation: Conversation,
transID: TransID,
requestedOutcome: RequestedOutcome --{abort, commit}--,
continue: BOOL ← FALSE]
RETURNS [outcome: Outcome --{abort, commit, unknown}--,
newTrans: TransID];
--! (none);
-- Call from client to coordinator.
-- newTrans is meaningless unless requestedOutcome = commit, continue = TRUE,
-- and outcome = commit.
Unknown: ERROR [what: AlpineEnvironment.UnknownType];
OperationFailed: ERROR [why: AlpineEnvironment.OperationFailure];
END.
CHANGE LOG
Changed by MBrown on January 21, 1983 10:28 pm
-- Added createLocalWorker parm to Create. Renamed trans -> transID to be consistent
-- with AlpineFile.
Changed by MBrown on March 1, 1983 3:29 pm
-- Moved AssertAlpineWheel here, from AlpineOwner; it now raises
-- OperationFailed [notAlpineWheel] instead of AccessFailed [alpineWheel].