RapunzelP1620V0ClientImpl.Mesa
Copyright (C) 1986 by Xerox Corporation. All rights reserved.
Generated by Sirocco on September 18, 1986 4:52:40 pm PDT
DIRECTORY
CrRPC,
RapunzelP1620V0;
RapunzelP1620V0ClientImpl: CEDAR PROGRAM
IMPORTS CrRPC
EXPORTS RapunzelP1620V0 ~ {
OPEN RapunzelP1620V0;
Errors
Fault: PUBLIC ERROR [code: RapunzelP1620V0.FaultCode, address: CARD] ~ CODE;
GetErrorProc
GetError: CrRPC.GetErrorProc ~ {
SELECT errNum FROM
0 => {
code: RapunzelP1620V0.FaultCode;
address: CARD;
code ← VAL[CrRPC.GetCARDINAL[h]];
address ← CrRPC.GetCARD[h];
ERROR Fault[code, address]
};
ENDCASE => {
ERROR CrRPC.Error[h, remoteError, "Unexpected Remote Error"];
};
};
Remote Procedures
PokeSeqShort: PUBLIC PROC [h: CrRPC.Handle, address: CARD, args: RapunzelP1620V0.SeqShort] RETURNS [] ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutCARD[h, address];
CrRPC.PutCARDINAL[h, args.length];
FOR i0: CARDINAL IN [0..args.length) DO
CrRPC.PutCARDINAL[h, args.body[i0]];
ENDLOOP;
};
GetResults: CrRPC.GetResultsProc ~ {
NULL
};
CrRPC.Call[h~h, remotePgm~1620, remotePgmVersion~0, remoteProc~4, putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
PokeLong: PUBLIC PROC [h: CrRPC.Handle, address: CARD, arg: CARD] RETURNS [] ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutCARD[h, address];
CrRPC.PutCARD[h, arg];
};
GetResults: CrRPC.GetResultsProc ~ {
NULL
};
CrRPC.Call[h~h, remotePgm~1620, remotePgmVersion~0, remoteProc~6, putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
DoCmds: PUBLIC PROC [h: CrRPC.Handle, cmds: RapunzelP1620V0.SeqCmd] RETURNS [results: RapunzelP1620V0.SeqResult] ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutCARDINAL[h, cmds.length];
FOR i0: CARDINAL IN [0..cmds.length) DO
CrRPC.PutCARDINAL[h, ORD[cmds.body[i0].type]];
WITH cmds.body[i0] SELECT FROM
it: peekShort RapunzelP1620V0.Cmd => {
CrRPC.PutCARD[h, it.peekShort.address];
};
it: pokeShort RapunzelP1620V0.Cmd => {
CrRPC.PutCARD[h, it.pokeShort.address];
CrRPC.PutCARDINAL[h, it.pokeShort.value];
};
it: peekLong RapunzelP1620V0.Cmd => {
CrRPC.PutCARD[h, it.peekLong.address];
};
it: pokeLong RapunzelP1620V0.Cmd => {
CrRPC.PutCARD[h, it.pokeLong.address];
CrRPC.PutCARD[h, it.pokeLong.value];
};
ENDCASE;
ENDLOOP;
};
GetResults: CrRPC.GetResultsProc ~ {
{
length1: CARDINAL ~ CrRPC.GetCARDINAL[h];
results ← NEW[RapunzelP1620V0.SeqResultObject[length1]];
FOR i0: CARDINAL IN [0..length1) DO
TRUSTED {
tag2: RapunzelP1620V0.OpCode ~ VAL[CrRPC.GetCARDINAL[h]];
SELECT tag2 FROM
peekShort => {
x3: RapunzelP1620V0.PeekShortResult;
x3.value ← CrRPC.GetCARDINAL[h];
results.body[i0] ← [peekShort[x3]];
};
pokeShort => results.body[i0] ← [pokeShort[pokeShort~]]; -- RECORD []
peekLong => {
x4: RapunzelP1620V0.PeekLongResult;
x4.value ← CrRPC.GetCARD[h];
results.body[i0] ← [peekLong[x4]];
};
pokeLong => results.body[i0] ← [pokeLong[pokeLong~]]; -- RECORD []
ENDCASE;
};
ENDLOOP;
};
};
CrRPC.Call[h~h, remotePgm~1620, remotePgmVersion~0, remoteProc~0, putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
PeekSeqLong: PUBLIC PROC [h: CrRPC.Handle, address: CARD, count: CARDINAL] RETURNS [results: RapunzelP1620V0.SeqLong] ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutCARD[h, address];
CrRPC.PutCARDINAL[h, count];
};
GetResults: CrRPC.GetResultsProc ~ {
{
length1: CARDINAL ~ CrRPC.GetCARDINAL[h];
results ← NEW[RapunzelP1620V0.SeqLongObject[length1]];
FOR i0: CARDINAL IN [0..length1) DO
results.body[i0] ← CrRPC.GetCARD[h];
ENDLOOP;
};
};
CrRPC.Call[h~h, remotePgm~1620, remotePgmVersion~0, remoteProc~7, putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
PeekLong: PUBLIC PROC [h: CrRPC.Handle, address: CARD] RETURNS [result: CARD] ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutCARD[h, address];
};
GetResults: CrRPC.GetResultsProc ~ {
result ← CrRPC.GetCARD[h];
};
CrRPC.Call[h~h, remotePgm~1620, remotePgmVersion~0, remoteProc~5, putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
PeekSeqShort: PUBLIC PROC [h: CrRPC.Handle, address: CARD, count: CARDINAL] RETURNS [results: RapunzelP1620V0.SeqShort] ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutCARD[h, address];
CrRPC.PutCARDINAL[h, count];
};
GetResults: CrRPC.GetResultsProc ~ {
{
length1: CARDINAL ~ CrRPC.GetCARDINAL[h];
results ← NEW[RapunzelP1620V0.SeqShortObject[length1]];
FOR i0: CARDINAL IN [0..length1) DO
results.body[i0] ← CrRPC.GetCARDINAL[h];
ENDLOOP;
};
};
CrRPC.Call[h~h, remotePgm~1620, remotePgmVersion~0, remoteProc~3, putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
PeekShort: PUBLIC PROC [h: CrRPC.Handle, address: CARD] RETURNS [result: CARDINAL] ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutCARD[h, address];
};
GetResults: CrRPC.GetResultsProc ~ {
result ← CrRPC.GetCARDINAL[h];
};
CrRPC.Call[h~h, remotePgm~1620, remotePgmVersion~0, remoteProc~1, putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
PokeSeqLong: PUBLIC PROC [h: CrRPC.Handle, address: CARD, args: RapunzelP1620V0.SeqLong] RETURNS [] ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutCARD[h, address];
CrRPC.PutCARDINAL[h, args.length];
FOR i0: CARDINAL IN [0..args.length) DO
CrRPC.PutCARD[h, args.body[i0]];
ENDLOOP;
};
GetResults: CrRPC.GetResultsProc ~ {
NULL
};
CrRPC.Call[h~h, remotePgm~1620, remotePgmVersion~0, remoteProc~8, putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
PokeShort: PUBLIC PROC [h: CrRPC.Handle, address: CARD, arg: CARDINAL] RETURNS [] ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutCARD[h, address];
CrRPC.PutCARDINAL[h, arg];
};
GetResults: CrRPC.GetResultsProc ~ {
NULL
};
CrRPC.Call[h~h, remotePgm~1620, remotePgmVersion~0, remoteProc~2, putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
}...