DIRECTORY ThParty, ThPartySunRPC, ThPartySunRPCServer, Thrush, ThrushSunRPC, ThrushSunRPCConvert; ThPartySunRPCToThParty: CEDAR PROGRAM IMPORTS ThParty, ThrushSunRPCConvert EXPORTS ThPartySunRPCServer ~ { OPEN ThPartySunRPC, ThPartySunRPCServer, ThrushSunRPCConvert; CreateConversation: PUBLIC CreateConversationType ~ { thNB: Thrush.NB; thConvEvent: Thrush.ConvEvent; [thNB, thConvEvent] _ ThParty.CreateConversation[shhh: Thrush.none, credentials: SrToCredentials[credentials], state: SrToState[state], reason: SrToATOM[reason], comment: SrToROPE[comment], convAttributes: SrToAttributes[convAttributes], partyAttributes: SrToAttributes[partyAttributes], checkConflict: checkConflict]; nb _ ATOMToSr[thNB]; convEvent _ ConvEventToSr[thConvEvent]; }; Alert: PUBLIC AlertType ~ { thNB: Thrush.NB; thNB _ ThParty.Alert[shhh: Thrush.none, credentials: SrToCredentials[credentials], calledPartyID: calledPartyID, comment: SrToROPE[comment], convAttributes: SrToAttributes[convAttributes], partyAttributes: SrToAttributes[partyAttributes] ]; nb _ ATOMToSr[thNB]; }; Advance: PUBLIC AdvanceType ~ { thNB: Thrush.NB; thConvEvent: Thrush.ConvEvent; [thNB, thConvEvent] _ ThParty.Advance[shhh: Thrush.none, credentials: SrToCredentials[credentials], state: SrToState[state], reportToAll: reportToAll, reason: SrToATOM[reason], comment: SrToROPE[comment], convAttributes: SrToAttributes[convAttributes], partyAttributes: SrToAttributes[partyAttributes], bilateral: bilateral, checkConflict: checkConflict]; nb _ ATOMToSr[thNB]; convEvent _ ConvEventToSr[thConvEvent]; }; ReportAction: PUBLIC ReportActionType ~ { thNB: Thrush.NB; [thNB, numReportsIssued] _ ThParty.ReportAction[shhh: Thrush.none, report: SrToActionReport[report], reportToAll: reportToAll, selfOnCompletion: selfOnCompletion]; nb _ ATOMToSr[thNB]; }; GetConversationInfo: PUBLIC GetConversationInfoType ~ { thNB: Thrush.NB; thCInfo: ThParty.ConversationInfo; [thNB, thCInfo] _ ThParty.GetConversationInfo[Thrush.none, SrToConvID[convID] ]; nb _ ATOMToSr[thNB]; cInfo _ ConversationInfoToSr[thCInfo]; }; RegisterConversation: PUBLIC RegisterConversationType ~ { thNB: Thrush.NB; thNB _ ThParty.RegisterConversation[shhh: Thrush.none, credentials: SrToCredentials[credentials], name: SrToROPE[name], convType: SrToConvType[convType], convAttributes: SrToAttributes[convAttributes], accessList: SrToAccessList[accessList] ]; nb _ ATOMToSr[thNB]; }; GetConversationFromName: PUBLIC GetConversationFromNameType ~ { thNB: Thrush.NB; thCInfo: ThParty.ConversationInfo; [thNB, thCInfo] _ ThParty.GetConversationFromName[shhh: Thrush.none, partyID: partyID, name: SrToROPE[name] ]; nb _ ATOMToSr[thNB]; cInfo _ ConversationInfoToSr[thCInfo]; }; EnumerateNamedConversations: PUBLIC EnumerateNamedConversationsType ~ { thNB: Thrush.NB; thCandidates: LIST OF ThParty.ConversationInfo; [thNB, thCandidates] _ ThParty.EnumerateNamedConversations[shhh: Thrush.none, partyID: partyID]; nb _ ATOMToSr[thNB]; candidates _ CandidateListToSr[thCandidates]; }; GetPartyInfo: PUBLIC GetPartyInfoType ~ { thNB: Thrush.NB; thPInfo: ThParty.PartyInfo; [thNB, thPInfo] _ ThParty.GetPartyInfo[shh: Thrush.none, credentials: SrToCredentials[credentials], nameReq: SrToATOM[nameReq], allParties: allParties ]; nb _ ATOMToSr[thNB]; pInfo _ PartyInfoToSr[thPInfo]; }; DescribeParty: PUBLIC DescribePartyType ~ { thNB: Thrush.NB; thDesc: Thrush.ROPE; thType: Thrush.PartyType; thPartner: Thrush.PartyID; thVisitee: Thrush.PartyID; thVisitors: LIST OF Thrush.PartyID; [thNB, thDesc, thType, thPartner, thVisitee, thVisitors] _ ThParty.DescribeParty[partyID: partyID, nameReq: SrToATOM[nameReq] ]; RETURN[nb: ATOMToSr[thNB], description: ROPEToSr[thDesc], type: ATOMToSr[thType], partner: thPartner, visitee: thVisitee, visitors: VisitorListToSr[thVisitors] ]; }; AddAttributes: PUBLIC AddAttributesType ~ { thNB: Thrush.NB; thNB _ ThParty.AddAttributes[credentials: SrToCredentials[credentials], convAttributes: SrToAttributes[convAttributes], partyAttributes: SrToAttributes[partyAttributes] ]; nb _ ATOMToSr[thNB]; }; RegisterServiceInterface: PUBLIC RegisterServiceInterfaceType ~ { thNB: Thrush.NB; thInterfaceSpec: Thrush.InterfaceSpec; [thNB, thInterfaceSpec] _ ThParty.RegisterServiceInterface[shhh: Thrush.none, credentials: SrToCredentials[credentials], interfaceSpecPattern: SrToInterfaceSpec[interfaceSpecPattern] ]; nb _ ATOMToSr[thNB]; interfaceSpec _ InterfaceSpecToSr[thInterfaceSpec]; }; LookupServiceInterface: PUBLIC LookupServiceInterfaceType ~ { thNB: Thrush.NB; thInterfaceSpec: Thrush.InterfaceSpec; [thNB, thInterfaceSpec] _ ThParty.LookupServiceInterface[shhh: Thrush.none, credentials: SrToCredentials[credentials], serviceParty: serviceParty, type: type ]; nb _ ATOMToSr[thNB]; interfaceSpec _ InterfaceSpecToSr[thInterfaceSpec]; }; RegisterKey: PUBLIC RegisterKeyType ~ { thNB: Thrush.NB; thKeyIndex: [0..17B]; [thNB, thKeyIndex] _ ThParty.RegisterKey[shh: Thrush.none, credentials: SrToCredentials[credentials], key: SrToEncryptionKey[key], reportNewKeys: reportNewKeys ]; nb _ ATOMToSr[thNB]; keyIndex _ thKeyIndex; }; GetKeyTable: PUBLIC GetKeyTableType ~ { thNB: Thrush.NB; thKeyTable: Thrush.KeyTable; [thNB, thKeyTable] _ ThParty.GetKeyTable[shh: Thrush.none, credentials: SrToCredentials[credentials] ]; nb _ ATOMToSr[thNB]; keyTable _ KeyTableToSr[thKeyTable]; }; UnregisterKey: PUBLIC UnregisterKeyType ~ { thNB: Thrush.NB; thNB _ ThParty.UnregisterKey[shh: Thrush.none, credentials: SrToCredentials[credentials], key: SrToEncryptionKey[key] ]; nb _ ATOMToSr[thNB]; }; GetParty: PUBLIC GetPartyType ~ { thNB: Thrush.NB; thNewPartyID: Thrush.PartyID; [thNB, thNewPartyID] _ ThParty.GetParty[shh: Thrush.none, partyID: partyID, rName: SrToROPE[rName], type: SrToATOM[type] ]; nb _ ATOMToSr[thNB]; newPartyID _ thNewPartyID; }; GetPartyFromNumber: PUBLIC GetPartyFromNumberType ~ { thNB: Thrush.NB; thNewPartyID: Thrush.PartyID; [thNB, thNewPartyID] _ ThParty.GetPartyFromNumber[shh: Thrush.none, partyID: partyID, phoneNumber: SrToROPE[phoneNumber], description: SrToROPE[description] ]; nb _ ATOMToSr[thNB]; newPartyID _ thNewPartyID; }; GetPartyFromFeepNum: PUBLIC GetPartyFromFeepNumType ~ { thNB: Thrush.NB; thNewPartyID: Thrush.PartyID; [thNB, thNewPartyID] _ ThParty.GetPartyFromFeepNum[shh: Thrush.none, partyID: partyID, feepNum: SrToROPE[feepNum] ]; nb _ ATOMToSr[thNB]; newPartyID _ thNewPartyID; }; GetCurrentParty: PUBLIC GetCurrentPartyType ~ { thNB: Thrush.NB; thPartyID: Thrush.PartyID; [thNB, thPartyID] _ ThParty.GetCurrentParty[shh: Thrush.none, smartsID: smartsID ]; nb _ ATOMToSr[thNB]; partyID _ thPartyID; }; ReleaseParty: PUBLIC ReleasePartyType ~ { thNB: Thrush.NB; thNB _ ThParty.ReleaseParty[shh: Thrush.none, partyID: partyID, targetPartyID: targetPartyID ]; nb _ ATOMToSr[thNB]; }; GetNumbersForRName: PUBLIC GetNumbersForRNameType ~ { [fullRName, number, homeNumber] _ ThParty.GetNumbersForRName[ shh: Thrush.none, rName: SrToROPE[rName] ]; RETURN[fullRName: ROPEToSr[fullRName], number: ROPEToSr[number], homeNumber: ROPEToSr[homeNumber] ]; }; Register: PUBLIC RegisterType ~ { thNB: Thrush.NB; thCredentials: Thrush.Credentials; [thNB, thCredentials] _ ThParty.Register[shh: Thrush.none, rName: SrToROPE[rName],type: SrToATOM[type], clonePartyID: clonePartyID, interface: SrToInterfaceName[interface], properties: SrToSmartsProperties[properties] ]; nb _ ATOMToSr[thNB]; credentials _ CredentialsToSr[thCredentials]; }; CheckIn: PUBLIC CheckInType ~ { thNB: Thrush.NB; thNB _ ThParty.CheckIn[shh: Thrush.none, credentials: SrToCredentials[credentials] ]; nb _ ATOMToSr[thNB]; }; Deregister: PUBLIC DeregisterType ~ { thNB: Thrush.NB; thNB _ ThParty.Deregister[shh: Thrush.none, smartsID: smartsID ]; nb _ ATOMToSr[thNB]; }; Enable: PUBLIC EnableType ~ { thNB: Thrush.NB; thNB _ ThParty.Enable[shh: Thrush.none, smartsID: smartsID ]; nb _ ATOMToSr[thNB]; }; Disable: PUBLIC DisableType ~ { thNB: Thrush.NB; thNB _ ThParty.Disable[shh: Thrush.none, smartsID: smartsID ]; nb _ ATOMToSr[thNB]; }; Visit: PUBLIC VisitType ~ { thNB: Thrush.NB; thNB _ ThParty.Visit[shh: Thrush.none, hostPartyID: hostPartyID, guestPartyID: guestPartyID, guestPassword: SrToPassword[guestPassword] ]; nb _ ATOMToSr[thNB]; }; Unvisit: PUBLIC UnvisitType ~ { thNB: Thrush.NB; thNB _ ThParty.Unvisit[shh: Thrush.none, hostPartyID: hostPartyID, guestPartyID: guestPartyID, guestPassword: SrToPassword[guestPassword] ]; nb _ ATOMToSr[thNB]; }; UnvisitSelf: PUBLIC UnvisitSelfType ~ { thNB: Thrush.NB; thNB _ ThParty.UnvisitSelf[shh: Thrush.none, guestPartyID: guestPartyID]; nb _ ATOMToSr[thNB]; }; }. $ ThPartySunRPCToThParty.mesa Copyright Σ 1990 by Xerox Corporation. All rights reserved. Polle Zellweger (PTZ) October 29, 1990 3:34:01 pm PST Pier, May 24, 1990 12:06:58 pm PDT Exports ThPartySunRPCServer, which is called by ThPartySunRPCServerStub, and calls the real ThParty routines. Conversation Management Enumerations, registrations, queries Named conversations Party information Service action registration, lookup. See also ReportAction, above. Encryption key registration. Names to Parties, Numbers to Parties Information about people and parties Party and Smarts creation, initialization Polle Zellweger (PTZ) April 30, 1990 3:56:17 pm PDT changes to: DIRECTORY, ThPartySunRPCToThParty, IMPORTS, EXPORTS, ~, GetConversationInfo, ConversationInfoToSr, AddressToSr, AttributesToSr Pier, May 10, 1990 9:58:19 am PDT moved data conversion routines to ThrushSunRPCConvert Polle Zellweger (PTZ) May 11, 1990 4:08:39 pm PDT Atom.GetPName couldn't handle NIL, so make a new conversion routine. Polle Zellweger (PTZ) October 29, 1990 3:32:25 pm PST Allow detection of NIL ropes across a SunRPC connection. changes to: CreateConversation, Alert, Advance, RegisterConversation, GetConversationFromName, DescribeParty, GetParty, GetPartyFromNumber, GetPartyFromFeepNum, GetNumbersForRName, Register Κ•NewlineDelimiter ™codešœ™K™Kšœ˜K˜K˜—šŸœœ˜Kšœ œ˜KšœŸœv˜ŠKšœ˜K˜K˜—šŸœœ˜Kšœ œ˜KšœŸœv˜ŒKšœ˜K˜K˜—šŸ œœ˜'Kšœ œ˜KšœŸ œ/˜IKšœ˜K˜——K˜Kšœ˜™3Kšœ Οr~™Š—™!Kšœ5™5—™1K™D—™5K™8Kšœ ‘±™½——…—!–.Θ