ComputeServer.mesa
The Compute Server interface for the Summoner. This interface is between the Client and the Server, and is thus an RPC interface.
Last Edited by: Bob Hagmann, May 4, 1986 9:42:10 pm PDT
Hal Murray, March 22, 1986 11:09:32 pm PST
Copyright © 1984 by Xerox Corporation. All rights reserved.
DIRECTORY
ComputeServerClient,
Pup USING [Address],
Rope,
RPC;
ComputeServer:
CEDAR
DEFINITIONS =
BEGIN
Request:
TYPE =
RECORD [
service: Rope.ROPE,
serverPupAddress: Pup.Address,
userName: RPC.ShortROPE
];
AskForService:
PROC [service: Rope.
ROPE, version:
RPC.ShortROPE, clientMachineName:
RPC.ShortROPE, userName:
RPC.ShortROPE]
RETURNS [found:
ATOM, serverPupAddress: Pup.Address, errMsg: Rope.
ROPE];
Ask the Server to initialize for doing a service. The server is normally the one given by the Controller. "found" is returned with three values defined at this time:
notFound: service unknown to this server
foundOK: service known and this server expects to be able to do the service. It has initalized, and is expecting a "DoService" call.
foundButTooBusy: this server found the service, but is too busy right now to process the request. Try a different server.
DoService: PROC [serverPupAddress: Pup.Address, clientNetAddressRope: RPC.ShortROPE, commandLine: Rope.ROPE, WorkingDirectory: Rope.ROPE, needRemoteInStream: BOOL, needRemoteOutStream: BOOL] RETURNS [success: ComputeServerClient.RemoteSuccess, msg: Rope.ROPE ← NIL];
AskForAbort: PROC [serverPupAddress: Pup.Address];
GenericClientToServer: PROC [requestCode: ATOM, requestString: Rope.ROPE] RETURNS [resultCode: ATOM, resultString: Rope.ROPE]; -- generic call to allow for expansion without RPC interface recompilation
END.