FinchSmartsImpl Note: all positions are excluding comments. Thrush.NB: TYPE = ATOM; PlaceCall 5676..5712: [nb, calledPartyID] _ThParty.GetParty[...] SELECT nb FROM $noSuchParty2, $noIdentSupplied 5884..5932: [nb, calledPartyID] _ ThParty.GetPartyFromNumber[...] SELECT nb FROM $success, $noSuchParty2, $narcissism Feep 6655..6717: [nb, cDesc.feepInterfaceSpec] _ ThParty.LookupServiceInterface[...] IF nb=$success THEN... 7049..7077: nb _ LarkFeepRpcControl.Feep[...] -- impl by LarkTrunkSmartsImpl.FeepOp IF nb # $success THEN IdentifyVisitor 7692..7731: [nb, visitingPartyID] _ThParty.GetParty[...] IF nb#$success THEN 7812..7830: nb _ ThParty.Visit[...] IF nb#$success THEN ReleaseVisitor 8097..8136: [nb, visitingPartyID] _ThParty.GetParty[...] IF nb=$success VoiceConnect 8992..9030: [nb, calledPartyID] _ ThParty.GetParty[...] IF nb=$success THEN 9126..9147: [nb, cDesc] _ Connect[...] IF nb=$success THEN LookupServiceInterface [nb, partyID] _ThParty.GetParty[...] IF nb#$success THEN RETURN[nb: $noSuchParty2, ...] NoteNewState 11210..11251: [nb, cInfo] _ ThParty.GetConversationInfo[...] nb # $success => [nb, cDesc.partyInfo] _ ThParty.GetPartyInfo[...] IF nb#$success THEN Request 12772..12804: [nb, convEvent] _ ThParty.Advance[...] SELECT nb FROM $success, $stateMismatch Connect [nb, convEvent] _ ThParty.CreateConversation[...] IF nb = $success THEN nb_ThParty.Alert[...] SELECT nb FROM $success, $stateMismatch nb_Request[cDesc, $failed, $error, "Conversation already in progress"]; WaitForActive nb_Request[cDesc, $failed, $error, "Finch failed to connect to voice service."]; IF nb=$success THEN nb_$timedOut; InitFinchSmarts [nb, credentials]_ThParty.Register[...] IF nb=$success THEN nb _ ThParty.Enable[...] IF nb#$success THEN UninitFinchSmarts [-- nb --]_ThParty.Deregister[...] RErrorCodeManagement.tioga Copyright Σ 1987 by Xerox Corporation. All rights reserved. Polle Zellweger (PTZ) February 20, 1987 2:12:36 pm PST Report success of Smarts->Party calls { $success, -- call succeeded, party may be in new state. Conversation-transition codes $stateMismatch, -- the most common problem; your information's out of date. $notInConv, -- you're not a party to this conversation, and call requires it. $noSuchConv, -- named conversation doesn't exist. $noSuchParty, -- named (own) party doesn't exist. ..system inconsistency or bug in caller $partyAlreadyActive, -- Not allowed to be active in two conversations $convIdle, -- not allowed to return to a conversation everyone has abandoned! $noSuchSmarts, -- get the drift? $noSuchParty2, -- second named (called) party doesn't exist. $narcissism, -- attempt to connect to self rejected <> $convNotActive, -- activity requested that is only satisfiable if requesting party active $convStillActive -- can't destroy it if remaining connections are not orphans., ..., ..trunk party busy for GetParty Other codes -- initialization problems, mostly $noIdentSupplied, -- not enough information to turn name or number into party, and so on. $noEntryFound, -- no RName information found in white pages data base for named individual. $noTrunkParty, -- corresponding to supplied party $couldntAuthenticate, -- password verification problem during initialization $couldntConnect, -- interface import or other similar problem during initialization $noNameAvailable, -- can't find the name of a party ..system inconsistency being reported $interfaceError, -- call had an invalid parameter or combination of parameters $voiceTerminalBusy -- fb/bd conflict }; GetParty.nb~$success GetParty.nb~$noIdentSupplied GetParty.nb~$noSuchParty2 GetParty.nb~$noSuchParty GetParty.GetRelatedParty.nb~~$voiceTerminalBusy GetParty.GetRelatedParty.nb~~$convStillActive GetParty.GetIdleParty/GetRnameFromParty.nb~~$noNameAvailable GetPartyFromNumber.nb~$success GetPartyFromNumber.nb~$noSuchParty GetPartyFromNumber.GetRelatedParty.nb~~$voiceTerminalBusy GetPartyFromNumber.GetRelatedParty.nb~~$noSuchParty2 GetPartyFromNumber.GetRelatedParty.nb~~$convStillActive GetPartyFromNumber.GetRnameFromParty.nb~~$noNameAvailable LookupServiceInterface.nb~$success LookupServiceInterface.nb~$noSuchParty2 LookupServiceInterface.nb~$noSuchInterface Feep.nb~$success Feep.nb~$noSuchSmarts -- really no such SmartsInfo Feep.nb~$notInConv -- really no cDesc Feep.nb~$convNotActive GetParty.nb~$success GetParty.nb~$noIdentSupplied GetParty.nb~$noSuchParty2 GetParty.nb~$noSuchParty GetParty.GetRelatedParty.nb~~$voiceTerminalBusy GetParty.GetRelatedParty.nb~~$convStillActive GetParty.GetIdleParty/GetRnameFromParty.nb~~$noNameAvailable Visit.nb~$success Visit.nb~$noSuchParty Visit.nb~$noSuchParty2 Visit.nb~$narcissism Visit.nb~$visitingIllegal -- can only visit an individual (ie someone running Finch or equivalent pgm) GetParty.nb~$success GetParty.nb~$noIdentSupplied GetParty.nb~$noSuchParty2 GetParty.nb~$noSuchParty GetParty.GetRelatedParty.nb~~$voiceTerminalBusy GetParty.GetRelatedParty.nb~~$convStillActive GetParty.GetIdleParty/GetRnameFromParty.nb~~$noNameAvailable GetParty.nb~$success GetParty.nb~$noIdentSupplied GetParty.nb~$noSuchParty2 GetParty.nb~$noSuchParty GetParty.GetRelatedParty.nb~~$voiceTerminalBusy GetParty.GetRelatedParty.nb~~$convStillActive GetParty.GetIdleParty/GetRnameFromParty.nb~~$noNameAvailable Connect.nb~$finchInactive Connect.CreateConversation/Alert/Request.nb~~$success Connect.CreateConversation/Alert.nb~~$voiceTerminalBusy -- checkConflict only Connect.CreateConversation/Alert/Request.nb~~$noSuchSmarts Connect.CreateConversation/Alert/Request.nb~~$noSuchParty Connect.Alert.nb~~$narcissism Connect.Alert.nb~~$alreadyInConv Alerted party already in this conv Connect.Alert.nb~~$noSuchParty2 maybe try GetParty again? Connect.Alert/Request.nb~~$noSuchConv probably bug (trying to bring someone else into a conv that you thought existed, but...) Connect.Alert/Request.nb~~$notInConv you must be in a conv to Alert anyone else. a bug Connect.Alert/Request.nb~~$stateMismatch you think your state is earlier than it is (your LarkSmarts and your FinchSmarts are confused with each other) - interacts with above Connect.Alert/Request.nb~~$interfaceError you think your state is later than it is -- wierd Connect.Alert/Request.nb~~$convIdle a bug Connect.Request.nb~~$bilateralConv -- $active only Connect.Request.nb~~$conferenceConv -- $active only Connect.Request.nb~~$voiceTerminalUnavailable -- $active only Connect.CreateConversation/Alert.nb~~$ GetParty.nb~$success GetParty.nb~$noIdentSupplied GetParty.nb~$noSuchParty2 GetParty.nb~$noSuchParty GetParty.GetRelatedParty.nb~~$voiceTerminalBusy GetParty.GetRelatedParty.nb~~$convStillActive GetParty.GetIdleParty/GetRnameFromParty.nb~~$noNameAvailable GetConversationInfo.nb~$success GetConversationInfo.nb~$noSuchConv GetPartyInfo.nb~$success GetPartyInfo.nb~$noSuchConv GetPartyInfo.nb~$noSuchParty GetPartyInfo.nb~$notInConv Advance.nb~$success Advance.nb~$convIdle a bug Advance.nb~$bilateralConv -- $active only can't put self active in this conv, because would put three in a conv that can only have two - sort of fd/bd conflict, but can still track conv Advance.nb~$conferenceConv -- $active only trying to put a trunk in a conv that already has 2 active parties incl you -- prob can't happen Advance.nb~$voiceTerminalUnavailable -- $active only Advance.Verify.nb~~$noSuchSmarts Advance.Verify.nb~~$noSuchParty you should probably have known about these 2 problems already Advance.Verify.nb~~$noSuchConv Lark or something has failed Advance.Verify.nb~~$notInConv Advance.Verify.nb~~$stateMismatch Advance.Verify.nb~~$interfaceError CreateConversation.nb~$success CreateConversation.nb~$voiceTerminalBusy -- checkConflict only CreateConversation.Verify.nb~~$noSuchSmarts CreateConversation.Verify.nb~~$noSuchParty CreateConversation.nb~$ others for sure you can treat as bugs Alert.nb~$success Alert.nb~$narcissism Alert.nb~$alreadyInConv Alert.nb~$noSuchParty2 Alert.nb~$voiceTerminalBusy Alert.Verify.nb~~$noSuchSmarts Alert.Verify.nb~~$noSuchParty Alert.Verify.nb~~$noSuchConv Alert.Verify.nb~~$notInConv Alert.Verify.nb~~$stateMismatch Alert.Verify.nb~~$interfaceError Alert.DoAdvance.nb~~$convIdle Alert.nb~$ Request.Advance.nb~~$success Request.Advance.nb~~$convIdle Request.Advance.nb~~$bilateralConv -- $active only Request.Advance.nb~~$conferenceConv -- $active only Request.Advance.nb~~$voiceTerminalUnavailable -- $active only Request.Advance.nb~~$noSuchSmarts Request.Advance.nb~~$noSuchParty Request.Advance.nb~~$noSuchConv Request.Advance.nb~~$notInConv Request.Advance.nb~~$stateMismatch Request.Advance.nb~~$interfaceError Request.Advance.nb~~$success Request.Advance.nb~~$convIdle Request.Advance.nb~~$bilateralConv -- $active only Request.Advance.nb~~$conferenceConv -- $active only Request.Advance.nb~~$voiceTerminalUnavailable -- $active only Request.Advance.nb~~$noSuchSmarts Request.Advance.nb~~$noSuchParty Request.Advance.nb~~$noSuchConv Request.Advance.nb~~$notInConv Request.Advance.nb~~$stateMismatch Request.Advance.nb~~$interfaceError DoRegister.nb~$success DoRegister.nb~$noIdentSupplied DoRegister.nb~$couldntAuthenticate bad password or couldn't contact authentication server (which is usually us) DoRegister.nb~$couldntConnect communication failure, wrong versions, etc. DoRegister.GetRnameFromParty.nb~~$noSuchParty -- $clone creation only DoRegister.GetRnameFromParty.nb~~$noSuchSmarts -- $clone creation only DoRegister.GetRnameFromParty.nb~~$noNameAvailable -- $clone creation only for initialization of Bluejay parties only DoRegister.CreateParty.nb~~$noIdentSupplied Able.nb~success Able.nb~noSuchSmarts Able.nb~noSuchParty Deregister.nb~$success Deregister.nb~$noSuchSmarts Deregister.nb~$noSuchParty -- really a quite unreasonable error case! Κ%˜™Icode™™O™J™—J™.J™YJ™[Jšœž"™1Jšœž6™LJšœžB™Sšœž!™3J™%—J™NJšœ$™$J™J˜—J˜šΟn ˜ šœ6˜6šœœ ˜.J™Jšœ™Jšœ™Jšœ™Jšœ/™/Jšœ-™-Jšœ<™™>Jšœ+™+Jšœ*™*šœ)™)J™%—J˜——˜šœœ˜'Jšœ™Jšœ™Jšœ™Jšœ™Jšœ™Jšœ™Jšœ™Jšœ™Jšœ™Jšœ™Jšœ ™ Jšœ™šœ™šœG˜GJšœ™Jšœ™Jšœ2™2Jšœ3™3Jšœ=™=Jšœ!™!Jšœ ™ Jšœ™Jšœ™Jšœ"™"Jšœ#™#——J˜———šŸ ˜ J˜Pšœ œ˜!Jšœ™Jšœ™Jšœ2™2Jšœ3™3Jšœ=™=Jšœ!™!Jšœ ™ Jšœ™Jšœ™Jšœ"™"Jšœ#™#J˜——šŸ˜šœ'˜'šœ œ˜Jšœ™Jšœ™šœ"™"J™L—šœ™J™+—JšœE™EJšœF™FšœI™IJ™*—Jšœ+™+J˜šœ˜šœ ˜Jšœ™Jšœ™Jšœ™J˜—————šŸ˜šœ$˜$J™Jšœ™JšœE™EJ˜———…—(-Ÿ