DIRECTORY OldAlpineEnvironment, AlpineOwner, OldAlpineOwner; OldOwnerActionsImpl: PROGRAM IMPORTS AlpineOwner, AO: OldAlpineOwner EXPORTS OldAlpineOwner = BEGIN OPEN AE: OldAlpineEnvironment; Create: PUBLIC PROCEDURE[conversation: AE.Conversation, transID: AE.TransID, volumeGroupID: AE.VolumeGroupID, owner: AE.OwnerName, properties: LIST OF AE.OwnerPropertyValuePair, enforceTotalQuota: BOOLEAN] RETURNS[spaceLeftOnVolumeGroup: AE.PageCount] = BEGIN Work: PROC ~ { [spaceLeftOnVolumeGroup] _ AlpineOwner.Create [conversation, transID, volumeGroupID, owner, properties, enforceTotalQuota]; }; DoWork[Work]; END; Destroy: PUBLIC PROCEDURE[conversation: AE.Conversation, transID: AE.TransID, volumeGroupID: AE.VolumeGroupID, owner: AE.OwnerName] = BEGIN -- non system-fatal errors: AccessFailed[alpineWheel], LockFailed[timeout], OperationFailed[ownerRecordInUse, spaceInUseByThisOwner], StaticallyInvalid, Unknown[owner, transID, volumeGroupID]. Work: PROC ~ { AlpineOwner.Destroy [conversation, transID, volumeGroupID, owner]; }; DoWork[Work]; END; ReadProperties: PUBLIC PROCEDURE[conversation: AE.Conversation, transID: AE.TransID, volumeGroupID: AE.VolumeGroupID, owner: AE.OwnerName, desiredProperties: AE.OwnerPropertySet] RETURNS [properties: LIST OF AE.OwnerPropertyValuePair] = BEGIN Work: PROC ~ { properties _ AlpineOwner.ReadProperties [conversation, transID, volumeGroupID, owner, desiredProperties]; }; DoWork[Work]; END; WriteProperties: PUBLIC PROCEDURE[conversation: AE.Conversation, transID: AE.TransID, volumeGroupID: AE.VolumeGroupID, owner: AE.OwnerName, properties: LIST OF AE.OwnerPropertyValuePair, enforceTotalQuota: BOOLEAN] = BEGIN Work: PROC ~ { AlpineOwner.WriteProperties [conversation, transID, volumeGroupID, owner, properties, enforceTotalQuota]; }; DoWork[Work]; END; ReadDBProperties: PUBLIC PROCEDURE[conversation: AE.Conversation, transID: AE.TransID, volumeGroupID: AE.VolumeGroupID] RETURNS [nOwners, nEntriesUsed, nEntries: NAT, totalQuota, totalSpaceInUse, volumeGroupSize: AE.PageCount] = BEGIN Work: PROC ~ { [nOwners, nEntriesUsed, nEntries, totalQuota, totalSpaceInUse, volumeGroupSize] _ AlpineOwner.ReadDBProperties [conversation, transID, volumeGroupID]; }; DoWork[Work]; END; ReadNext: PUBLIC PROCEDURE[conversation: AE.Conversation, transID: AE.TransID, volumeGroupID: AE.VolumeGroupID, previousOwner: AE.OwnerName, desiredProperties: AE.OwnerPropertySet] RETURNS [owner: AE.OwnerName, properties: LIST OF AE.OwnerPropertyValuePair] = BEGIN Work: PROC ~ { [owner, properties] _ AlpineOwner.ReadNext [conversation, transID, volumeGroupID, previousOwner, desiredProperties]; }; DoWork[Work]; END; ReorganizeDB: PUBLIC PROCEDURE [conversation: AE.Conversation, transID: AE.TransID, volumeGroupID: AE.VolumeGroupID, nEntries: NAT] = BEGIN Work: PROC ~ { AlpineOwner.ReorganizeDB [conversation, transID, volumeGroupID, nEntries]; }; DoWork[Work]; END; Unlock: PUBLIC PROCEDURE[conversation: AE.Conversation, transID: AE.TransID, volumeGroupID: AE.VolumeGroupID] = BEGIN Work: PROC ~ { AlpineOwner.Unlock [conversation, transID, volumeGroupID]; }; DoWork[Work]; END; DoWork: PROC [work: PROC] RETURNS [] ~ { accessReason: OldAlpineEnvironment.NeededAccess; lockReason: OldAlpineEnvironment.LockFailure; operationReason: OldAlpineEnvironment.OperationFailure; unknownWhat: OldAlpineEnvironment.UnknownType; { ENABLE { AlpineOwner.AccessFailed => {accessReason _ missingAccess; GOTO accessFailed}; AlpineOwner.LockFailed => { lockReason _ SELECT why FROM conflict, cantConvert => conflict, timeout => timeout, ENDCASE => ERROR; GOTO lockFailed}; AlpineOwner.OperationFailed => {operationReason _ why; GOTO operationFailed}; AlpineOwner.StaticallyInvalid => {GOTO staticallyInvalid}; AlpineOwner.Unknown => {unknownWhat _ what; GOTO unknown}; }; work[]; EXITS accessFailed => ERROR AO.AccessFailed[accessReason]; lockFailed => ERROR AO.LockFailed[lockReason]; operationFailed => ERROR AO.OperationFailed[operationReason]; staticallyInvalid => ERROR AO.StaticallyInvalid; unknown => ERROR AO.Unknown[unknownWhat]; }; }; END. CHANGE LOG NOldOwnerActionsImpl.mesa Copyright c 1984 Xerox Corporation Last edited by: Taft on April 10, 1983 5:22 pm Kolling on March 10, 1983 6:23 pm Last Edited by: Kupfer, July 16, 1984 1:33:20 pm PDT Carl Hauser, January 8, 1987 2:33:56 pm PST Edited on July 16, 1984 1:33:18 pm PDT, by Kupfer Add some comments about SkiPatrolLog. Κ·– "cedar" style˜Jšœ™J™"šœ™Jšœ™Jšœ!™!—™4Icode™+—IunitšΟk ˜ ˜Kšœ˜K˜ Kšœ˜—šœ˜Kšœœ˜'Kšœ˜Kšœœœ˜$šΟnœœ œœœœœœœœ,œœœ ˜ύKš˜šžœœ˜Kšœ{˜{K˜—K˜ Kšœ˜—šžœœ œœœ œœœ ˜…KšœΟcΐ˜Ζšžœœ˜KšœB˜BK˜—K˜ Kšœ˜—šžœœ œœœœœœœœœœ˜μKšœ˜šžœœ˜Kšœi˜iK˜—K˜ Kšœ˜—šžœœ œœœœœœœœ,œ˜ΨKšœ˜šžœœ˜Kšœi˜iK˜—K˜ Kšœ˜—šžœœ œœœœœ#œ0œ ˜δKšœ˜šžœœ˜Kšœ–˜–K˜—K˜ Kšœ˜—šžœœ œœœœœœœ œœœœ˜ƒKšœ˜šžœœ˜Kšœt˜tK˜—K˜ Kšœ˜—šž œœ œœœœœ˜…Kšœ˜šžœœ˜KšœJ˜JK˜—K˜ Kšœ˜—š žœœ œœœœ˜oKšœ˜šžœœ˜Kšœ:˜:K˜—K˜ Kšœ˜—K˜šžœœœœ˜(Kšœ0˜0Kšœ-˜-Kšœ7˜7Kšœ.˜.˜šœ˜Kšœ;œ˜Nšœ˜šœ œ˜Kšœ"˜"Kšœ˜Kšœœ˜—Kšœ ˜—Kšœ7œ˜MKšœ"œ˜:Kšœ,œ ˜:Kšœ˜—Kšœ˜š˜Kšœœœ˜4Kšœœœ˜.Kšœœœ"˜=Kšœœœ˜0Kšœ œœ˜)—K˜—K˜—Lšœ˜Lšœ˜ ™1J™%—L™——…—φϋ