September 18, 1990 7:05:05 am PDT, D. Swinehart Comments on Voice rope client-side implementation: The management of conversations and connections is seriously limited (a euphemism for brain-damaged). For instance, I don't think it would be possible to have two simultaneous connections to the voice file server, one on hold and one active. Let alone two playing simultaneously, not a ridiculous idea. The code knows of just one at a time, which is for some reason hanging off the property list of an atom. I'm not going to fix it now, but it will severely restrict us. That's wrong. The property list is specific to each conversation. I guess this is OK. Also, there don't appear to be ENTRY procedures where I'd expect them. But that's a problem, anyway -- at how many levels should there be ENTRYs? If the location of the voice server ever changes during one instance of Finch, the registration that is locked into the Voice Rope code will not recover. Once imported, it remains imported. It will probably recover when the serer is rolled around or when contact is otherwise lost and regained, though, based on the underlying recovery mechanisms. If ever there are two or more different providers of voice rope services, forget it in the current setup. Failures in VoiceRope calls don't terminate the conversation; maybe they should. If ever a failure occurs that is not recoverable, such that the underlying SHandle.enabled is cleared, the current Voice rope code, and any others modeled after it, will not recover during the session. But maybe that's all right, since it represents a condition we're unprepared for anyway? September 15, 1990 1:25:50 pm PDT, D. Swinehart Recent modifications to the interface between Finch and ThParty client stubs (see also /Intervoice/SunRPCNotes.tioga): FinchRegisterTestImpl, which was created by PTZ to contain the remnants of ThPartyRpcClientImpl that were too Finch-specific to be included in ThPartyToThPartySunRPC, has been institutionalized as FinchRegisterImpl. The cute trick for sharing global frame monitor locks results in the creation of FinchSmartsMonitorImpl. This will need to change before we can port to PCedar. The Finch startup and shutdown procedures have been coalesced a bit and made reasonably robust. ENTRY procedures have been fairly carefully placed around everything. Some values were moved from FinchSmarts.pd to FinchSmarts.info, and some eliminated in favor of direct access to similar values stored in the stub data structures. ReportState and ReportProblem calls from the stuboid are used both to update state at the FinchSmarts level and to pass the information on to FinchSmarts clients, as before (via RecSS, which reports to lists of registered clients). RecSS can handle either kind of report, through clever but wasteful use of default values for unchanged items. Also, registration and enablement information obtained from Thrush via FinchSmarts.CheckIn is reported down to the stubs by the Register code. FinchSmarts has been changed to accommodate the changes described above, and to eliminate some old obsolete stuff (Info was a MONITORED RECORD, for example!) As of this writing, ThSmarts has not been improved, timeouts have not been tuned, and none of the other services are included. I'll do ThSmarts, then do the services beginning with the simple ones. No recent changes by Harrick for conferences have been incorporated. Polle may also have made some parallel changes since I grabbed my copies. Ugh. AMEvents USING [ CallDebugger ], DESFace USING [ Key, nullKey ], GVBasics USING [ Password ], Pup USING [ Address, nullAddress, nullSocket ], PupName USING [ NameLookup ], RPC USING [ Conversation, EncryptionKey, InterfaceName, unencrypted, ShortROPE, MakeKey ] ThSmartsRpcControl.InterfaceRecord FinchSmartsImpl GVBasics USING [ MakeKey, Password ], => XNSLookup?? check Peanut init code LarkFeepRpcControl USING [ Feep, ImportNewInterface ], Nice, PupSocket USING [ GetUniqueID ], RPC.EncryptionKey CallFailed, EncryptionKey, ImportFailed, TimeoutEnable, VersionRange VoiceUtils USING [ CurrentPasskey, CurrentRName, MakeRName, Problem, ProblemFR, Registrize, Report, ReportFR ] FinchToolImpl Booting USING [ CheckpointProc, RollbackProc, RegisterProcs ], FinchSynthesizer USING [ InitializeFinchSynthesizer, StopSpeech, TextToSpeech ], Nice USING [ View ], Synthesizer USING [ SynthSpecBody, SynthSpec ], Thrush USING [ ActionReport, ConvEvent, ConvEventBody, ConversationID, NB, notReallyInConv, nullConvID, Reason, StateInConv ], VoiceUtils USING [ CurrentRName, Report, ReportFR, RegisterWhereToReport, WhereProc ] Thrush DESFace USING [ Key, nullKey ], GVBasics USING [ Password ], Pup USING [ Address, nullAddress ], RPC USING [ Conversation, InterfaceName, unencrypted ] ThParty GVBasics USING [ Password ], RPC USING [ InterfaceName, ShortROPE ], ThSmartsRpcControl.InterfaceRecord VoiceUtils GVBasics USING [ Password ], RPC USING [ EncryptionKey ], Pup USING [ Address, nullAddress ] VoiceUtilsImpl AMEvents USING [ CallDebugger ], Pup USING [ nullSocket ], PupName USING [ NameLookup ], RPC USING [ MakeKey, EncryptionKey ], UserCredentials USING [ Get ], From Finch.df Imports [CedarChest7.0]VoiceUtils.df Of ~= Using [VoiceUtils.bcd, NameDB.bcd, NameDBBackDoor.bcd, NamesGVAuthImpl.bcd, NamesRPC.bcd, Nice.bcd, NiceImpl.bcd, VBagImpl.bcd] Imports [Cedar7.0]AMTypes.df Of ~= Using [AMBridge.bcd, AMTypes.bcd] Imports [Cedar7.0]GrapevineUser.df Of ~= Using [GVBasics.bcd] Imports [Cedar7.0]RPCRuntime.df Of ~= Using [RPC.bcd, DESDummy.bcd, LupineRuntime.bcd, RPCLupine.bcd] Machine names Can compute a Pup-like address #net#host from an Arpa address [a.b.c.d] via: 1. net _ a+b+c; -- overflows; no collision host _ d; 2. net _ b+c; -- overflows; no collision host _ d; 3. net _ c; -- no overflow or collision host _ d; % qfind NetAddressFromRope *impl.mesa []<>Users>PolleZ.pa>sunfinch>NameDBImpl.mesa!1 1027: VoiceUtils USING [ CurrentRName, CurrentPasskey, NetAddress, NetAddressFromRope, nullNetAddress, RnameToRspec ] 7235: RETURN[VoiceUtils.NetAddressFromRope[netAddressAsRope]]; []<>Users>PolleZ.pa>SunFinch>ThPartyClientImpl.mesa!2 635: VoiceUtils USING [ NetAddress, NetAddressFromRope, OwnNetAddress, Problem, Report ] 16673: hostHint _ VoiceUtils.NetAddressFromRope[ NameDB.GetAttribute[pd.interfaceName.instance, $connect]]; e.g., NameDB.GetAttribute["Strowger.Lark", $connect] = "173#270#" []<>Users>PolleZ.pa>sunfinch>VoiceUtilsImpl.mesa!1 10541: netAddress _ NetAddressFromRope[netAddressRope: "ME"]; 10587: NetAddressFromRope: PUBLIC PROC[netAddressRope: ROPE] 17 files, 6 matches, 8.1832 seconds % qfind HostFromInstance *impl.mesa []<>Users>PolleZ.pa>sunfinch>NameDBImpl.mesa!1 7016: HostFromInstance: PUBLIC PROC[instance: Rope.ROPE] 17 files, 1 matches, 5.175456 seconds NameDB access need to load LoganBerrySunStub, then can refer to items via "/Growler-SUN///Strowger/Whitepages.df" etc User credentials % _ UserCredentials.GetIdentity[] ^[next: NIL, conversations: 6771642B^, name: [organization: "Xerox", domain: "PARC", object: "PolleZ"], password: "gl25586", valid: TRUE, key: (4)[143776B (51198), 147121B (52817), 32224B (13460), 111155B (37485)]] % _ XNSAuth.GetIdentityDetails[&] [name: [organization: "Xerox", domain: "PARC", object: "PolleZ"], password: "gl25586", credentialsType: strong] % _ XNSAuth.StrongKeyFromPassword["gl25586"] (4)[143776B (51198), 147121B (52817), 32224B (13460), 111155B (37485)] % _ XNSAuth.SimpleKeyFromPassword["gl25586"] 170564B (61812) % _ GVBasics.MakeKey["gl25586"] (4)[147330B (52952), 62152B (25706), 65160B (27248), 66000B (27648)] Willie-Sue says that P users may not log in with XNS credentials! Also, PCedar UserCredentials.Get[] returns Unix name and password (encrypted?) DFPorter Warning: XNSStubsImpl.mob is defined in both [PCedar2.0]XNSStubs-PCR.df and [PCedar2.0]XNSSupport-PCR.df Warning: XNSStubsImpl.c2c.c is defined in both [PCedar2.0]XNSStubs-PCR.df and [PCedar2.0]XNSSupport-PCR.df Warning: XNSStubsImpl.mesa is defined in both [PCedar2.0]XNSStubs-Source.df and [PCedar2.0]XNSSupport-Source.df Warning: sun4>XNSStubsImpl.c2c.o is defined in both [PCedar2.0]XNSStubs-Sun4.df and [PCedar2.0]XNSSupport-Sun4.df Warning: ThPartyRpcClientImpl.c2c.o is not defined by Ported.df; assuming [PCedar2.0]InterVoice-Sun3.df Warning: ThPartyRpcClientImpl.c2c.o is not defined by Ported.df; assuming [PCedar2.0]InterVoice-Sun4.df Warning: AMTypes.mob is not defined by Ported.df; assuming [PCedar2.0]AMTypes-PCR.df Warning: RefTab.mob is not defined by Ported.df; assuming [PCedar2.0]BootPackages-PCR.df Warning: Booting.mob is not defined by Ported.df; assuming [PCedar2.0]File-PCR.df Warning: GVBasics.mob is not defined by Ported.df; assuming [PCedar2.0]GrapevineUser-PCR.df Warning: PrincOps.mob is not defined by Ported.df; assuming [PCedar2.0]MesaRuntime-PCR.df Warning: PrincOpsUtils.mob is not defined by Ported.df; assuming [PCedar2.0]MesaRuntime-PCR.df Warning: PupSocket.mob is not defined by Ported.df; assuming [PCedar2.0]Pup-PCR.df Warning: RPC.mob is not defined by Ported.df; assuming [PCedar2.0]RPCRuntime-PCR.df Warning: DESDummy.mob is not defined by Ported.df; assuming [PCedar2.0]RPCRuntime-PCR.df Warning: LupineRuntime.mob is not defined by Ported.df; assuming [PCedar2.0]RPCRuntime-PCR.df Warning: RPCLupine.mob is not defined by Ported.df; assuming [PCedar2.0]RPCRuntime-PCR.df Warning: UserProfile.mob is not defined by Ported.df; assuming [PCedar2.0]UserProfile-PCR.df Warning: ThParty.mob is not defined by Ported.df; assuming [PCedar2.0]InterVoice-PCR.df Warning: Thrush.mob is not defined by Ported.df; assuming [PCedar2.0]InterVoice-PCR.df Warning: ThSmarts.mob is not defined by Ported.df; assuming [PCedar2.0]InterVoice-PCR.df Warning: ThVersions.mob is not defined by Ported.df; assuming [PCedar2.0]InterVoice-PCR.df Warning: ThVersionsImpl.mob is not defined by Ported.df; assuming [PCedar2.0]InterVoice-PCR.df Warning: IV.mob is not defined by Ported.df; assuming [PCedar2.0]InterVoice-PCR.df Warning: ThSmartsSunExport.mob is not defined by Ported.df; assuming [PCedar2.0]InterVoice-PCR.df Warning: ThPartyToThPartySunRPC.mob is not defined by Ported.df; assuming [PCedar2.0]InterVoice-PCR.df Warning: Synthesizer.mob is not defined by Ported.df; assuming [PCedar2.0]InterVoice-PCR.df Warning: SynthesizerImpl.mob is not defined by Ported.df; assuming [PCedar2.0]InterVoice-PCR.df Warning: VoiceRopeServer.mob is not defined by Ported.df; assuming [PCedar2.0]InterVoice-PCR.df Warning: LarkFeep.mob is not defined by Ported.df; assuming [PCedar2.0]InterVoice-PCR.df Warning: LarkTTY.mob is not defined by Ported.df; assuming [PCedar2.0]InterVoice-PCR.df Warning: loganberry.mob is not defined by Ported.df; assuming [PCedar2.0]LoganBerry-PCR.df Warning: Tempus.mob is not defined by Ported.df; assuming [PCedar2.0]Tempus-PCR.df Warning: ViewRec.mob is not defined by Ported.df; assuming [PCedar2.0]ViewRec-PCR.df Warning: VoiceUtils.mob is not defined by Ported.df; assuming [PCedar2.0]VoiceUtils-PCR.df Warning: NameDB.mob is not defined by Ported.df; assuming [PCedar2.0]VoiceUtils-PCR.df Warning: NameDBBackDoor.mob is not defined by Ported.df; assuming [PCedar2.0]VoiceUtils-PCR.df Warning: NamesGVAuthImpl.mob is not defined by Ported.df; assuming [PCedar2.0]VoiceUtils-PCR.df Warning: NamesRPC.mob is not defined by Ported.df; assuming [PCedar2.0]VoiceUtils-PCR.df Warning: Nice.mob is not defined by Ported.df; assuming [PCedar2.0]VoiceUtils-PCR.df Warning: NiceImpl.mob is not defined by Ported.df; assuming [PCedar2.0]VoiceUtils-PCR.df Warning: VBagImpl.mob is not defined by Ported.df; assuming [PCedar2.0]VoiceUtils-PCR.df Warning: WalnutDefs.mob is not defined by Ported.df; assuming [PCedar2.0]Walnut-PCR.df Warning: WalnutOps.mob is not defined by Ported.df; assuming [PCedar2.0]Walnut-PCR.df Warning: WalnutWindow.mob is not defined by Ported.df; assuming [PCedar2.0]Walnut-PCR.df Warning: WalnutRegistry.mob is not defined by Ported.df; assuming [PCedar2.0]WalnutRegistry-PCR.df Warning: WalnutDocumentRope.mob is not defined by Ported.df; assuming [PCedar2.0]WalnutSend-PCR.df Warning: WalnutParseMsg.mob is not defined by Ported.df; assuming [PCedar2.0]WalnutSend-PCR.df Warning: WalnutSendOps.mob is not defined by Ported.df; assuming [PCedar2.0]WalnutSend-PCR.df Ί PortNotes.tioga Copyright Σ 1990 by Xerox Corporation. All rights reserved. Polle Zellweger (PTZ) July 20, 1990 1:32:15 pm PDT Swinehart, September 18, 1990 8:18:56 am PDT for IdentifyVisitor/ReleaseVisitor GVBasics.Password = RPC.EncryptionKey RPC.MakeKey (used by VoiceUtils) = GVBasics.MakeKey only for feeping debugging; Nice uses Pup.Address - otherwise looks ok used only in NewID proc -- private proc, never called! Feep, InitFinchSmarts Report, Feep, IdentifyVisitor, ReleaseVisitor, Announce, FinchOn, Problem, InitFinchSmarts, SetFiltering, InitFiltering ReFinchOnRollback, UnFinchOnCheckpointOrBoot, initialization SpeakText..., etc. ViewCmd SpeakText..., ReportRequestState ParseCallee, CollectUserProfileInfo ReportSystemState, Report, ReportRope, initialization ProblemInt: IF pd.attended THEN AMEvents.CallDebugger[remark]; In HostMachineFromInstance, which no Finch client calls Note: # XNSAuth.StrongKeyFromPassword["gl25586"] Κή•NewlineDelimiter –(cedardoc) style™™Icode™˜LJ™"Jšœ%™%J™3—š‘˜6J™—šœ˜J™5—š ‘˜ Jš6™6—šŸœ˜š)Πiy˜DJ™——šœ Ÿœ^˜nJ™w——J˜˜ šœŸœ1˜>J™<—šœŸœ:˜PJ™—šœŸœ ˜J™—šœ Ÿœ˜/Jšœ ™ —JšœŸœ;Ÿœ5˜~šœ ŸœE˜UJšœ#™#Jšœ5™5—J˜—˜JšœŸœ˜Jšœ Ÿœ˜JšœŸœ˜#JšŸœŸœ-˜6—J˜˜Jšœ Ÿœ˜JšŸœŸœ˜'Jšœ"˜"J˜—˜ Jšœ Ÿœ˜JšŸœŸœ˜JšœŸœ˜"J˜—˜šœ Ÿœ˜ Jšœ Ÿœ Ÿœ™>—JšœŸœ˜JšœŸœ˜JšŸœŸœ˜%JšœŸœ ˜J˜—˜ J˜³—˜ ˜LšœΟc˜+K˜ —šœ€˜(Kšœ ˜ —š  Πbc˜(Kš  ˜ —J˜—š œ#˜%š .œ·˜εJ™7—š 5œŒ˜Αšœ:˜:JšœA˜A——š 2œŸ˜ΡJ˜——š œΟnœ ˜#Jš .œ`˜ŽJ˜——˜ J˜gJ˜—˜š œχ œ œ ¦œS œ ¦œ œb˜ Jšœ0™0J™——J˜‘J˜˜J˜Α%——…—1^8φ