FilingP10V5ServerImpl.Mesa
Copyright (C) 1986 by Xerox Corporation. All rights reserved.
Generated by Diebert.pa at June 6, 1988 7:40:04 am PDT
using Sirocco [2.0] of January 31, 1987 1:52:42 am PST
DIRECTORY
CrRPC,
TimeP15V2,
FilingAttributesP10V5,
CHNameP2V0,
AuthenticationP14V2,
BulkDataP0V1,
FilingP10V5;
FilingP10V5ServerImpl: CEDAR PROGRAM
IMPORTS CrRPC, FilingP10V5 ~ {
OPEN FilingP10V5;
ReplaceBytesCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
file: Handle;
range: ByteRange;
source: CrRPC.BulkDataSource;
session: Session;
{
FOR i94: CARDINAL IN [0..2) DO
file[i94] ← CrRPC.GetCard16[s];
ENDLOOP;
};
{
range.firstByte ← CrRPC.GetCard32[s];
range.count ← CrRPC.GetCard32[s];
};
TRUSTED {
source ← CrRPC.GetBulkDataSource[h, s];
};
{
FOR i95: CARDINAL IN [0..2) DO
session.token[i95] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[] ← ReplaceBytes[h, file, range, source, session];
beginReturn[h];
};
LogoffCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
session: Session;
{
FOR i97: CARDINAL IN [0..2) DO
session.token[i97] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[] ← Logoff[h, session];
beginReturn[h];
};
UnifyAccessListsCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
directory: Handle;
session: Session;
{
FOR i98: CARDINAL IN [0..2) DO
directory[i98] ← CrRPC.GetCard16[s];
ENDLOOP;
};
{
FOR i99: CARDINAL IN [0..2) DO
session.token[i99] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[] ← UnifyAccessLists[h, directory, session];
beginReturn[h];
};
ChangeAttributesCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
file: Handle;
attributes: FilingAttributesP10V5.AttributeSequence;
session: Session;
{
FOR i100: CARDINAL IN [0..2) DO
file[i100] ← CrRPC.GetCard16[s];
ENDLOOP;
};
{
attributes ← UProc101[h, s];
};
{
FOR i102: CARDINAL IN [0..2) DO
session.token[i102] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[] ← ChangeAttributes[h, file, attributes, session];
beginReturn[h];
};
CopyCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
file: Handle;
destinationDirectory: Handle;
attributes: FilingAttributesP10V5.AttributeSequence;
controls: ControlSequence;
session: Session;
newFile: Handle;
{
FOR i103: CARDINAL IN [0..2) DO
file[i103] ← CrRPC.GetCard16[s];
ENDLOOP;
};
{
FOR i104: CARDINAL IN [0..2) DO
destinationDirectory[i104] ← CrRPC.GetCard16[s];
ENDLOOP;
};
{
attributes ← UProc101[h, s];
};
{
controls ← UProc105[h, s];
};
{
FOR i106: CARDINAL IN [0..2) DO
session.token[i106] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[newFile] ← Copy[h, file, destinationDirectory, attributes, controls, session];
beginReturn[h];
{
FOR i107: CARDINAL IN [0..2) DO
CrRPC.PutCard16[s, newFile[i107]];
ENDLOOP;
};
};
ChangeControlsCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
file: Handle;
controls: ControlSequence;
session: Session;
{
FOR i108: CARDINAL IN [0..2) DO
file[i108] ← CrRPC.GetCard16[s];
ENDLOOP;
};
{
controls ← UProc105[h, s];
};
{
FOR i109: CARDINAL IN [0..2) DO
session.token[i109] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[] ← ChangeControls[h, file, controls, session];
beginReturn[h];
};
GetControlsCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
file: Handle;
types: ControlTypeSequence;
session: Session;
controls: ControlSequence;
{
FOR i110: CARDINAL IN [0..2) DO
file[i110] ← CrRPC.GetCard16[s];
ENDLOOP;
};
{
types ← UProc111[h, s];
};
{
FOR i112: CARDINAL IN [0..2) DO
session.token[i112] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[controls] ← GetControls[h, file, types, session];
beginReturn[h];
{
MProc113[h, s, controls];
};
};
ReplaceCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
file: Handle;
attributes: FilingAttributesP10V5.AttributeSequence;
content: CrRPC.BulkDataSource;
session: Session;
{
FOR i114: CARDINAL IN [0..2) DO
file[i114] ← CrRPC.GetCard16[s];
ENDLOOP;
};
{
attributes ← UProc101[h, s];
};
TRUSTED {
content ← CrRPC.GetBulkDataSource[h, s];
};
{
FOR i115: CARDINAL IN [0..2) DO
session.token[i115] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[] ← Replace[h, file, attributes, content, session];
beginReturn[h];
};
MoveCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
file: Handle;
destinationDirectory: Handle;
attributes: FilingAttributesP10V5.AttributeSequence;
session: Session;
{
FOR i116: CARDINAL IN [0..2) DO
file[i116] ← CrRPC.GetCard16[s];
ENDLOOP;
};
{
FOR i117: CARDINAL IN [0..2) DO
destinationDirectory[i117] ← CrRPC.GetCard16[s];
ENDLOOP;
};
{
attributes ← UProc101[h, s];
};
{
FOR i118: CARDINAL IN [0..2) DO
session.token[i118] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[] ← Move[h, file, destinationDirectory, attributes, session];
beginReturn[h];
};
ContinueCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
session: Session;
continuance: CARD16;
{
FOR i119: CARDINAL IN [0..2) DO
session.token[i119] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[continuance] ← Continue[h, session];
beginReturn[h];
{
CrRPC.PutCard16[s, continuance];
};
};
GetAttributesCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
file: Handle;
types: AttributeTypeSequence;
session: Session;
attributes: FilingAttributesP10V5.AttributeSequence;
{
FOR i120: CARDINAL IN [0..2) DO
file[i120] ← CrRPC.GetCard16[s];
ENDLOOP;
};
{
types ← UProc121[h, s];
};
{
FOR i122: CARDINAL IN [0..2) DO
session.token[i122] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[attributes] ← GetAttributes[h, file, types, session];
beginReturn[h];
{
MProc123[h, s, attributes];
};
};
ListCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
directory: Handle;
types: AttributeTypeSequence;
scope: ScopeSequence;
listing: CrRPC.BulkDataSink;
session: Session;
{
FOR i124: CARDINAL IN [0..2) DO
directory[i124] ← CrRPC.GetCard16[s];
ENDLOOP;
};
{
types ← UProc121[h, s];
};
{
scope ← UProc125[h, s];
};
TRUSTED {
listing ← CrRPC.GetBulkDataSink[h, s];
};
{
FOR i126: CARDINAL IN [0..2) DO
session.token[i126] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[] ← List[h, directory, types, scope, listing, session];
beginReturn[h];
};
DeserializeCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
directory: Handle;
attributes: FilingAttributesP10V5.AttributeSequence;
controls: ControlSequence;
serializedFile: CrRPC.BulkDataSource;
session: Session;
file: Handle;
{
FOR i127: CARDINAL IN [0..2) DO
directory[i127] ← CrRPC.GetCard16[s];
ENDLOOP;
};
{
attributes ← UProc101[h, s];
};
{
controls ← UProc105[h, s];
};
TRUSTED {
serializedFile ← CrRPC.GetBulkDataSource[h, s];
};
{
FOR i128: CARDINAL IN [0..2) DO
session.token[i128] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[file] ← Deserialize[h, directory, attributes, controls, serializedFile, session];
beginReturn[h];
{
FOR i129: CARDINAL IN [0..2) DO
CrRPC.PutCard16[s, file[i129]];
ENDLOOP;
};
};
StoreCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
directory: Handle;
attributes: FilingAttributesP10V5.AttributeSequence;
controls: ControlSequence;
content: CrRPC.BulkDataSource;
session: Session;
file: Handle;
{
FOR i130: CARDINAL IN [0..2) DO
directory[i130] ← CrRPC.GetCard16[s];
ENDLOOP;
};
{
attributes ← UProc101[h, s];
};
{
controls ← UProc105[h, s];
};
TRUSTED {
content ← CrRPC.GetBulkDataSource[h, s];
};
{
FOR i131: CARDINAL IN [0..2) DO
session.token[i131] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[file] ← Store[h, directory, attributes, controls, content, session];
beginReturn[h];
{
FOR i132: CARDINAL IN [0..2) DO
CrRPC.PutCard16[s, file[i132]];
ENDLOOP;
};
};
RetrieveCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
file: Handle;
content: CrRPC.BulkDataSink;
session: Session;
{
FOR i133: CARDINAL IN [0..2) DO
file[i133] ← CrRPC.GetCard16[s];
ENDLOOP;
};
TRUSTED {
content ← CrRPC.GetBulkDataSink[h, s];
};
{
FOR i134: CARDINAL IN [0..2) DO
session.token[i134] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[] ← Retrieve[h, file, content, session];
beginReturn[h];
};
RetrieveBytesCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
file: Handle;
range: ByteRange;
sink: CrRPC.BulkDataSink;
session: Session;
{
FOR i135: CARDINAL IN [0..2) DO
file[i135] ← CrRPC.GetCard16[s];
ENDLOOP;
};
{
range.firstByte ← CrRPC.GetCard32[s];
range.count ← CrRPC.GetCard32[s];
};
TRUSTED {
sink ← CrRPC.GetBulkDataSink[h, s];
};
{
FOR i136: CARDINAL IN [0..2) DO
session.token[i136] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[] ← RetrieveBytes[h, file, range, sink, session];
beginReturn[h];
};
LogonCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
service: CHNameP2V0.ThreePartName;
credentials: AuthenticationP14V2.Credentials;
verifier: AuthenticationP14V2.SeqWords;
session: Session;
{
service.organization ← CrRPC.GetRope[s];
service.domain ← CrRPC.GetRope[s];
service.object ← CrRPC.GetRope[s];
};
{
credentials.type ← VAL[CrRPC.GetCard16[s]];
credentials.value ← UProc96[h, s];
};
{
verifier ← UProc96[h, s];
};
[session] ← Logon[h, service, credentials, verifier];
beginReturn[h];
{
FOR i137: CARDINAL IN [0..2) DO
CrRPC.PutCard16[s, session.token[i137]];
ENDLOOP;
MProc138[h, s, session.verifier];
};
};
DeleteCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
file: Handle;
session: Session;
{
FOR i139: CARDINAL IN [0..2) DO
file[i139] ← CrRPC.GetCard16[s];
ENDLOOP;
};
{
FOR i140: CARDINAL IN [0..2) DO
session.token[i140] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[] ← Delete[h, file, session];
beginReturn[h];
};
SerializeCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
file: Handle;
serializedFile: CrRPC.BulkDataSink;
session: Session;
{
FOR i141: CARDINAL IN [0..2) DO
file[i141] ← CrRPC.GetCard16[s];
ENDLOOP;
};
TRUSTED {
serializedFile ← CrRPC.GetBulkDataSink[h, s];
};
{
FOR i142: CARDINAL IN [0..2) DO
session.token[i142] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[] ← Serialize[h, file, serializedFile, session];
beginReturn[h];
};
FindCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
directory: Handle;
scope: ScopeSequence;
controls: ControlSequence;
session: Session;
file: Handle;
{
FOR i143: CARDINAL IN [0..2) DO
directory[i143] ← CrRPC.GetCard16[s];
ENDLOOP;
};
{
scope ← UProc125[h, s];
};
{
controls ← UProc105[h, s];
};
{
FOR i144: CARDINAL IN [0..2) DO
session.token[i144] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[file] ← Find[h, directory, scope, controls, session];
beginReturn[h];
{
FOR i145: CARDINAL IN [0..2) DO
CrRPC.PutCard16[s, file[i145]];
ENDLOOP;
};
};
CreateCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
directory: Handle;
attributes: FilingAttributesP10V5.AttributeSequence;
controls: ControlSequence;
session: Session;
file: Handle;
{
FOR i146: CARDINAL IN [0..2) DO
directory[i146] ← CrRPC.GetCard16[s];
ENDLOOP;
};
{
attributes ← UProc101[h, s];
};
{
controls ← UProc105[h, s];
};
{
FOR i147: CARDINAL IN [0..2) DO
session.token[i147] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[file] ← Create[h, directory, attributes, controls, session];
beginReturn[h];
{
FOR i148: CARDINAL IN [0..2) DO
CrRPC.PutCard16[s, file[i148]];
ENDLOOP;
};
};
CloseCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
file: Handle;
session: Session;
{
FOR i149: CARDINAL IN [0..2) DO
file[i149] ← CrRPC.GetCard16[s];
ENDLOOP;
};
{
FOR i150: CARDINAL IN [0..2) DO
session.token[i150] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[] ← Close[h, file, session];
beginReturn[h];
};
OpenCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
attributes: FilingAttributesP10V5.AttributeSequence;
directory: Handle;
controls: ControlSequence;
session: Session;
file: Handle;
{
attributes ← UProc101[h, s];
};
{
FOR i151: CARDINAL IN [0..2) DO
directory[i151] ← CrRPC.GetCard16[s];
ENDLOOP;
};
{
controls ← UProc105[h, s];
};
{
FOR i152: CARDINAL IN [0..2) DO
session.token[i152] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[file] ← Open[h, attributes, directory, controls, session];
beginReturn[h];
{
FOR i153: CARDINAL IN [0..2) DO
CrRPC.PutCard16[s, file[i153]];
ENDLOOP;
};
};
SetServiceCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
service: CHNameP2V0.ThreePartName;
session: Session;
{
service.organization ← CrRPC.GetRope[s];
service.domain ← CrRPC.GetRope[s];
service.object ← CrRPC.GetRope[s];
};
{
FOR i154: CARDINAL IN [0..2) DO
session.token[i154] ← CrRPC.GetCard16[s];
ENDLOOP;
session.verifier ← UProc96[h, s];
};
[] ← SetService[h, service, session];
beginReturn[h];
};
Server: CrRPC.ServerProc ~ {
[h: Handle, s: STREAM, pgm: CARD32, pgmVersion: CARD16, proc: CARD16, beginReturn: BeginReturnProc, beginError: BeginErrorProc, beginReject: BeginRejectProc]
ENABLE {
FilingP10V5.HandleError => { -- (9 )
beginError[h, 9 ];
CrRPC.PutCard16[s, ORD[problem]];
GOTO Finished;
};
FilingP10V5.ControlTypeError => { -- (2 )
beginError[h, 2 ];
CrRPC.PutCard16[s, ORD[problem]];
CrRPC.PutCard16[s, ORD[type]];
GOTO Finished;
};
FilingP10V5.TransferError => { -- (14 )
beginError[h, 14 ];
CrRPC.PutCard16[s, ORD[problem]];
GOTO Finished;
};
FilingP10V5.SpaceError => { -- (13 )
beginError[h, 13 ];
CrRPC.PutCard16[s, ORD[problem]];
GOTO Finished;
};
FilingP10V5.ServiceError => { -- (11 )
beginError[h, 11 ];
CrRPC.PutCard16[s, ORD[problem]];
GOTO Finished;
};
FilingP10V5.RangeError => { -- (16 )
beginError[h, 16 ];
CrRPC.PutCard16[s, ORD[problem]];
GOTO Finished;
};
FilingP10V5.SessionError => { -- (12 )
beginError[h, 12 ];
CrRPC.PutCard16[s, ORD[problem]];
GOTO Finished;
};
FilingP10V5.UndefinedError => { -- (15 )
beginError[h, 15 ];
CrRPC.PutCard16[s, problem];
GOTO Finished;
};
FilingP10V5.ConnectionError => { -- (8 )
beginError[h, 8 ];
CrRPC.PutCard16[s, ORD[problem]];
GOTO Finished;
};
FilingP10V5.AuthenticationError => { -- (7 )
beginError[h, 7 ];
CrRPC.PutCard16[s, ORD[problem]];
GOTO Finished;
};
FilingP10V5.ScopeValueError => { -- (5 )
beginError[h, 5 ];
CrRPC.PutCard16[s, ORD[problem]];
CrRPC.PutCard16[s, ORD[type]];
GOTO Finished;
};
FilingP10V5.AttributeValueError => { -- (1 )
beginError[h, 1 ];
CrRPC.PutCard16[s, ORD[problem]];
CrRPC.PutCard32[s, type];
GOTO Finished;
};
FilingP10V5.InsertionError => { -- (10 )
beginError[h, 10 ];
CrRPC.PutCard16[s, ORD[problem]];
GOTO Finished;
};
FilingP10V5.ControlValueError => { -- (3 )
beginError[h, 3 ];
CrRPC.PutCard16[s, ORD[problem]];
CrRPC.PutCard16[s, ORD[type]];
GOTO Finished;
};
FilingP10V5.AccessError => { -- (6 )
beginError[h, 6 ];
CrRPC.PutCard16[s, ORD[problem]];
GOTO Finished;
};
FilingP10V5.AttributeTypeError => { -- (0 )
beginError[h, 0 ];
CrRPC.PutCard16[s, ORD[problem]];
CrRPC.PutCard32[s, type];
GOTO Finished;
};
FilingP10V5.ScopeTypeError => { -- (4 )
beginError[h, 4 ];
CrRPC.PutCard16[s, ORD[problem]];
CrRPC.PutCard16[s, ORD[type]];
GOTO Finished;
};
};
IF (pgmVersion # 5) THEN {
beginReject[h, CrRPC.noSuchVersion];
CrRPC.PutCard16[s, 5]; --low
CrRPC.PutCard16[s, 5]; --high
RETURN
};
SELECT proc FROM
23 => ReplaceBytesCaller[h, s, beginReturn];
1 => LogoffCaller[h, s, beginReturn];
20 => UnifyAccessListsCaller[h, s, beginReturn];
9 => ChangeAttributesCaller[h, s, beginReturn];
10 => CopyCaller[h, s, beginReturn];
7 => ChangeControlsCaller[h, s, beginReturn];
6 => GetControlsCaller[h, s, beginReturn];
14 => ReplaceCaller[h, s, beginReturn];
11 => MoveCaller[h, s, beginReturn];
19 => ContinueCaller[h, s, beginReturn];
8 => GetAttributesCaller[h, s, beginReturn];
18 => ListCaller[h, s, beginReturn];
16 => DeserializeCaller[h, s, beginReturn];
12 => StoreCaller[h, s, beginReturn];
13 => RetrieveCaller[h, s, beginReturn];
22 => RetrieveBytesCaller[h, s, beginReturn];
0 => LogonCaller[h, s, beginReturn];
5 => DeleteCaller[h, s, beginReturn];
15 => SerializeCaller[h, s, beginReturn];
17 => FindCaller[h, s, beginReturn];
4 => CreateCaller[h, s, beginReturn];
3 => CloseCaller[h, s, beginReturn];
2 => OpenCaller[h, s, beginReturn];
21 => SetServiceCaller[h, s, beginReturn];
ENDCASE => {
beginReject[h, CrRPC.noSuchProcedure];
};
EXITS
Finished => { NULL };
};
Unmarshal / Marshal Procs --
UProc105: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: ControlSequence] ~ {
{
length156: CARDINAL ~ CrRPC.GetCard16[s];
res ← NEW[ControlSequenceObject[length156]];
FOR i155: CARDINAL IN [0..length156) DO
res.body[i155] ← UProc157[h, s];
ENDLOOP;
};
};
UProc121: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: AttributeTypeSequence] ~ {
{
length159: CARDINAL ~ CrRPC.GetCard16[s];
res ← NEW[AttributeTypeSequenceObject[length159]];
FOR i158: CARDINAL IN [0..length159) DO
res.body[i158] ← CrRPC.GetCard32[s];
ENDLOOP;
};
};
MProc123: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: FilingAttributesP10V5.AttributeSequence] ~ {
CrRPC.PutCard16[s, val.length];
FOR i160: CARDINAL IN [0..val.length) DO
CrRPC.PutCard32[s, val.body[i160].type];
MProc161[h, s, val.body[i160].value];
ENDLOOP;
};
UProc125: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: ScopeSequence] ~ {
{
length163: CARDINAL ~ CrRPC.GetCard16[s];
res ← NEW[ScopeSequenceObject[length163]];
FOR i162: CARDINAL IN [0..length163) DO
res.body[i162] ← UProc164[h, s];
ENDLOOP;
};
};
MProc113: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: ControlSequence] ~ {
CrRPC.PutCard16[s, val.length];
FOR i165: CARDINAL IN [0..val.length) DO
MProc166[h, s, val.body[i165]];
ENDLOOP;
};
UProc164: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: Scope] ~ {
{
tag167: ScopeType ~ VAL[CrRPC.GetCard16[s]];
SELECT tag167 FROM
count => {
temp168: CARD16;
temp168 ← CrRPC.GetCard16[s];
res ← NEW[ScopeObject.count ← [count[temp168]]] };
depth => {
temp168: CARD16;
temp168 ← CrRPC.GetCard16[s];
res ← NEW[ScopeObject.depth ← [depth[temp168]]] };
direction => {
temp168: Direction;
temp168 ← VAL[CrRPC.GetCard16[s]];
res ← NEW[ScopeObject.direction ← [direction[temp168]]] };
filter => {
temp168: Filter;
temp168 ← UProc169[h, s];
res ← NEW[ScopeObject.filter ← [filter[temp168]]] };
ENDCASE => ERROR;
};
};
UProc96: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: AuthenticationP14V2.SeqWords] ~ {
{
length171: CARDINAL ~ CrRPC.GetCard16[s];
res ← NEW[AuthenticationP14V2.SeqWordsObject[length171]];
FOR i170: CARDINAL IN [0..length171) DO
res.body[i170] ← CrRPC.GetCard16[s];
ENDLOOP;
};
};
UProc101: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: FilingAttributesP10V5.AttributeSequence] ~ {
{
length173: CARDINAL ~ CrRPC.GetCard16[s];
res ← NEW[FilingAttributesP10V5.AttributeSequenceObject[length173]];
FOR i172: CARDINAL IN [0..length173) DO
res.body[i172].type ← CrRPC.GetCard32[s];
res.body[i172].value ← UProc174[h, s];
ENDLOOP;
};
};
UProc111: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: ControlTypeSequence] ~ {
{
length176: CARDINAL ~ CrRPC.GetCard16[s];
res ← NEW[ControlTypeSequenceObject[length176]];
FOR i175: CARDINAL IN [0..length176) DO
res.body[i175] ← VAL[CrRPC.GetCard16[s]];
ENDLOOP;
};
};
UProc169: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: Filter] ~ {
{
tag177: FilterType ~ VAL[CrRPC.GetCard16[s]];
SELECT tag177 FROM
less => {
temp178: RelationFilter;
temp178.attribute.type ← CrRPC.GetCard32[s];
temp178.attribute.value ← UProc174[h, s];
temp178.interpretation ← VAL[CrRPC.GetCard16[s]];
res ← NEW[FilterObject.less ← [less[temp178]]] };
lessOrEqual => {
temp178: RelationFilter;
temp178.attribute.type ← CrRPC.GetCard32[s];
temp178.attribute.value ← UProc174[h, s];
temp178.interpretation ← VAL[CrRPC.GetCard16[s]];
res ← NEW[FilterObject.lessOrEqual ← [lessOrEqual[temp178]]] };
equal => {
temp178: RelationFilter;
temp178.attribute.type ← CrRPC.GetCard32[s];
temp178.attribute.value ← UProc174[h, s];
temp178.interpretation ← VAL[CrRPC.GetCard16[s]];
res ← NEW[FilterObject.equal ← [equal[temp178]]] };
notEqual => {
temp178: RelationFilter;
temp178.attribute.type ← CrRPC.GetCard32[s];
temp178.attribute.value ← UProc174[h, s];
temp178.interpretation ← VAL[CrRPC.GetCard16[s]];
res ← NEW[FilterObject.notEqual ← [notEqual[temp178]]] };
greaterOrEqual => {
temp178: RelationFilter;
temp178.attribute.type ← CrRPC.GetCard32[s];
temp178.attribute.value ← UProc174[h, s];
temp178.interpretation ← VAL[CrRPC.GetCard16[s]];
res ← NEW[FilterObject.greaterOrEqual ← [greaterOrEqual[temp178]]] };
greater => {
temp178: RelationFilter;
temp178.attribute.type ← CrRPC.GetCard32[s];
temp178.attribute.value ← UProc174[h, s];
temp178.interpretation ← VAL[CrRPC.GetCard16[s]];
res ← NEW[FilterObject.greater ← [greater[temp178]]] };
and => {
temp178: EmptyRecord;
temp178.null ← 0;
res ← NEW[FilterObject.and ← [and[temp178]]] };
or => {
temp178: EmptyRecord;
temp178.null ← 0;
res ← NEW[FilterObject.or ← [or[temp178]]] };
not => {
temp178: EmptyRecord;
temp178.null ← 0;
res ← NEW[FilterObject.not ← [not[temp178]]] };
none => {
temp178: EmptyRecord;
temp178.null ← 0;
res ← NEW[FilterObject.none ← [none[temp178]]] };
all => {
temp178: EmptyRecord;
temp178.null ← 0;
res ← NEW[FilterObject.all ← [all[temp178]]] };
matches => {
temp178: PatternFilter;
temp178.attribute.type ← CrRPC.GetCard32[s];
temp178.attribute.value ← UProc174[h, s];
res ← NEW[FilterObject.matches ← [matches[temp178]]] };
ENDCASE => ERROR;
};
};
MProc138: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: AuthenticationP14V2.SeqWords] ~ {
CrRPC.PutCard16[s, val.length];
FOR i179: CARDINAL IN [0..val.length) DO
CrRPC.PutCard16[s, val.body[i179]];
ENDLOOP;
};
MProc166: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: Control] ~ {
CrRPC.PutCard16[s, ORD[val.type]];
WITH val SELECT FROM
it: REF ControlObject.lock => {
CrRPC.PutCard16[s, ORD[it^.lock]];
};
it: REF ControlObject.timeout => {
CrRPC.PutCard16[s, it^.timeout];
};
it: REF ControlObject.access => {
MProc181[h, s, it^.access];
};
ENDCASE;
};
UProc157: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: Control] ~ {
{
tag182: ControlType ~ VAL[CrRPC.GetCard16[s]];
SELECT tag182 FROM
lock => {
temp183: Lock;
temp183 ← VAL[CrRPC.GetCard16[s]];
res ← NEW[ControlObject.lock ← [lock[temp183]]] };
timeout => {
temp183: CARD16;
temp183 ← CrRPC.GetCard16[s];
res ← NEW[ControlObject.timeout ← [timeout[temp183]]] };
access => {
temp183: FilingAttributesP10V5.AccessSequence;
temp183 ← UProc184[h, s];
res ← NEW[ControlObject.access ← [access[temp183]]] };
ENDCASE => ERROR;
};
};
MProc161: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: FilingAttributesP10V5.AttributeValue] ~ {
CrRPC.PutCard16[s, val.length];
FOR i185: CARDINAL IN [0..val.length) DO
CrRPC.PutCard16[s, val.body[i185]];
ENDLOOP;
};
UProc174: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: FilingAttributesP10V5.AttributeValue] ~ {
{
length187: CARDINAL ~ CrRPC.GetCard16[s];
res ← NEW[FilingAttributesP10V5.AttributeValueObject[length187]];
FOR i186: CARDINAL IN [0..length187) DO
res.body[i186] ← CrRPC.GetCard16[s];
ENDLOOP;
};
};
MProc181: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: FilingAttributesP10V5.AccessSequence] ~ {
CrRPC.PutCard16[s, val.length];
FOR i188: CARDINAL IN [0..val.length) DO
CrRPC.PutCard16[s, ORD[val.body[i188]]];
ENDLOOP;
};
UProc184: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: FilingAttributesP10V5.AccessSequence] ~ {
{
length190: CARDINAL ~ CrRPC.GetCard16[s];
res ← NEW[FilingAttributesP10V5.AccessSequenceObject[length190]];
FOR i189: CARDINAL IN [0..length190) DO
res.body[i189] ← VAL[CrRPC.GetCard16[s]];
ENDLOOP;
};
};
CrRPC.RegisterServerProc[pgm~10, serverProc~Server, pgmVersion~5];
CrRPC.EnsureListener[class~$SPP];
}...