ComputeServerCallbacks.mesa
Compute Server callback interface for the Summoner. This RPC interface is between the Server (client for this interface) and the Client (who is the server for this interface). The Client and Server reverse rolls here because this is a callback interface.
Last Edited by: Bob Hagmann, May 4, 1985 10:42:35 pm PDT
Copyright © 1984 by Xerox Corporation. All rights reserved.
DIRECTORY
BasicTime,
FS,
IO USING [ STREAM ],
PupDefs,
Rope USING [ ROPE ],
RPC USING [ShortROPE];
ComputeServerCallbacks: CEDAR DEFINITIONS
=
BEGIN
ROPE: TYPE = Rope.ROPE;
STREAM: TYPE = IO.STREAM;
Error: ERROR [error: FS.ErrorDesc];
OpenFile: TYPE = INT;
nullOpenFile: OpenFile = 0;
PageBuffer: TYPE = LONG DESCRIPTOR FOR ARRAY OF WORD;
RESULTPageBuffer: TYPE = PageBuffer;
VALUEPageBuffer: TYPE = PageBuffer;
rSetDefaultWDir: PROC [dir: RPC.ShortROPE];
rGetDefaultWDir: PROC RETURNS [RPC.ShortROPE];
rExpandName: PROC[name: ROPE, wDir: RPC.ShortROPE] RETURNS [fullFName: ROPE, cp: FS.ComponentPositions, dirOmitted: BOOLEAN];
rFileInfo: PROC [name: ROPE, wantedCreatedTime: BasicTime.GMT ← BasicTime.nullGMT, remoteCheck: BOOLEANTRUE, wDir: RPC.ShortROPE] RETURNS [fullFName, attachedTo: ROPE, keep: CARDINAL, bytes: INT, created: BasicTime.GMT];
rStartEnumerateForInfo: PROC [listenerPupAddress: PupDefs.PupAddress, pattern: ROPE, wDir: RPC.ShortROPE] RETURNS [fullFName, attachedTo: ROPE, created: BasicTime.GMT, bytes: INT, keep: CARDINAL, continue: BOOLEAN];
rNextEnumerateForInfo: PROC [listenerPupAddress: PupDefs.PupAddress] RETURNS [fullFName, attachedTo: ROPE, created: BasicTime.GMT, bytes: INT, keep: CARDINAL, continue: BOOLEAN];
rStartEnumerateForNames: PROC [listenerPupAddress: PupDefs.PupAddress, pattern: ROPE, wDir: RPC.ShortROPE] RETURNS [fullFName: ROPE, continue: BOOLEAN];
rNextEnumerateForNames: PROC [listenerPupAddress: PupDefs.PupAddress] RETURNS [fullFName: ROPE, continue: BOOLEAN];
rDoneEnumerate: PROC [listenerPupAddress: PupDefs.PupAddress];
rOpen: PROC [listenerPupAddress: PupDefs.PupAddress, name: ROPE, lock: FS.Lock ← $read, wantedCreatedTime: BasicTime.GMT ← BasicTime.nullGMT, remoteCheck: BOOLEANTRUE, wDir: RPC.ShortROPE, forceRemoteOpen: BOOLFALSE] RETURNS [globalNameToOpen: ROPE, openFile: OpenFile];
rCreate: PROC [listenerPupAddress: PupDefs.PupAddress, name: ROPE, setPages: BOOLEANTRUE, pages: INT ← 0, setKeep: BOOLEANFALSE, keep: CARDINAL ← 1, wDir: RPC.ShortROPE] RETURNS [OpenFile];
rOpenOrCreate: PROC [listenerPupAddress: PupDefs.PupAddress, name: ROPE, keep: CARDINAL ← 1, pages: INT ← 5, wDir: RPC.ShortROPE] RETURNS [OpenFile];
rGetClass: PROC [listenerPupAddress: PupDefs.PupAddress, file: OpenFile] RETURNS [ATOM];
rSameFile: PROC [listenerPupAddress: PupDefs.PupAddress, file1, file2: OpenFile] RETURNS [BOOLEAN];
rGetName: PROC [listenerPupAddress: PupDefs.PupAddress, file: OpenFile] RETURNS [fullFName, attachedTo: ROPE];
rGetInfo: PROC [listenerPupAddress: PupDefs.PupAddress, file: OpenFile] RETURNS [keep: CARDINAL, pages, bytes: INT, created: BasicTime.GMT, lock: FS.Lock];
rSetPageCount: PROC [listenerPupAddress: PupDefs.PupAddress, file: OpenFile, pages: INT];
rSetByteCountAndCreatedTime: PROC [listenerPupAddress: PupDefs.PupAddress, file: OpenFile, bytes: INT ← -1, created: BasicTime.GMT ← BasicTime.nullGMT];
rRead: PROC [listenerPupAddress: PupDefs.PupAddress, file: OpenFile, from, nPages: INT, pageBuffer: RESULTPageBuffer] ;
rWrite: PROC [listenerPupAddress: PupDefs.PupAddress, file: OpenFile, to: INT, nPages: INT, pageBuffer: VALUEPageBuffer];
rClose: PROC [listenerPupAddress: PupDefs.PupAddress, file: OpenFile];
rCopy: PROC [listenerPupAddress: PupDefs.PupAddress, from, to: ROPE, setKeep: BOOLEANFALSE, keep: CARDINAL ← 1, wantedCreatedTime: BasicTime.GMT ← BasicTime.nullGMT, remoteCheck: BOOLEANTRUE, attach: BOOLEANFALSE, wDir: RPC.ShortROPE ← NIL] RETURNS [toFName: ROPE];
rDelete: PROC [listenerPupAddress: PupDefs.PupAddress, name: ROPE, wantedCreatedTime: BasicTime.GMT ← BasicTime.nullGMT, wDir: RPC.ShortROPE ← NIL];
rRename: PROC [listenerPupAddress: PupDefs.PupAddress, from, to: ROPE, setKeep: BOOLEANFALSE, keep: CARDINAL ← 1, wantedCreatedTime: BasicTime.GMT ← BasicTime.nullGMT, wDir: RPC.ShortROPE ← NIL];
rSetKeep: PROC [listenerPupAddress: PupDefs.PupAddress, name: ROPE, keep: CARDINAL ← 1, wDir: RPC.ShortROPE ← NIL];
For UserProfile
rBoolean: PROC [listenerPupAddress: PupDefs.PupAddress, key: Rope.ROPE, default: BOOLEANFALSE] RETURNS [value: BOOLEAN];
rNumber: PROC [listenerPupAddress: PupDefs.PupAddress, key: Rope.ROPE, default: INT ← 0] RETURNS [value: INT];
rToken: PROC [listenerPupAddress: PupDefs.PupAddress, key: Rope.ROPE, default: Rope.ROPENIL] RETURNS [value: Rope.ROPE];
rListOfTokens: PROC [listenerPupAddress: PupDefs.PupAddress, key: Rope.ROPE, default: LIST OF Rope.ROPENIL] RETURNS [value: LIST OF Rope.ROPE];
rLine: PROC [listenerPupAddress: PupDefs.PupAddress, key: Rope.ROPE, default: Rope.ROPENIL] RETURNS [value: Rope.ROPE];
rGetProfileName: PROC [listenerPupAddress: PupDefs.PupAddress] RETURNS [Rope.ROPE];
For UserCredentials
rGetState: PROC [listenerPupAddress: PupDefs.PupAddress] RETURNS [UserCredentials.State];
rGet: PROC [listenerPupAddress: PupDefs.PupAddress] RETURNS [name, password: Rope.ROPE];
END....
Bob Hagmann May 4, 1985 10:42:35 pm PDT
changes to: rCopy, DIRECTORY