BluejayRegisterImpl.mesa
Copyright © 1985, 1986 by Xerox Corporation. All rights reserved.
Last modified by D. Swinehart, June 19, 1986 7:32:29 am PDT
Doug Terry, November 18, 1986 3:13:53 pm PST
DIRECTORY
IO,
NamesRPC USING [ StartConversation ],
RecordingServiceRegister,
RPC   USING [ AuthenticateFailed, EncryptionKey, ImportFailed, VersionRange ],
ThParty  USING [ Register ],
ThPartyRpcControl,
Thrush  USING [ Credentials, NB, nullID, PartyID, ROPE, SmartsID, unencrypted ],
ThSmarts,
ThSmartsRpcControl USING [ ExportInterface, InterfaceName ],
ThVersions USING [ GetThrushVR, JayVersion, JayVR ],
VoiceUtils  USING [ CurrentPasskey, OwnNetAddress, ReportFR ]
;
BluejayRegisterImpl: CEDAR PROGRAM
IMPORTS RecordingServiceRegister, IO, NamesRPC, RPC, ThParty, ThPartyRpcControl, ThSmartsRpcControl, ThVersions, VoiceUtils
EXPORTS RecordingServiceRegister = {
OPEN IO;
BluejayRegister: PUBLIC PROC [bluejayInstance, thrushInstance, serverPassword: Thrush.ROPE]
RETURNS [nb: Thrush.NB, credentials: Thrush.Credentials] = {
myName: ThSmartsRpcControl.InterfaceName ← [
type: "ThSmarts.Lark",
instance: bluejayInstance,
version: ThVersions.JayVR];
serverPasskey: RPC.EncryptionKey ← VoiceUtils.CurrentPasskey[serverPassword];
thVR: RPC.VersionRange = ThVersions.GetThrushVR;
Export ThSmarts Interface
myName ← [
type: "ThSmarts.Lark",
instance: bluejayInstance,
version: ThVersions.JayVR];
ThSmartsRpcControl.ExportInterface[
interfaceName: myName,
user: bluejayInstance,
password: serverPasskey];
RecordingServiceRegister.jayShh ← IF NOT RecordingServiceRegister.encryptionRequested THEN Thrush.unencrypted
ELSE NamesRPC.StartConversation [
caller: bluejayInstance,
callee: thrushInstance --rName--,
key: serverPasskey,
level: --<<ECB>>--CBCCheck !
RPC.AuthenticateFailed=>GOTO InitFailed];
Import ThParty Interface
ThPartyRpcControl.ImportInterface[
interfaceName: [type: "ThParty.Lark", instance: thrushInstance, version: thVR] !
RPC.ImportFailed=> IF why=wrongVersion THEN {
VoiceUtils.ReportFR["Bluejay version %d too old; import failed",
$Bluejay, NIL, card[ThVersions.JayVersion]];
GOTO InitFailed;
}];
RecordingServiceRegister.interfaceIsImported←TRUE;
Register First Jay Party.
[nb, credentials] ← ThParty.Register[
shh: RecordingServiceRegister.jayShh,
rName: "recording",
type: $service,
interface: myName,
properties: [role: $voiceTerminal, netAddress: VoiceUtils.OwnNetAddress[]]
];
IF nb#$success THEN GOTO InitFailed;
EXITS
InitFailed => RecordingServiceRegister.interfaceIsImported←FALSE;
};
}.
Swinehart, May 15, 1985 10:28:41 am PDT
Cedar 6.0
changes to: BluejayRegisterImpl
Swinehart, May 22, 1985 12:05:46 pm PDT
recording => service, Jay => Recording
changes to: BluejayRegisterImpl
Swinehart, May 17, 1986 3:30:10 pm PDT
Cedar 6.1
changes to: DIRECTORY, BluejayRegisterImpl
Swinehart, June 4, 1986 0:23:02 am PDT
New Thrush design
changes to: DIRECTORY, BluejayRegisterImpl
Doug Terry, November 18, 1986 3:11:03 pm PST
Changed to export to RecordingServiceRegister instead of BluejaySmarts.
changes to: DIRECTORY, BluejayRegisterImpl