<<>> <> <> <> <> <<>> <> <<>> 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]; }; }. <> <> <> <> <> <> <> <> <>