DIRECTORY SunRPC, ThrushSunRPC, SRPCCalls, ThPartySunRPC, ThPartySunRPCClient; ThPartySunRPCClientStub: CEDAR PROGRAM IMPORTS SunRPC, SRPCCalls EXPORTS ThPartySunRPCClient ~ { OPEN ThPartySunRPC, SRPCCalls; Handle: TYPE ~ SunRPC.Handle; GetError: SunRPCGetErrorProc ~ { }; 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]; }; 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]; }; }... Œ ThPartySunRPCClientStub.mesa Copyright Σ 1989, 1990, 1992 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 Errors Error: PUBLIC ErrorType ~ CODE; GetErrorProc 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 -- Unmarshal / Marshal Procs -- 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]]. Κ•NewlineDelimiter –(cedarcode) style™šœ™Jšœ Οeœ=™HJšœ)™)Jšœ;™;Jšœ7™7Icode™1K™!K™,K™—šΟk ˜ Kšœ˜K˜ K˜ K˜K˜—K˜šΠlnœžœž˜&Kšžœ˜Kšžœ˜Kšžœ˜—˜Kšœžœ˜K˜—šœ™K˜JšΟnœžœ žœ™K˜—šœ ™ J™š œ˜ J™Jšœžœ™ Jšœ žœ™Jšœ™Jšœ ™ Jšžœžœžœžœ™@šœ˜K˜———šœ™K˜š œžœ˜=š œ˜Kšœ˜Kšœ)˜)Kšœ*˜*Kšœ(˜(Kšœžœ˜,Kšœ)˜)Kšœ"˜"Kšœ˜K˜—š  œ˜$K˜K˜5K˜9K˜@K˜?K˜5K˜7K˜6K˜6K˜6K˜6K˜.K˜0K˜K˜—Kšœ[˜[K˜—K˜š œžœ˜!š œ˜Kšœ˜Kšœ˜Kšœ˜Kšœ"˜"Kšœ"˜"Kšœ&˜&Kšœ-˜-Kšœ,˜,Kšœ#˜#Kšœ3˜3Kšœ5˜5Kšœ4˜4Kšœ4˜4Kšœ4˜4Kšœ4˜4K˜—š  œ˜$K˜K˜*K˜+K˜)Kšœžœžœ˜7K˜*K˜K˜—Kšœ[˜[K˜—K˜š œžœ˜š œ˜Kšœ˜Kšœ˜K˜—š  œ˜$K˜K˜K˜—Kšœ[˜[K˜—K˜š  œžœ˜+š œ˜Kšœ˜Kšœ˜K˜—š  œ˜$K˜K˜ K˜K˜K˜K˜K˜K˜—KšœZ˜ZK˜—K˜š œžœ˜š œ˜Kšœ˜Kšœ!˜!Kšœ"˜"šžœžœžœž˜Kšœ'˜'Kšžœ˜—K˜—š  œ˜$K˜K˜K˜—Kšœ[˜[K˜—K˜š œžœ˜5š œ˜Kšœ˜Kšœ˜K˜—š  œ˜$K˜K˜K˜K˜K˜—Kšœ[˜[K˜—K˜š  œžœ˜+š œ˜Kšœ˜Kšœ)˜)Kšœ*˜*Kšœ(˜(Kšœžœ˜,Kšœ)˜)šžœžœžœž˜Kšœ˜Kšžœ˜—K˜—š  œ˜$K˜K˜K˜—Kšœ[˜[K˜—K˜š œžœ˜š œ˜Kšœ˜Kšœ)˜)Kšœ*˜*Kšœ(˜(Kšœžœ˜,Kšœ)˜)K˜—š  œ˜$K˜K˜K˜—Kšœ[˜[K˜—K˜š œžœ˜5š œ˜Kšœ˜Kšœ)˜)Kšœ*˜*Kšœ(˜(Kšœžœ˜,Kšœ)˜)Kšœžœ ˜ Kšœ˜Kšœ˜K˜K˜Kšœ ˜ K˜—š  œ˜$K˜K˜-K˜.K˜,Kšœžœžœ˜:K˜-K˜.K˜/K˜-Kšœžœžœ˜;K˜.K˜%K˜%K˜&K˜K˜—KšœZ˜ZK˜—K˜š  œžœ˜'š œ˜Kšœ˜Kšœ"˜"K˜—š  œ˜$K˜K˜K˜—Kšœ[˜[K˜—K˜š œžœ˜7š œ˜Kšœ˜Kšœ˜K˜—š  œ˜$K˜K˜#K˜'K˜&K˜$K˜'K˜3K˜5K˜4K˜4K˜4K˜4Kšœžœžœ˜4K˜'K˜&K˜!K˜&K˜(K˜K˜—KšœZ˜ZK˜—K˜š  œžœ˜'š œ˜Kšœ˜Kšœ)˜)Kšœ*˜*Kšœ(˜(Kšœžœ˜,Kšœ)˜)K˜—š  œ˜$K˜K˜K˜K˜—Kšœ[˜[K˜—K˜š œžœ˜7š œ˜Kšœ˜Kšœ˜Kšœ˜K˜—š  œ˜$K˜K˜!K˜K˜—Kšœ[˜[K˜—K˜š  œžœ˜)š œ˜Kšœ˜Kšœ)˜)Kšœ*˜*Kšœ(˜(Kšœžœ˜,Kšœ)˜)Kšœ*˜*Kšœ+˜+Kšœ)˜)Kšœžœ˜-Kšœ*˜*Kšœ,˜,Kšœ%˜%Kšœ&˜&Kšœ%˜%Kšœ%˜%Kšœ˜Kšœ#˜#K˜—š  œ˜$K˜K˜'K˜K˜—KšœZ˜ZK˜—K˜š œžœ˜!š œ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜K˜—š  œ˜$K˜K˜!K˜K˜—Kšœ[˜[K˜—K˜š  œžœ˜)š œ˜Kšœ˜Kšœ)˜)Kšœ*˜*Kšœ(˜(Kšœžœ˜,Kšœ)˜)Kšœ˜Kšœ˜K˜—š  œ˜$K˜K˜'K˜4K˜8K˜7K˜5K˜8K˜DK˜FK˜EK˜EK˜EK˜EKšœ"žœžœ˜EK˜8K˜7K˜2K˜7K˜9K˜#K˜$K˜(K˜*K˜'K˜)K˜K˜K˜—KšœZ˜ZK˜—K˜š œžœ˜š œ˜Kšœ˜Kšœ)˜)Kšœ*˜*Kšœ(˜(Kšœžœ˜,Kšœ)˜)Kšœžœ ˜ Kšœ˜Kšœ˜Kšœ˜K˜K˜Kšœ˜Kšœ ˜ K˜—š  œ˜$K˜K˜-K˜.K˜,Kšœžœžœ˜:K˜-K˜.K˜/K˜-Kšœžœžœ˜;K˜.K˜%K˜%K˜&K˜K˜—KšœZ˜ZK˜—K˜š œžœ˜š œ˜Kšœ˜Kšœ)˜)Kšœ*˜*Kšœ(˜(Kšœžœ˜,Kšœ)˜)Kšœ#˜#Kšœ˜K˜K˜K˜—š  œ˜$K˜K˜K˜—KšœZ˜ZK˜—K˜š œžœ˜š œ˜Kšœ˜Kšœ!˜!Kšœ"˜"šžœžœžœž˜Kšœ'˜'Kšžœ˜—K˜—š  œ˜$K˜K˜K˜—Kšœ[˜[K˜—K˜š œžœ˜š œ˜Kšœ˜Kšœ˜K˜—š  œ˜$K˜K˜K˜—Kšœ[˜[K˜—K˜š œžœ˜/š œ˜Kšœ˜Kšœ˜K˜—š  œ˜$K˜K˜K˜K˜—Kšœ[˜[K˜—K˜š  œžœ˜)š œ˜Kšœ˜Kšœ˜Kšœ#˜#K˜—š  œ˜$K˜K˜K˜—Kšœ[˜[K˜—K˜š œžœ˜5š œ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜K˜—š  œ˜$K˜K˜!K˜K˜—Kšœ[˜[K˜—K˜š œžœ$˜Gš œ˜Kšœ˜Kšœ˜K˜—š  œ˜$K˜K˜K˜K˜—KšœZ˜ZK˜—K˜š œžœ˜9š œ˜Kšœ˜Kšœ)˜)Kšœ*˜*Kšœ(˜(Kšœžœ˜,Kšœ)˜)Kšœ˜Kšœžœ ˜#K˜K˜K˜—š  œ˜$K˜K˜K˜—KšœZ˜ZK˜—K˜š  œžœ˜+š œ˜Kšœ)˜)Kšœ*˜*Kšœ(˜(Kšœžœ˜,Kšœ)˜)K˜K˜K˜—š  œ˜$K˜K˜K˜—Kšœ[˜[K˜—K˜š œžœ!˜Aš œ˜Kšœ˜Kšœ)˜)Kšœ*˜*Kšœ(˜(Kšœžœ˜,Kšœ)˜)Kšœ;˜;Kšœ?˜?KšœF˜FKšœE˜EKšœ;˜;Kšœ=˜=Kšœ<˜˜>—K˜K˜—K˜—K˜™0Kšœ Οr™#—™0KšœM™MKšœ ‘œ‘ œ‘™T—™1Kš œ_žœžœžœžœžœ™„——…—` x9