<> <> <> <> <> <> <> <> DIRECTORY YggEnvironment, YggInternal, YggCoordinator, YggDummyProcess USING [Seconds]; YggCoordinatorInternal: CEDAR DEFINITIONS LOCKS c USING c: Handle = BEGIN VolumeID: TYPE = YggEnvironment.VolumeID; Handle: TYPE = YggCoordinator.Handle; WorkerHandle: TYPE = YggCoordinator.WorkerHandle; Call: TYPE = YggCoordinator.Call; Results: TYPE = YggCoordinator.Results; SecondsTimeoutForResultsReturned: YggDummyProcess.Seconds = 5; SecondsWaitAfterCommFailure: INT = 15; PassParms: PROC [p: Parms]; <> Parms: TYPE = RECORD [ proc: Call, -- the proc to call c: Handle, -- to pass transID and to monitor return of results w: WorkerHandle, -- the worker to call newTrans: YggEnvironment.TransID, -- used by proc = prepare only requiredOutcome: YggEnvironment.CommitOrAbort -- used by proc = finish only ]; ReturnResults: ENTRY PROC [c: Handle, w: WorkerHandle, r: Results] = TRUSTED INLINE { <> w.first.resultsOfMostRecentCall _ r; w.first.callInProgress _ none; NOTIFY c.resultsReturned; }; NoticeCoordinatorBegin: PROC [trans: YggEnvironment.TransID]; <> <> InitTransIDGenerator: PROC [fileStore: VolumeID]; <> NextTransID: PROC [c: Handle]; <> END. CHANGE LOG <> <> <> <> <<>>