-- CHOpsP2V3ServerImpl.Mesa
-- Copyright Ó 1991 by Xerox Corporation. All rights reserved.
-- Copyright (C) 1986 by Xerox Corporation. All rights reserved.
-- Generated by Demers.pa at January 19, 1987 2:50:23 pm PST
-- using Sirocco [2.0] of January 6, 1987 4:07:33 pm PST
DIRECTORY
CrRPC,
CHNameP2V0,
AuthenticationP14V2,
BulkDataP0V1,
CHOpsP2V3;
CHOpsP2V3ServerImpl: CEDAR PROGRAM
IMPORTS CrRPC, CHOpsP2V3 ~ {
OPEN CHOpsP2V3;
CreateAliasCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
alias: CHNameP2V0.ThreePartName;
sameAs: CHNameP2V0.ThreePartName;
agent: Authenticator;
distinguishedObject: CHNameP2V0.ThreePartName;
{
alias.organization ¬ CrRPC.GetRope[s];
alias.domain ¬ CrRPC.GetRope[s];
alias.object ¬ CrRPC.GetRope[s];
};
{
sameAs.organization ¬ CrRPC.GetRope[s];
sameAs.domain ¬ CrRPC.GetRope[s];
sameAs.object ¬ CrRPC.GetRope[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[distinguishedObject] ¬ CreateAlias[h, alias, sameAs, agent];
beginReturn[h];
{
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
};
};
DeletePropertyCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
name: CHNameP2V0.ThreePartName;
property: CARD32;
agent: Authenticator;
distinguishedObject: CHNameP2V0.ThreePartName;
{
name.organization ¬ CrRPC.GetRope[s];
name.domain ¬ CrRPC.GetRope[s];
name.object ¬ CrRPC.GetRope[s];
};
{
property ¬ CrRPC.GetCard32[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[distinguishedObject] ¬ DeleteProperty[h, name, property, agent];
beginReturn[h];
{
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
};
};
CreateObjectCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
name: CHNameP2V0.ThreePartName;
agent: Authenticator;
{
name.organization ¬ CrRPC.GetRope[s];
name.domain ¬ CrRPC.GetRope[s];
name.object ¬ CrRPC.GetRope[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[] ¬ CreateObject[h, name, agent];
beginReturn[h];
};
ListAliasesCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
pattern: CHNameP2V0.ThreePartName;
list: CrRPC.BulkDataSink;
agent: Authenticator;
{
pattern.organization ¬ CrRPC.GetRope[s];
pattern.domain ¬ CrRPC.GetRope[s];
pattern.object ¬ CrRPC.GetRope[s];
};
TRUSTED {
list ¬ CrRPC.GetBulkDataSink[h, s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[] ¬ ListAliases[h, pattern, list, agent];
beginReturn[h];
};
ListDomainsServedCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
domains: CrRPC.BulkDataSink;
agent: Authenticator;
TRUSTED {
domains ¬ CrRPC.GetBulkDataSink[h, s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[] ¬ ListDomainsServed[h, domains, agent];
beginReturn[h];
};
DeleteSelfCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
name: CHNameP2V0.ThreePartName;
property: CARD32;
agent: Authenticator;
distinguishedObject: CHNameP2V0.ThreePartName;
{
name.organization ¬ CrRPC.GetRope[s];
name.domain ¬ CrRPC.GetRope[s];
name.object ¬ CrRPC.GetRope[s];
};
{
property ¬ CrRPC.GetCard32[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[distinguishedObject] ¬ DeleteSelf[h, name, property, agent];
beginReturn[h];
{
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
};
};
RetrieveItemCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
pattern: CHNameP2V0.ThreePartName;
property: CARD32;
agent: Authenticator;
distinguishedObject: CHNameP2V0.ThreePartName;
value: Item;
{
pattern.organization ¬ CrRPC.GetRope[s];
pattern.domain ¬ CrRPC.GetRope[s];
pattern.object ¬ CrRPC.GetRope[s];
};
{
property ¬ CrRPC.GetCard32[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[distinguishedObject, value] ¬ RetrieveItem[h, pattern, property, agent];
beginReturn[h];
{
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
};
{
MProc17[h, s, value];
};
};
ListOrganizationsCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
pattern: ROPE;
list: CrRPC.BulkDataSink;
agent: Authenticator;
{
pattern ¬ CrRPC.GetRope[s];
};
TRUSTED {
list ¬ CrRPC.GetBulkDataSink[h, s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[] ¬ ListOrganizations[h, pattern, list, agent];
beginReturn[h];
};
ListPropertiesCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
pattern: CHNameP2V0.ThreePartName;
agent: Authenticator;
distinguishedObject: CHNameP2V0.ThreePartName;
properties: Properties;
{
pattern.organization ¬ CrRPC.GetRope[s];
pattern.domain ¬ CrRPC.GetRope[s];
pattern.object ¬ CrRPC.GetRope[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[distinguishedObject, properties] ¬ ListProperties[h, pattern, agent];
beginReturn[h];
{
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
};
{
MProc18[h, s, properties];
};
};
ListDomainsCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
pattern: CHNameP2V0.TwoPartName;
list: CrRPC.BulkDataSink;
agent: Authenticator;
{
pattern.organization ¬ CrRPC.GetRope[s];
pattern.domain ¬ CrRPC.GetRope[s];
};
TRUSTED {
list ¬ CrRPC.GetBulkDataSink[h, s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[] ¬ ListDomains[h, pattern, list, agent];
beginReturn[h];
};
RetrieveMembersCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
pattern: CHNameP2V0.ThreePartName;
property: CARD32;
membership: CrRPC.BulkDataSink;
agent: Authenticator;
distinguishedObject: CHNameP2V0.ThreePartName;
{
pattern.organization ¬ CrRPC.GetRope[s];
pattern.domain ¬ CrRPC.GetRope[s];
pattern.object ¬ CrRPC.GetRope[s];
};
{
property ¬ CrRPC.GetCard32[s];
};
TRUSTED {
membership ¬ CrRPC.GetBulkDataSink[h, s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[distinguishedObject] ¬ RetrieveMembers[h, pattern, property, membership, agent];
beginReturn[h];
{
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
};
};
IsMemberCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
memberOf: CHNameP2V0.ThreePartName;
property: CARD32;
secondaryProperty: CARD32;
name: CHNameP2V0.ThreePartName;
agent: Authenticator;
isMember: BOOLEAN;
distinguishedObject: CHNameP2V0.ThreePartName;
{
memberOf.organization ¬ CrRPC.GetRope[s];
memberOf.domain ¬ CrRPC.GetRope[s];
memberOf.object ¬ CrRPC.GetRope[s];
};
{
property ¬ CrRPC.GetCard32[s];
};
{
secondaryProperty ¬ CrRPC.GetCard32[s];
};
{
name.organization ¬ CrRPC.GetRope[s];
name.domain ¬ CrRPC.GetRope[s];
name.object ¬ CrRPC.GetRope[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[isMember, distinguishedObject] ¬ IsMember[h, memberOf, property, secondaryProperty, name, agent];
beginReturn[h];
{
CrRPC.PutBool[s, isMember];
};
{
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
};
};
ListAliasesOfCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
pattern: CHNameP2V0.ThreePartName;
list: CrRPC.BulkDataSink;
agent: Authenticator;
distinguishedObject: CHNameP2V0.ThreePartName;
{
pattern.organization ¬ CrRPC.GetRope[s];
pattern.domain ¬ CrRPC.GetRope[s];
pattern.object ¬ CrRPC.GetRope[s];
};
TRUSTED {
list ¬ CrRPC.GetBulkDataSink[h, s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[distinguishedObject] ¬ ListAliasesOf[h, pattern, list, agent];
beginReturn[h];
{
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
};
};
ChangeItemCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
name: CHNameP2V0.ThreePartName;
property: CARD32;
newValue: Item;
agent: Authenticator;
distinguishedObject: CHNameP2V0.ThreePartName;
{
name.organization ¬ CrRPC.GetRope[s];
name.domain ¬ CrRPC.GetRope[s];
name.object ¬ CrRPC.GetRope[s];
};
{
property ¬ CrRPC.GetCard32[s];
};
{
newValue ¬ UProc19[h, s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[distinguishedObject] ¬ ChangeItem[h, name, property, newValue, agent];
beginReturn[h];
{
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
};
};
DeleteMemberCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
name: CHNameP2V0.ThreePartName;
property: CARD32;
member: CHNameP2V0.ThreePartName;
agent: Authenticator;
distinguishedObject: CHNameP2V0.ThreePartName;
{
name.organization ¬ CrRPC.GetRope[s];
name.domain ¬ CrRPC.GetRope[s];
name.object ¬ CrRPC.GetRope[s];
};
{
property ¬ CrRPC.GetCard32[s];
};
{
member.organization ¬ CrRPC.GetRope[s];
member.domain ¬ CrRPC.GetRope[s];
member.object ¬ CrRPC.GetRope[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[distinguishedObject] ¬ DeleteMember[h, name, property, member, agent];
beginReturn[h];
{
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
};
};
AddSelfCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
name: CHNameP2V0.ThreePartName;
property: CARD32;
agent: Authenticator;
distinguishedObject: CHNameP2V0.ThreePartName;
{
name.organization ¬ CrRPC.GetRope[s];
name.domain ¬ CrRPC.GetRope[s];
name.object ¬ CrRPC.GetRope[s];
};
{
property ¬ CrRPC.GetCard32[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[distinguishedObject] ¬ AddSelf[h, name, property, agent];
beginReturn[h];
{
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
};
};
RetrieveAddressesCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
address: NetworkAddressList;
[address] ¬ RetrieveAddresses[h];
beginReturn[h];
{
MProc20[h, s, address];
};
};
DeleteAliasCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
alias: CHNameP2V0.ThreePartName;
agent: Authenticator;
distinguishedObject: CHNameP2V0.ThreePartName;
{
alias.organization ¬ CrRPC.GetRope[s];
alias.domain ¬ CrRPC.GetRope[s];
alias.object ¬ CrRPC.GetRope[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[distinguishedObject] ¬ DeleteAlias[h, alias, agent];
beginReturn[h];
{
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
};
};
LookupObjectCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
name: CHNameP2V0.ThreePartName;
agent: Authenticator;
distinguishedObject: CHNameP2V0.ThreePartName;
{
name.organization ¬ CrRPC.GetRope[s];
name.domain ¬ CrRPC.GetRope[s];
name.object ¬ CrRPC.GetRope[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[distinguishedObject] ¬ LookupObject[h, name, agent];
beginReturn[h];
{
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
};
};
AddGroupPropertyCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
name: CHNameP2V0.ThreePartName;
newProperty: CARD32;
membership: CrRPC.BulkDataSource;
agent: Authenticator;
distinguishedObject: CHNameP2V0.ThreePartName;
{
name.organization ¬ CrRPC.GetRope[s];
name.domain ¬ CrRPC.GetRope[s];
name.object ¬ CrRPC.GetRope[s];
};
{
newProperty ¬ CrRPC.GetCard32[s];
};
TRUSTED {
membership ¬ CrRPC.GetBulkDataSource[h, s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[distinguishedObject] ¬ AddGroupProperty[h, name, newProperty, membership, agent];
beginReturn[h];
{
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
};
};
DeleteObjectCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
name: CHNameP2V0.ThreePartName;
agent: Authenticator;
{
name.organization ¬ CrRPC.GetRope[s];
name.domain ¬ CrRPC.GetRope[s];
name.object ¬ CrRPC.GetRope[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[] ¬ DeleteObject[h, name, agent];
beginReturn[h];
};
AddItemPropertyCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
name: CHNameP2V0.ThreePartName;
newProperty: CARD32;
value: Item;
agent: Authenticator;
distinguishedObject: CHNameP2V0.ThreePartName;
{
name.organization ¬ CrRPC.GetRope[s];
name.domain ¬ CrRPC.GetRope[s];
name.object ¬ CrRPC.GetRope[s];
};
{
newProperty ¬ CrRPC.GetCard32[s];
};
{
value ¬ UProc19[h, s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[distinguishedObject] ¬ AddItemProperty[h, name, newProperty, value, agent];
beginReturn[h];
{
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
};
};
AddMemberCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
name: CHNameP2V0.ThreePartName;
property: CARD32;
newMember: CHNameP2V0.ThreePartName;
agent: Authenticator;
distinguishedObject: CHNameP2V0.ThreePartName;
{
name.organization ¬ CrRPC.GetRope[s];
name.domain ¬ CrRPC.GetRope[s];
name.object ¬ CrRPC.GetRope[s];
};
{
property ¬ CrRPC.GetCard32[s];
};
{
newMember.organization ¬ CrRPC.GetRope[s];
newMember.domain ¬ CrRPC.GetRope[s];
newMember.object ¬ CrRPC.GetRope[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[distinguishedObject] ¬ AddMember[h, name, property, newMember, agent];
beginReturn[h];
{
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
};
};
ListObjectsCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
pattern: CHNameP2V0.ThreePartName;
property: CARD32;
list: CrRPC.BulkDataSink;
agent: Authenticator;
{
pattern.organization ¬ CrRPC.GetRope[s];
pattern.domain ¬ CrRPC.GetRope[s];
pattern.object ¬ CrRPC.GetRope[s];
};
{
property ¬ CrRPC.GetCard32[s];
};
TRUSTED {
list ¬ CrRPC.GetBulkDataSink[h, s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc16[h, s];
agent.verifier ¬ UProc16[h, s];
};
[] ¬ ListObjects[h, pattern, property, list, agent];
beginReturn[h];
};
Server: CrRPC.ServerProc ~ {
-- [h: Handle, s: STREAM, pgm: CARD32, pgmVersion: CARD16, proc: CARD16, beginReturn: BeginReturnProc, beginError: BeginErrorProc, beginReject: BeginRejectProc]
ENABLE {
CHOpsP2V3.ArgumentError => { -- (2 )
beginError[h, 2 ];
CrRPC.PutCard16[s, ORD[problem]];
CrRPC.PutCard16[s, ORD[which]];
GOTO Finished;
};
CHOpsP2V3.PropertyError => { -- (3 )
beginError[h, 3 ];
CrRPC.PutCard16[s, ORD[problem]];
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
GOTO Finished;
};
CHOpsP2V3.CallError => { -- (1 )
beginError[h, 1 ];
CrRPC.PutCard16[s, ORD[problem]];
GOTO Finished;
};
CHOpsP2V3.UpdateError => { -- (4 )
beginError[h, 4 ];
CrRPC.PutCard16[s, ORD[problem]];
CrRPC.PutBool[s, found];
CrRPC.PutCard16[s, ORD[which]];
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
GOTO Finished;
};
CHOpsP2V3.AuthenticationError => { -- (6 )
beginError[h, 6 ];
CrRPC.PutCard16[s, ORD[problem]];
GOTO Finished;
};
CHOpsP2V3.WrongServer => { -- (5 )
beginError[h, 5 ];
CrRPC.PutRope[s, hint.organization];
CrRPC.PutRope[s, hint.domain];
CrRPC.PutRope[s, hint.object];
GOTO Finished;
};
};
IF (pgmVersion # 3) THEN {
beginReject[h, CrRPC.noSuchVersion];
CrRPC.PutCard16[s, 3]; --low
CrRPC.PutCard16[s, 3]; --high
RETURN
};
SELECT proc FROM
10 => CreateAliasCaller[h, s, beginReturn];
14 => DeletePropertyCaller[h, s, beginReturn];
2 => CreateObjectCaller[h, s, beginReturn];
8 => ListAliasesCaller[h, s, beginReturn];
1 => ListDomainsServedCaller[h, s, beginReturn];
22 => DeleteSelfCaller[h, s, beginReturn];
16 => RetrieveItemCaller[h, s, beginReturn];
5 => ListOrganizationsCaller[h, s, beginReturn];
15 => ListPropertiesCaller[h, s, beginReturn];
6 => ListDomainsCaller[h, s, beginReturn];
18 => RetrieveMembersCaller[h, s, beginReturn];
23 => IsMemberCaller[h, s, beginReturn];
9 => ListAliasesOfCaller[h, s, beginReturn];
17 => ChangeItemCaller[h, s, beginReturn];
21 => DeleteMemberCaller[h, s, beginReturn];
20 => AddSelfCaller[h, s, beginReturn];
0 => RetrieveAddressesCaller[h, s, beginReturn];
11 => DeleteAliasCaller[h, s, beginReturn];
4 => LookupObjectCaller[h, s, beginReturn];
12 => AddGroupPropertyCaller[h, s, beginReturn];
3 => DeleteObjectCaller[h, s, beginReturn];
13 => AddItemPropertyCaller[h, s, beginReturn];
19 => AddMemberCaller[h, s, beginReturn];
7 => ListObjectsCaller[h, s, beginReturn];
ENDCASE => {
beginReject[h, CrRPC.noSuchProcedure];
};
EXITS
Finished => { NULL };
};
-- Unmarshal / Marshal Procs --
UProc16: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: AuthenticationP14V2.SeqWords] ~ {
{
length22: CARDINAL ~ CrRPC.GetCard16[s];
res ¬ NEW[AuthenticationP14V2.SeqWordsObject[length22]];
FOR i21: CARDINAL IN [0..length22) DO
res.body[i21] ¬ CrRPC.GetCard16[s];
ENDLOOP;
};
};
MProc17: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: Item] ~ {
CrRPC.PutCard16[s, val.length];
FOR i23: CARDINAL IN [0..val.length) DO
CrRPC.PutCard16[s, val.body[i23]];
ENDLOOP;
};
UProc19: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: Item] ~ {
{
length25: CARDINAL ~ CrRPC.GetCard16[s];
res ¬ NEW[ItemObject[length25]];
FOR i24: CARDINAL IN [0..length25) DO
res.body[i24] ¬ CrRPC.GetCard16[s];
ENDLOOP;
};
};
MProc18: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: Properties] ~ {
CrRPC.PutCard16[s, val.length];
FOR i26: CARDINAL IN [0..val.length) DO
CrRPC.PutCard32[s, val.body[i26]];
ENDLOOP;
};
MProc20: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: NetworkAddressList] ~ {
CrRPC.PutCard16[s, val.length];
FOR i27: CARDINAL IN [0..val.length) DO
FOR i28: CARDINAL IN [0..2) DO
CrRPC.PutCard16[s, val.body[i27].network[i28]];
ENDLOOP;
FOR i29: CARDINAL IN [0..3) DO
CrRPC.PutCard16[s, val.body[i27].host[i29]];
ENDLOOP;
CrRPC.PutCard16[s, val.body[i27].socket];
ENDLOOP;
};
CrRPC.RegisterServerProc[pgm~2, serverProc~Server, pgmVersion~3];
CrRPC.EnsureListener[class~$SPP];
}...