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, April 18, 1986 12:25:18 pm PST
Hal Murray, March 22, 1986 9:15:19 pm PST
Copyright © 1984 by Xerox Corporation. All rights reserved.
DIRECTORY
BasicTime,
FS,
IO USING [ STREAM ],
Pup USING [Address],
Rope USING [ ROPE ],
RPC USING [ShortROPE],
UserCredentials USING [State];
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;
rGeneric: PROC [requestCode: ATOM, requestString: ROPE] RETURNS [resultCode: ATOM, resultString: ROPE]; -- generic call to allow for expansion without RPC interface recompilation
For FS
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: Pup.Address, pattern: ROPE, wDir: RPC.ShortROPE] RETURNS [fullFName, attachedTo: ROPE, created: BasicTime.GMT, bytes: INT, keep: CARDINAL, continue: BOOLEAN];
rNextEnumerateForInfo: PROC [listenerPupAddress: Pup.Address] RETURNS [fullFName, attachedTo: ROPE, created: BasicTime.GMT, bytes: INT, keep: CARDINAL, continue: BOOLEAN];
rStartEnumerateForNames: PROC [listenerPupAddress: Pup.Address, pattern: ROPE, wDir: RPC.ShortROPE] RETURNS [fullFName: ROPE, continue: BOOLEAN];
rNextEnumerateForNames: PROC [listenerPupAddress: Pup.Address] RETURNS [fullFName: ROPE, continue: BOOLEAN];
rDoneEnumerate: PROC [listenerPupAddress: Pup.Address];
rOpen: PROC [listenerPupAddress: Pup.Address, 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: Pup.Address, name: ROPE, setPages: BOOLEANTRUE, pages: INT ← 0, setKeep: BOOLEANFALSE, keep: CARDINAL ← 1, wDir: RPC.ShortROPE] RETURNS [OpenFile];
rOpenOrCreate: PROC [listenerPupAddress: Pup.Address, name: ROPE, keep: CARDINAL ← 1, pages: INT ← 5, wDir: RPC.ShortROPE] RETURNS [OpenFile];
rGetClass: PROC [listenerPupAddress: Pup.Address, file: OpenFile] RETURNS [ATOM];
rSameFile: PROC [listenerPupAddress: Pup.Address, file1, file2: OpenFile] RETURNS [BOOLEAN];
rGetName: PROC [listenerPupAddress: Pup.Address, file: OpenFile] RETURNS [fullFName, attachedTo: ROPE];
rGetInfo: PROC [listenerPupAddress: Pup.Address, file: OpenFile] RETURNS [keep: CARDINAL, pages, bytes: INT, created: BasicTime.GMT, lock: FS.Lock];
rSetPageCount: PROC [listenerPupAddress: Pup.Address, file: OpenFile, pages: INT];
rSetByteCountAndCreatedTime: PROC [listenerPupAddress: Pup.Address, file: OpenFile, bytes: INT ← -1, created: BasicTime.GMT ← BasicTime.nullGMT];
rRead: PROC [listenerPupAddress: Pup.Address, file: OpenFile, from, nPages: INT, pageBuffer: RESULTPageBuffer] ;
rWrite: PROC [listenerPupAddress: Pup.Address, file: OpenFile, to: INT, nPages: INT, pageBuffer: VALUEPageBuffer];
rClose: PROC [listenerPupAddress: Pup.Address, file: OpenFile];
rCopy: PROC [listenerPupAddress: Pup.Address, 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: Pup.Address, name: ROPE, wantedCreatedTime: BasicTime.GMT ← BasicTime.nullGMT, wDir: RPC.ShortROPE ← NIL];
rRename: PROC [listenerPupAddress: Pup.Address, from, to: ROPE, setKeep: BOOLEANFALSE, keep: CARDINAL ← 1, wantedCreatedTime: BasicTime.GMT ← BasicTime.nullGMT, wDir: RPC.ShortROPE ← NIL];
rSetKeep: PROC [listenerPupAddress: Pup.Address, name: ROPE, keep: CARDINAL ← 1, wDir: RPC.ShortROPE ← NIL];
For UserProfile
rBoolean: PROC [listenerPupAddress: Pup.Address, key: Rope.ROPE, default: BOOLEANFALSE] RETURNS [value: BOOLEAN];
rNumber: PROC [listenerPupAddress: Pup.Address, key: Rope.ROPE, default: INT ← 0] RETURNS [value: INT];
rToken: PROC [listenerPupAddress: Pup.Address, key: Rope.ROPE, default: Rope.ROPENIL] RETURNS [value: Rope.ROPE];
rListOfTokens: PROC [listenerPupAddress: Pup.Address, key: Rope.ROPE, default: LIST OF Rope.ROPENIL] RETURNS [value: LIST OF Rope.ROPE];
rLine: PROC [listenerPupAddress: Pup.Address, key: Rope.ROPE, default: Rope.ROPENIL] RETURNS [value: Rope.ROPE];
rGetProfileName: PROC [listenerPupAddress: Pup.Address] RETURNS [Rope.ROPE];
For UserCredentials
rGetState: PROC [listenerPupAddress: Pup.Address] RETURNS [UserCredentials.State];
rGet: PROC [listenerPupAddress: Pup.Address] RETURNS [name, password: Rope.ROPE];
For Debugging
This part of the interface is used to start up a PupStream between the two machines, and to monitor operations.
OpenDebugStream: PROC [listenerPupAddress: Pup.Address, newListenerPupAddress: Pup.Address, name: Rope.ROPE, serverMachine: Rope.ROPE] RETURNS [byteStreamOK: BOOLTRUE] ;
OpenSourceViewer: PROC [listenerPupAddress: Pup.Address, name: Rope.ROPE, index: INT ] ;
END....
Bob Hagmann May 4, 1985 10:42:35 pm PDT
changes to: rCopy, DIRECTORY
Bob Hagmann April 18, 1986 9:52:19 am PST
added rGeneric
Bob Hagmann April 18, 1986 12:25:18 pm PST
added UserProfile and UserCredentials stuff from ComputeServerUser; added ComputeServerDebugger