-- Route66QueryP2233V1ServerImpl.Mesa
-- Russ Atkinson (RRA) June 15, 1992 12:29 pm PDT
-- Copyright (C) 1986 by Xerox Corporation. All rights reserved.
-- Generated by BJackson.pa at July 15, 1988 4:26:26 pm PDT
-- using Sirocco [2.0] of January 31, 1987 1:52:42 am PST
DIRECTORY
CrRPC,
AuthenticationP14V2,
BulkDataP0V1,
Route66QueryP2233V1;
Route66QueryP2233V1ServerImpl: CEDAR PROGRAM
IMPORTS CrRPC, Route66QueryP2233V1 ~ {
OPEN Route66QueryP2233V1;
LogoffCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
session: Session;
{
session.token ← CrRPC.GetCard32[s];
session.verifier ← UProc11[h, s];
};
[] ← Logoff[h, session];
beginReturn[h];
};
LogonCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
service: ROPE;
credentials: AuthenticationP14V2.Credentials;
verifier: AuthenticationP14V2.SeqWords;
newSession: Session;
{
service ← CrRPC.GetRope[s];
};
{
credentials.type ← VAL[CrRPC.GetCard16[s]];
credentials.value ← UProc11[h, s];
};
{
verifier ← UProc11[h, s];
};
[newSession] ← Logon[h, service, credentials, verifier];
beginReturn[h];
{
CrRPC.PutCard32[s, newSession.token];
MProc12[h, s, newSession.verifier];
};
};
RetrieveCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
oldSession: Session;
file: FileLocation;
content: CrRPC.BulkDataSink;
newSession: Session;
{
oldSession.token ← CrRPC.GetCard32[s];
oldSession.verifier ← UProc11[h, s];
};
{
file.fileServer ← CrRPC.GetRope[s];
file.fileName ← CrRPC.GetRope[s];
file.fileFormat ← CrRPC.GetRope[s];
file.startByte ← CrRPC.GetInt32[s];
file.numBytes ← CrRPC.GetInt32[s];
file.timeLimit ← CrRPC.GetCard32[s];
};
TRUSTED {
content ← CrRPC.GetBulkDataSink[h, s];
};
[newSession] ← Retrieve[h, oldSession, file, content];
beginReturn[h];
{
CrRPC.PutCard32[s, newSession.token];
MProc12[h, s, newSession.verifier];
};
};
ReleaseOpHandleCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
service: ROPE;
oldOp: OpHandle;
{
service ← CrRPC.GetRope[s];
};
{
oldOp.operation ← CrRPC.GetCard32[s];
oldOp.sequence ← CrRPC.GetCard32[s];
};
[] ← ReleaseOpHandle[h, service, oldOp];
beginReturn[h];
};
LocateMoreCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
service: ROPE;
oldOp: OpHandle;
bufferSize: INT32;
resultType: ResultType;
progress: ProgressReport;
matches: INT32;
newOp: OpHandle;
idLocs: IdLocList;
{
service ← CrRPC.GetRope[s];
};
{
oldOp.operation ← CrRPC.GetCard32[s];
oldOp.sequence ← CrRPC.GetCard32[s];
};
{
bufferSize ← CrRPC.GetInt32[s];
};
{
resultType ← VAL[CrRPC.GetCard16[s]];
};
[progress, matches, newOp, idLocs] ← LocateMore[h, service, oldOp, bufferSize, resultType];
beginReturn[h];
{
CrRPC.PutInt32[s, progress.workDone];
CrRPC.PutInt32[s, progress.workPending];
CrRPC.PutInt32[s, progress.timePending];
CrRPC.PutInt32[s, progress.timeWait];
};
{
CrRPC.PutInt32[s, matches];
};
{
CrRPC.PutCard32[s, newOp.operation];
CrRPC.PutCard32[s, newOp.sequence];
};
{
MProc13[h, s, idLocs];
};
};
LocateCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
service: ROPE;
userName: ROPE;
locateSpec: StringList;
docId: ROPE;
fileLocFilter: FileLocFilter;
bufferSize: INT32;
resultType: ResultType;
progress: ProgressReport;
matches: INT32;
newOp: OpHandle;
idLocs: IdLocList;
{
service ← CrRPC.GetRope[s];
};
{
userName ← CrRPC.GetRope[s];
};
{
locateSpec ← UProc14[h, s];
};
{
docId ← CrRPC.GetRope[s];
};
{
fileLocFilter.servers ← UProc14[h, s];
fileLocFilter.formats ← UProc14[h, s];
fileLocFilter.timeLimit ← CrRPC.GetCard32[s];
};
{
bufferSize ← CrRPC.GetInt32[s];
};
{
resultType ← VAL[CrRPC.GetCard16[s]];
};
[progress, matches, newOp, idLocs] ← Locate[h, service, userName, locateSpec, docId, fileLocFilter, bufferSize, resultType];
beginReturn[h];
{
CrRPC.PutInt32[s, progress.workDone];
CrRPC.PutInt32[s, progress.workPending];
CrRPC.PutInt32[s, progress.timePending];
CrRPC.PutInt32[s, progress.timeWait];
};
{
CrRPC.PutInt32[s, matches];
};
{
CrRPC.PutCard32[s, newOp.operation];
CrRPC.PutCard32[s, newOp.sequence];
};
{
MProc13[h, s, idLocs];
};
};
NullCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
service: ROPE;
{
service ← CrRPC.GetRope[s];
};
[] ← Null[h, service];
beginReturn[h];
};
StoreCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
oldSession: Session;
file: FileLocation;
content: CrRPC.BulkDataSource;
newSession: Session;
{
oldSession.token ← CrRPC.GetCard32[s];
oldSession.verifier ← UProc11[h, s];
};
{
file.fileServer ← CrRPC.GetRope[s];
file.fileName ← CrRPC.GetRope[s];
file.fileFormat ← CrRPC.GetRope[s];
file.startByte ← CrRPC.GetInt32[s];
file.numBytes ← CrRPC.GetInt32[s];
file.timeLimit ← CrRPC.GetCard32[s];
};
TRUSTED {
content ← CrRPC.GetBulkDataSource[h, s];
};
[newSession] ← Store[h, oldSession, file, content];
beginReturn[h];
{
CrRPC.PutCard32[s, newSession.token];
MProc12[h, s, newSession.verifier];
};
};
Server: CrRPC.ServerProc ~ {
-- [h: Handle, s: STREAM, pgm: CARD32, pgmVersion: CARD16, proc: CARD16, beginReturn: BeginReturnProc, beginError: BeginErrorProc, beginReject: BeginRejectProc]
ENABLE {
Route66QueryP2233V1.Error => { -- (1 )
beginError[h, 1 ];
CrRPC.PutRope[s, message];
GOTO Finished;
};
};
IF (pgmVersion # 1) THEN {
beginReject[h, CrRPC.noSuchVersion];
CrRPC.PutCard16[s, 1]; --low
CrRPC.PutCard16[s, 1]; --high
RETURN
};
SELECT proc FROM
11 => LogoffCaller[h, s, beginReturn];
10 => LogonCaller[h, s, beginReturn];
12 => RetrieveCaller[h, s, beginReturn];
3 => ReleaseOpHandleCaller[h, s, beginReturn];
2 => LocateMoreCaller[h, s, beginReturn];
1 => LocateCaller[h, s, beginReturn];
0 => NullCaller[h, s, beginReturn];
13 => StoreCaller[h, s, beginReturn];
ENDCASE => {
beginReject[h, CrRPC.noSuchProcedure];
};
EXITS
Finished => { NULL };
};
-- Unmarshal / Marshal Procs --
MProc13: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: IdLocList] ~ {
CrRPC.PutCard16[s, val.length];
FOR i15: CARDINAL IN [0..val.length) DO
CrRPC.PutRope[s, val.body[i15].docId];
CrRPC.PutRope[s, val.body[i15].fileLocation.fileServer];
CrRPC.PutRope[s, val.body[i15].fileLocation.fileName];
CrRPC.PutRope[s, val.body[i15].fileLocation.fileFormat];
CrRPC.PutInt32[s, val.body[i15].fileLocation.startByte];
CrRPC.PutInt32[s, val.body[i15].fileLocation.numBytes];
CrRPC.PutCard32[s, val.body[i15].fileLocation.timeLimit];
ENDLOOP;
};
MProc12: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: AuthenticationP14V2.SeqWords] ~ {
CrRPC.PutCard16[s, val.length];
FOR i16: CARDINAL IN [0..val.length) DO
CrRPC.PutCard16[s, val.body[i16]];
ENDLOOP;
};
UProc14: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: StringList] ~ {
{
length18: CARDINAL ~ CrRPC.GetCard16[s];
res ← NEW[StringListObject[length18]];
FOR i17: CARDINAL IN [0..length18) DO
res.body[i17] ← CrRPC.GetRope[s];
ENDLOOP;
};
};
UProc11: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: AuthenticationP14V2.SeqWords] ~ {
{
length20: CARDINAL ~ CrRPC.GetCard16[s];
res ← NEW[AuthenticationP14V2.SeqWordsObject[length20]];
FOR i19: CARDINAL IN [0..length20) DO
res.body[i19] ← CrRPC.GetCard16[s];
ENDLOOP;
};
};
CrRPC.RegisterServerProcs[pgm~2233, pgmLoVersion: 1, pgmHiVersion: 1, serverProc~Server];
CrRPC.EnsureListener[class~$SPP];
}...