ThPartySunRPCClientStub.mesa
Copyright Ó 1989, 1990 by Xerox Corporation. All rights reserved.
Adapted from ThPartyP909V1ClientImpl.mesa
Generated by PolleZ.pa at September 30, 1989 4:53:16 pm PDT
using Sirocco [2.0] of February 10, 1989 6:26:26 pm PST
Polle Zellweger (PTZ) May 23, 1990 6:55:45 pm PDT
Pier, May 24, 1990 2:44:45 pm PDT
Swinehart, September 15, 1990 1:49:29 pm PDT
DIRECTORY
SunRPC,
ThrushSunRPC,
SRPCCalls,
ThPartySunRPC,
ThPartySunRPCClient;
ThPartySunRPCClientStub: CEDAR PROGRAM
IMPORTS SunRPC, SRPCCalls
EXPORTS ThPartySunRPCClient ~ {
OPEN ThPartySunRPC, SRPCCalls;
Handle: TYPE ~ SunRPC.Handle;
Errors
Error: PUBLIC ErrorType ~ CODE;
GetErrorProc
GetError: SunRPCGetErrorProc ~ {
No errors in ThParty interface.
ec: ROPE;
explanation: ROPE;
ec ← SunRPC.GetRope[h];
explanation ← SunRPC.GetRope[h];
IF NOT Rope.InlineIsEmpty[ec] THEN ERROR Error[ec, explanation];
};
Remote Procedures --
LookupServiceInterface: PUBLIC LookupServiceInterfaceType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shhh];
SunRPC.PutCard32[h, credentials.partyID];
SunRPC.PutCard32[h, credentials.smartsID];
SunRPC.PutCard32[h, credentials.convID];
SunRPC.PutCard32[h, ORD[credentials.state]];
SunRPC.PutCard32[h, credentials.stateID];
SunRPC.PutCard32[h, serviceParty];
SunRPC.PutRope[h, type];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
interfaceSpec.interfaceName.type ← SunRPC.GetRope[h];
interfaceSpec.interfaceName.instance ← SunRPC.GetRope[h];
interfaceSpec.interfaceName.version.first ← SunRPC.GetCard32[h];
interfaceSpec.interfaceName.version.last ← SunRPC.GetCard32[h];
interfaceSpec.hostHint.net.net ← SunRPC.GetCard32[h];
interfaceSpec.hostHint.host.host ← SunRPC.GetCard32[h];
interfaceSpec.hostHint.socket.a ← SunRPC.GetCard32[h];
interfaceSpec.hostHint.socket.b ← SunRPC.GetCard32[h];
interfaceSpec.hostHint.socket.c ← SunRPC.GetCard32[h];
interfaceSpec.hostHint.socket.d ← SunRPC.GetCard32[h];
interfaceSpec.serviceID ← SunRPC.GetCard32[h];
interfaceSpec.interfaceID ← SunRPC.GetCard32[h];
};
SunRPCCall[h~h, remoteProc~12 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
Register: PUBLIC RegisterType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shh];
SunRPC.PutRope[h, rName];
SunRPC.PutRope[h, type];
SunRPC.PutCard32[h, clonePartyID];
SunRPC.PutRope[h, interface.type];
SunRPC.PutRope[h, interface.instance];
SunRPC.PutCard32[h, interface.version.first];
SunRPC.PutCard32[h, interface.version.last];
SunRPC.PutRope[h, properties.role];
SunRPC.PutCard32[h, properties.netAddress.net.net];
SunRPC.PutCard32[h, properties.netAddress.host.host];
SunRPC.PutCard32[h, properties.netAddress.socket.a];
SunRPC.PutCard32[h, properties.netAddress.socket.b];
SunRPC.PutCard32[h, properties.netAddress.socket.c];
SunRPC.PutCard32[h, properties.netAddress.socket.d];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
credentials.partyID ← SunRPC.GetCard32[h];
credentials.smartsID ← SunRPC.GetCard32[h];
credentials.convID ← SunRPC.GetCard32[h];
credentials.state ← VAL[CARDINAL[SunRPC.GetCard32[h]]];
credentials.stateID ← SunRPC.GetCard32[h];
};
SunRPCCall[h~h, remoteProc~22 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
Disable: PUBLIC DisableType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shh];
SunRPC.PutCard32[h, smartsID];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
};
SunRPCCall[h~h, remoteProc~26 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
DescribeParty: PUBLIC DescribePartyType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, partyID];
SunRPC.PutRope[h, nameReq];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
description ← SunRPC.GetRope[h];
type ← SunRPC.GetRope[h];
partner ← SunRPC.GetCard32[h];
visitee ← SunRPC.GetCard32[h];
visitors ← UProc1[h];
};
SunRPCCall[h~h, remoteProc~9 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
Visit: PUBLIC VisitType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shh];
SunRPC.PutCard32[h, hostPartyID];
SunRPC.PutCard32[h, guestPartyID];
FOR i2: CARDINAL IN [0..2) DO
SunRPC.PutCard32[h, guestPassword[i2]];
ENDLOOP;
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
};
SunRPCCall[h~h, remoteProc~27 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
GetNumbersForRName: PUBLIC GetNumbersForRNameType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shh];
SunRPC.PutRope[h, rName];
};
GetResults: SunRPCGetResultsProc ~ {
fullRName ← SunRPC.GetRope[h];
number ← SunRPC.GetRope[h];
homeNumber ← SunRPC.GetRope[h];
};
SunRPCCall[h~h, remoteProc~21 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
UnregisterKey: PUBLIC UnregisterKeyType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shh];
SunRPC.PutCard32[h, credentials.partyID];
SunRPC.PutCard32[h, credentials.smartsID];
SunRPC.PutCard32[h, credentials.convID];
SunRPC.PutCard32[h, ORD[credentials.state]];
SunRPC.PutCard32[h, credentials.stateID];
FOR i3: CARDINAL IN [0..2) DO
SunRPC.PutCard32[h, key[i3]];
ENDLOOP;
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
};
SunRPCCall[h~h, remoteProc~15 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
CheckIn: PUBLIC CheckInType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shh];
SunRPC.PutCard32[h, credentials.partyID];
SunRPC.PutCard32[h, credentials.smartsID];
SunRPC.PutCard32[h, credentials.convID];
SunRPC.PutCard32[h, ORD[credentials.state]];
SunRPC.PutCard32[h, credentials.stateID];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
};
SunRPCCall[h~h, remoteProc~23 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
CreateConversation: PUBLIC CreateConversationType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shhh];
SunRPC.PutCard32[h, credentials.partyID];
SunRPC.PutCard32[h, credentials.smartsID];
SunRPC.PutCard32[h, credentials.convID];
SunRPC.PutCard32[h, ORD[credentials.state]];
SunRPC.PutCard32[h, credentials.stateID];
SunRPC.PutCard32[h, ORD[state]];
SunRPC.PutRope[h, reason];
SunRPC.PutRope[h, comment];
MProc4[h, convAttributes];
MProc4[h, partyAttributes];
SunRPCPutBool[h, checkConflict];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
convEvent.self.partyID ← SunRPC.GetCard32[h];
convEvent.self.smartsID ← SunRPC.GetCard32[h];
convEvent.self.convID ← SunRPC.GetCard32[h];
convEvent.self.state ← VAL[CARDINAL[SunRPC.GetCard32[h]]];
convEvent.self.stateID ← SunRPC.GetCard32[h];
convEvent.other.partyID ← SunRPC.GetCard32[h];
convEvent.other.smartsID ← SunRPC.GetCard32[h];
convEvent.other.convID ← SunRPC.GetCard32[h];
convEvent.other.state ← VAL[CARDINAL[SunRPC.GetCard32[h]]];
convEvent.other.stateID ← SunRPC.GetCard32[h];
convEvent.time ← SunRPC.GetCard32[h];
convEvent.reason ← SunRPC.GetRope[h];
convEvent.comment ← SunRPC.GetRope[h];
};
SunRPCCall[h~h, remoteProc~0 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
UnvisitSelf: PUBLIC UnvisitSelfType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shh];
SunRPC.PutCard32[h, guestPartyID];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
};
SunRPCCall[h~h, remoteProc~29 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
GetConversationInfo: PUBLIC GetConversationInfoType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shh];
SunRPC.PutCard32[h, convID];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
cInfo.convID ← SunRPC.GetCard32[h];
cInfo.numParties ← SunRPC.GetCard32[h];
cInfo.numActive ← SunRPC.GetCard32[h];
cInfo.numIdle ← SunRPC.GetCard32[h];
cInfo.originator ← SunRPC.GetCard32[h];
cInfo.conferenceHost.net.net ← SunRPC.GetCard32[h];
cInfo.conferenceHost.host.host ← SunRPC.GetCard32[h];
cInfo.conferenceHost.socket.a ← SunRPC.GetCard32[h];
cInfo.conferenceHost.socket.b ← SunRPC.GetCard32[h];
cInfo.conferenceHost.socket.c ← SunRPC.GetCard32[h];
cInfo.conferenceHost.socket.d ← SunRPC.GetCard32[h];
cInfo.convType ← VAL[CARDINAL[SunRPC.GetCard32[h]]];
cInfo.bilateralConv ← SunRPCGetBool[h];
cInfo.startTime ← SunRPC.GetCard32[h];
cInfo.convAttributes ← UProc5[h];
cInfo.moderator ← SunRPC.GetCard32[h];
cInfo.commentator ← SunRPC.GetCard32[h];
};
SunRPCCall[h~h, remoteProc~4 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
GetKeyTable: PUBLIC GetKeyTableType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shh];
SunRPC.PutCard32[h, credentials.partyID];
SunRPC.PutCard32[h, credentials.smartsID];
SunRPC.PutCard32[h, credentials.convID];
SunRPC.PutCard32[h, ORD[credentials.state]];
SunRPC.PutCard32[h, credentials.stateID];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
keyTable.s ← UProc6[h];
};
SunRPCCall[h~h, remoteProc~14 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
GetPartyFromFeepNum: PUBLIC GetPartyFromFeepNumType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shh];
SunRPC.PutCard32[h, partyID];
SunRPC.PutRope[h, feepNum];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
newPartyID ← SunRPC.GetCard32[h];
};
SunRPCCall[h~h, remoteProc~18 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
ReportAction: PUBLIC ReportActionType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shhh];
SunRPC.PutCard32[h, report.self.partyID];
SunRPC.PutCard32[h, report.self.smartsID];
SunRPC.PutCard32[h, report.self.convID];
SunRPC.PutCard32[h, ORD[report.self.state]];
SunRPC.PutCard32[h, report.self.stateID];
SunRPC.PutCard32[h, report.other.partyID];
SunRPC.PutCard32[h, report.other.smartsID];
SunRPC.PutCard32[h, report.other.convID];
SunRPC.PutCard32[h, ORD[report.other.state]];
SunRPC.PutCard32[h, report.other.stateID];
SunRPC.PutCard32[h, report.requestingParty];
SunRPC.PutCard32[h, report.actionID];
SunRPC.PutRope[h, report.actionClass];
SunRPC.PutRope[h, report.actionType];
SunRPC.PutRope[h, report.actionInfo];
SunRPCPutBool[h, reportToAll];
SunRPCPutBool[h, selfOnCompletion];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
numReportsIssued ← SunRPC.GetCard32[h];
};
SunRPCCall[h~h, remoteProc~3 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
GetParty: PUBLIC GetPartyType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shh];
SunRPC.PutCard32[h, partyID];
SunRPC.PutRope[h, rName];
SunRPC.PutRope[h, type];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
newPartyID ← SunRPC.GetCard32[h];
};
SunRPCCall[h~h, remoteProc~16 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
GetPartyInfo: PUBLIC GetPartyInfoType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shh];
SunRPC.PutCard32[h, credentials.partyID];
SunRPC.PutCard32[h, credentials.smartsID];
SunRPC.PutCard32[h, credentials.convID];
SunRPC.PutCard32[h, ORD[credentials.state]];
SunRPC.PutCard32[h, credentials.stateID];
SunRPC.PutRope[h, nameReq];
SunRPCPutBool[h, allParties];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
pInfo.numParties ← SunRPC.GetCard32[h];
pInfo.conversationInfo.convID ← SunRPC.GetCard32[h];
pInfo.conversationInfo.numParties ← SunRPC.GetCard32[h];
pInfo.conversationInfo.numActive ← SunRPC.GetCard32[h];
pInfo.conversationInfo.numIdle ← SunRPC.GetCard32[h];
pInfo.conversationInfo.originator ← SunRPC.GetCard32[h];
pInfo.conversationInfo.conferenceHost.net.net ← SunRPC.GetCard32[h];
pInfo.conversationInfo.conferenceHost.host.host ← SunRPC.GetCard32[h];
pInfo.conversationInfo.conferenceHost.socket.a ← SunRPC.GetCard32[h];
pInfo.conversationInfo.conferenceHost.socket.b ← SunRPC.GetCard32[h];
pInfo.conversationInfo.conferenceHost.socket.c ← SunRPC.GetCard32[h];
pInfo.conversationInfo.conferenceHost.socket.d ← SunRPC.GetCard32[h];
pInfo.conversationInfo.convType ← VAL[CARDINAL[SunRPC.GetCard32[h]]];
pInfo.conversationInfo.bilateralConv ← SunRPCGetBool[h];
pInfo.conversationInfo.startTime ← SunRPC.GetCard32[h];
pInfo.conversationInfo.convAttributes ← UProc5[h];
pInfo.conversationInfo.moderator ← SunRPC.GetCard32[h];
pInfo.conversationInfo.commentator ← SunRPC.GetCard32[h];
pInfo.ixSelf ← SunRPC.GetCard32[h];
pInfo.ixOther ← SunRPC.GetCard32[h];
pInfo.ixModerator ← SunRPC.GetCard32[h];
pInfo.ixCommentator ← SunRPC.GetCard32[h];
pInfo.ixCommSock ← SunRPC.GetCard32[h];
pInfo.ixOriginator ← SunRPC.GetCard32[h];
pInfo.parties ← UProc7[h];
};
SunRPCCall[h~h, remoteProc~8 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
Advance: PUBLIC AdvanceType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shhh];
SunRPC.PutCard32[h, credentials.partyID];
SunRPC.PutCard32[h, credentials.smartsID];
SunRPC.PutCard32[h, credentials.convID];
SunRPC.PutCard32[h, ORD[credentials.state]];
SunRPC.PutCard32[h, credentials.stateID];
SunRPC.PutCard32[h, ORD[state]];
SunRPCPutBool[h, reportToAll];
SunRPC.PutRope[h, reason];
SunRPC.PutRope[h, comment];
MProc4[h, convAttributes];
MProc4[h, partyAttributes];
SunRPCPutBool[h, bilateral];
SunRPCPutBool[h, checkConflict];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
convEvent.self.partyID ← SunRPC.GetCard32[h];
convEvent.self.smartsID ← SunRPC.GetCard32[h];
convEvent.self.convID ← SunRPC.GetCard32[h];
convEvent.self.state ← VAL[CARDINAL[SunRPC.GetCard32[h]]];
convEvent.self.stateID ← SunRPC.GetCard32[h];
convEvent.other.partyID ← SunRPC.GetCard32[h];
convEvent.other.smartsID ← SunRPC.GetCard32[h];
convEvent.other.convID ← SunRPC.GetCard32[h];
convEvent.other.state ← VAL[CARDINAL[SunRPC.GetCard32[h]]];
convEvent.other.stateID ← SunRPC.GetCard32[h];
convEvent.time ← SunRPC.GetCard32[h];
convEvent.reason ← SunRPC.GetRope[h];
convEvent.comment ← SunRPC.GetRope[h];
};
SunRPCCall[h~h, remoteProc~2 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
Alert: PUBLIC AlertType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shhh];
SunRPC.PutCard32[h, credentials.partyID];
SunRPC.PutCard32[h, credentials.smartsID];
SunRPC.PutCard32[h, credentials.convID];
SunRPC.PutCard32[h, ORD[credentials.state]];
SunRPC.PutCard32[h, credentials.stateID];
SunRPC.PutCard32[h, calledPartyID];
SunRPC.PutRope[h, comment];
MProc4[h, convAttributes];
MProc4[h, partyAttributes];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
};
SunRPCCall[h~h, remoteProc~1 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
Unvisit: PUBLIC UnvisitType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shh];
SunRPC.PutCard32[h, hostPartyID];
SunRPC.PutCard32[h, guestPartyID];
FOR i8: CARDINAL IN [0..2) DO
SunRPC.PutCard32[h, guestPassword[i8]];
ENDLOOP;
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
};
SunRPCCall[h~h, remoteProc~28 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
Enable: PUBLIC EnableType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shh];
SunRPC.PutCard32[h, smartsID];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
};
SunRPCCall[h~h, remoteProc~25 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
GetCurrentParty: PUBLIC GetCurrentPartyType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shh];
SunRPC.PutCard32[h, smartsID];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
partyID ← SunRPC.GetCard32[h];
};
SunRPCCall[h~h, remoteProc~19 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
ReleaseParty: PUBLIC ReleasePartyType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shh];
SunRPC.PutCard32[h, partyID];
SunRPC.PutCard32[h, targetPartyID];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
};
SunRPCCall[h~h, remoteProc~20 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
GetPartyFromNumber: PUBLIC GetPartyFromNumberType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shh];
SunRPC.PutCard32[h, partyID];
SunRPC.PutRope[h, phoneNumber];
SunRPC.PutRope[h, description];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
newPartyID ← SunRPC.GetCard32[h];
};
SunRPCCall[h~h, remoteProc~17 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
EnumerateNamedConversations: PUBLIC EnumerateNamedConversationsType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shhh];
SunRPC.PutCard32[h, partyID];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
candidates ← UProc9[h];
};
SunRPCCall[h~h, remoteProc~7 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
RegisterConversation: PUBLIC RegisterConversationType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shhh];
SunRPC.PutCard32[h, credentials.partyID];
SunRPC.PutCard32[h, credentials.smartsID];
SunRPC.PutCard32[h, credentials.convID];
SunRPC.PutCard32[h, ORD[credentials.state]];
SunRPC.PutCard32[h, credentials.stateID];
SunRPC.PutRope[h, name];
SunRPC.PutCard32[h, ORD[convType]];
MProc4[h, convAttributes];
MProc10[h, accessList];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
};
SunRPCCall[h~h, remoteProc~5 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
AddAttributes: PUBLIC AddAttributesType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, credentials.partyID];
SunRPC.PutCard32[h, credentials.smartsID];
SunRPC.PutCard32[h, credentials.convID];
SunRPC.PutCard32[h, ORD[credentials.state]];
SunRPC.PutCard32[h, credentials.stateID];
MProc4[h, convAttributes];
MProc4[h, partyAttributes];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
};
SunRPCCall[h~h, remoteProc~10 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
RegisterServiceInterface: PUBLIC RegisterServiceInterfaceType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shhh];
SunRPC.PutCard32[h, credentials.partyID];
SunRPC.PutCard32[h, credentials.smartsID];
SunRPC.PutCard32[h, credentials.convID];
SunRPC.PutCard32[h, ORD[credentials.state]];
SunRPC.PutCard32[h, credentials.stateID];
SunRPC.PutRope[h, interfaceSpecPattern.interfaceName.type];
SunRPC.PutRope[h, interfaceSpecPattern.interfaceName.instance];
SunRPC.PutCard32[h, interfaceSpecPattern.interfaceName.version.first];
SunRPC.PutCard32[h, interfaceSpecPattern.interfaceName.version.last];
SunRPC.PutCard32[h, interfaceSpecPattern.hostHint.net.net];
SunRPC.PutCard32[h, interfaceSpecPattern.hostHint.host.host];
SunRPC.PutCard32[h, interfaceSpecPattern.hostHint.socket.a];
SunRPC.PutCard32[h, interfaceSpecPattern.hostHint.socket.b];
SunRPC.PutCard32[h, interfaceSpecPattern.hostHint.socket.c];
SunRPC.PutCard32[h, interfaceSpecPattern.hostHint.socket.d];
SunRPC.PutCard32[h, interfaceSpecPattern.serviceID];
SunRPC.PutCard32[h, interfaceSpecPattern.interfaceID];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
interfaceSpec.interfaceName.type ← SunRPC.GetRope[h];
interfaceSpec.interfaceName.instance ← SunRPC.GetRope[h];
interfaceSpec.interfaceName.version.first ← SunRPC.GetCard32[h];
interfaceSpec.interfaceName.version.last ← SunRPC.GetCard32[h];
interfaceSpec.hostHint.net.net ← SunRPC.GetCard32[h];
interfaceSpec.hostHint.host.host ← SunRPC.GetCard32[h];
interfaceSpec.hostHint.socket.a ← SunRPC.GetCard32[h];
interfaceSpec.hostHint.socket.b ← SunRPC.GetCard32[h];
interfaceSpec.hostHint.socket.c ← SunRPC.GetCard32[h];
interfaceSpec.hostHint.socket.d ← SunRPC.GetCard32[h];
interfaceSpec.serviceID ← SunRPC.GetCard32[h];
interfaceSpec.interfaceID ← SunRPC.GetCard32[h];
};
SunRPCCall[h~h, remoteProc~11 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
GetConversationFromName: PUBLIC GetConversationFromNameType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shhh];
SunRPC.PutCard32[h, partyID];
SunRPC.PutRope[h, name];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
cInfo.convID ← SunRPC.GetCard32[h];
cInfo.numParties ← SunRPC.GetCard32[h];
cInfo.numActive ← SunRPC.GetCard32[h];
cInfo.numIdle ← SunRPC.GetCard32[h];
cInfo.originator ← SunRPC.GetCard32[h];
cInfo.conferenceHost.net.net ← SunRPC.GetCard32[h];
cInfo.conferenceHost.host.host ← SunRPC.GetCard32[h];
cInfo.conferenceHost.socket.a ← SunRPC.GetCard32[h];
cInfo.conferenceHost.socket.b ← SunRPC.GetCard32[h];
cInfo.conferenceHost.socket.c ← SunRPC.GetCard32[h];
cInfo.conferenceHost.socket.d ← SunRPC.GetCard32[h];
cInfo.convType ← VAL[CARDINAL[SunRPC.GetCard32[h]]];
cInfo.bilateralConv ← SunRPCGetBool[h];
cInfo.startTime ← SunRPC.GetCard32[h];
cInfo.convAttributes ← UProc5[h];
cInfo.moderator ← SunRPC.GetCard32[h];
cInfo.commentator ← SunRPC.GetCard32[h];
};
SunRPCCall[h~h, remoteProc~6 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
RegisterKey: PUBLIC RegisterKeyType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shh];
SunRPC.PutCard32[h, credentials.partyID];
SunRPC.PutCard32[h, credentials.smartsID];
SunRPC.PutCard32[h, credentials.convID];
SunRPC.PutCard32[h, ORD[credentials.state]];
SunRPC.PutCard32[h, credentials.stateID];
FOR i11: CARDINAL IN [0..2) DO
SunRPC.PutCard32[h, key[i11]];
ENDLOOP;
SunRPCPutBool[h, reportNewKeys];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
keyIndex ← SunRPC.GetCard32[h];
};
SunRPCCall[h~h, remoteProc~13 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
Deregister: PUBLIC DeregisterType ~ {
PutArgs: SunRPCPutArgsProc ~ {
SunRPC.PutCard32[h, shh];
SunRPC.PutCard32[h, smartsID];
};
GetResults: SunRPCGetResultsProc ~ {
nb ← SunRPC.GetRope[h];
};
SunRPCCall[h~h, remoteProc~24 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
Unmarshal / Marshal Procs --
SunRPCGetBool: PROC [h: Handle] RETURNS [BOOL] ~ INLINE {
RETURN [SunRPC.GetCard32[h] # 0] };
SunRPCPutBool: PROC [h: Handle, bool: BOOL] ~ INLINE {
SunRPC.PutCard32[h, IF bool THEN 1 ELSE 0] };
UProc1: PROC [h: Handle] RETURNS [res: VisitorList] ~ {
{
length13: CARDINAL ~ SunRPC.GetCard32[h];
res ← NEW[VisitorListObject[length13]];
FOR i12: CARDINAL IN [0..length13) DO
res.body[i12] ← SunRPC.GetCard32[h];
ENDLOOP;
};
};
UProc9: PROC [h: Handle] RETURNS [res: CandidateList] ~ {
{
length15: CARDINAL ~ SunRPC.GetCard32[h];
res ← NEW[CandidateListObject[length15]];
FOR i14: CARDINAL IN [0..length15) DO
res.body[i14].convID ← SunRPC.GetCard32[h];
res.body[i14].numParties ← SunRPC.GetCard32[h];
res.body[i14].numActive ← SunRPC.GetCard32[h];
res.body[i14].numIdle ← SunRPC.GetCard32[h];
res.body[i14].originator ← SunRPC.GetCard32[h];
res.body[i14].conferenceHost.net.net ← SunRPC.GetCard32[h];
res.body[i14].conferenceHost.host.host ← SunRPC.GetCard32[h];
res.body[i14].conferenceHost.socket.a ← SunRPC.GetCard32[h];
res.body[i14].conferenceHost.socket.b ← SunRPC.GetCard32[h];
res.body[i14].conferenceHost.socket.c ← SunRPC.GetCard32[h];
res.body[i14].conferenceHost.socket.d ← SunRPC.GetCard32[h];
res.body[i14].convType ← VAL[CARDINAL[SunRPC.GetCard32[h]]];
res.body[i14].bilateralConv ← SunRPCGetBool[h];
res.body[i14].startTime ← SunRPC.GetCard32[h];
res.body[i14].convAttributes ← UProc5[h];
res.body[i14].moderator ← SunRPC.GetCard32[h];
res.body[i14].commentator ← SunRPC.GetCard32[h];
ENDLOOP;
};
};
UProc7: PROC [h: Handle] RETURNS [res: PartyList] ~ {
{
length17: CARDINAL ~ SunRPC.GetCard32[h];
res ← NEW[PartyListObject[length17]];
FOR i16: CARDINAL IN [0..length17) DO
res.body[i16].partyID ← SunRPC.GetCard32[h];
res.body[i16].name ← SunRPC.GetRope[h];
res.body[i16].intendedPartyID ← SunRPC.GetCard32[h];
res.body[i16].intendedName ← SunRPC.GetRope[h];
res.body[i16].type ← SunRPC.GetRope[h];
res.body[i16].state ← VAL[CARDINAL[SunRPC.GetCard32[h]]];
res.body[i16].numConvs ← SunRPC.GetCard32[h];
res.body[i16].enabled ← SunRPCGetBool[h];
res.body[i16].voicePath ← SunRPCGetBool[h];
res.body[i16].partyActive ← SunRPCGetBool[h];
res.body[i16].partyEngaged ← SunRPCGetBool[h];
res.body[i16].socket.net.net ← SunRPC.GetCard32[h];
res.body[i16].socket.host.host ← SunRPC.GetCard32[h];
res.body[i16].socket.socket.a ← SunRPC.GetCard32[h];
res.body[i16].socket.socket.b ← SunRPC.GetCard32[h];
res.body[i16].socket.socket.c ← SunRPC.GetCard32[h];
res.body[i16].socket.socket.d ← SunRPC.GetCard32[h];
res.body[i16].partyAttributes ← UProc5[h];
ENDLOOP;
};
};
UProc5: PROC [h: Handle] RETURNS [res: Entry] ~ {
{
length19: CARDINAL ~ SunRPC.GetCard32[h];
res ← NEW[EntryObject[length19]];
FOR i18: CARDINAL IN [0..length19) DO
res.body[i18].type ← SunRPC.GetRope[h];
res.body[i18].value ← SunRPC.GetRope[h];
ENDLOOP;
};
};
UProc6: PROC [h: Handle] RETURNS [res: ThrushSunRPC.Keys] ~ {
{
length21: CARDINAL ~ SunRPC.GetCard32[h];
res ← NEW[ThrushSunRPC.KeysObject[length21]];
FOR i20: CARDINAL IN [0..length21) DO
FOR i22: CARDINAL IN [0..2) DO
res.body[i20][i22] ← SunRPC.GetCard32[h];
ENDLOOP;
ENDLOOP;
};
};
MProc10: PROC [h: Handle, val: AccessList] ~ {
SunRPC.PutCard32[h, val.length];
FOR i23: CARDINAL IN [0..val.length) DO
SunRPC.PutRope[h, val.body[i23]];
ENDLOOP;
};
MProc4: PROC [h: Handle, val: Entry] ~ {
SunRPC.PutCard32[h, val.length];
FOR i24: CARDINAL IN [0..val.length) DO
SunRPC.PutRope[h, val.body[i24].type];
SunRPC.PutRope[h, val.body[i24].value];
ENDLOOP;
};
SunRPCCall: PROC [h: Handle, remoteProc: CARD, putArgs: SunRPCPutArgsProc, getResults: SunRPCGetResultsProc, getError: SunRPCGetErrorProc] ~ {
SunRPCProgramCall[h: h, remoteProc: remoteProc,
putArgs: putArgs, getResults: getResults, getError: getError];
};
}...
Polle Zellweger (PTZ) May 2, 1990 4:45:54 pm PDT
changes to: ThPartySunRPCClientStub
Polle Zellweger (PTZ) May 8, 1990 9:04:11 pm PDT
Mistake in original Thrush.cr = hand edits. Key definition: 3 elements to 2.
changes to: PutArgs (local of UnregisterKey), PutArgs (local of RegisterKey), UProc6
Polle Zellweger (PTZ) May 23, 1990 6:53:02 pm PDT
Change Get/PutCard16 to Get/PutCard32, because the former are not aligned on the wire. Change VAL[CARD32] to VAL[CARDINAL[CARD32]].