ErrorCodeManagement.tioga
Copyright Ó 1987 by Xerox Corporation. All rights reserved.
Polle Zellweger (PTZ) February 20, 1987 2:12:36 pm PST
FinchSmartsImpl
Note: all positions are excluding comments.
Report success of Smarts->Party calls
Thrush.NB: TYPE = ATOM;
{
$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 <<The right way to complain?>>
$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
};
PlaceCall
5676..5712: [nb, calledPartyID] ←ThParty.GetParty[...]
SELECT nb FROM $noSuchParty2, $noIdentSupplied
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
5884..5932: [nb, calledPartyID] ← ThParty.GetPartyFromNumber[...]
SELECT nb FROM $success, $noSuchParty2, $narcissism
GetPartyFromNumber.nb~$success
GetPartyFromNumber.nb~$noSuchParty
GetPartyFromNumber.GetRelatedParty.nb~~$voiceTerminalBusy
GetPartyFromNumber.GetRelatedParty.nb~~$noSuchParty2
GetPartyFromNumber.GetRelatedParty.nb~~$convStillActive
GetPartyFromNumber.GetRnameFromParty.nb~~$noNameAvailable
Feep
6655..6717: [nb, cDesc.feepInterfaceSpec] ← ThParty.LookupServiceInterface[...]
IF nb=$success THEN...
LookupServiceInterface.nb~$success
LookupServiceInterface.nb~$noSuchParty2
LookupServiceInterface.nb~$noSuchInterface
7049..7077: nb ← LarkFeepRpcControl.Feep[...] -- impl by LarkTrunkSmartsImpl.FeepOp
IF nb # $success THEN
Feep.nb~$success
Feep.nb~$noSuchSmarts -- really no such SmartsInfo
Feep.nb~$notInConv -- really no cDesc
Feep.nb~$convNotActive
IdentifyVisitor
7692..7731: [nb, visitingPartyID] ←ThParty.GetParty[...]
IF nb#$success THEN
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
7812..7830: nb ← ThParty.Visit[...]
IF nb#$success THEN
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)
ReleaseVisitor
8097..8136: [nb, visitingPartyID] ←ThParty.GetParty[...]
IF nb=$success
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
VoiceConnect
8992..9030: [nb, calledPartyID] ← ThParty.GetParty[...]
IF nb=$success THEN
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
9126..9147: [nb, cDesc] ← Connect[...]
IF nb=$success THEN
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~~$<unexpectedErrors>
LookupServiceInterface
[nb, partyID] ←ThParty.GetParty[...]
IF nb#$success THEN
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
RETURN[nb: $noSuchParty2, ...]
NoteNewState
11210..11251: [nb, cInfo] ← ThParty.GetConversationInfo[...]
GetConversationInfo.nb~$success
GetConversationInfo.nb~$noSuchConv
nb # $success =>
[nb, cDesc.partyInfo] ← ThParty.GetPartyInfo[...]
IF nb#$success THEN
GetPartyInfo.nb~$success
GetPartyInfo.nb~$noSuchConv
GetPartyInfo.nb~$noSuchParty
GetPartyInfo.nb~$notInConv
Request
12772..12804: [nb, convEvent] ← ThParty.Advance[...]
SELECT nb FROM $success, $stateMismatch
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
Connect
[nb, convEvent] ← ThParty.CreateConversation[...]
IF nb = $success THEN
CreateConversation.nb~$success
CreateConversation.nb~$voiceTerminalBusy -- checkConflict only
CreateConversation.Verify.nb~~$noSuchSmarts
CreateConversation.Verify.nb~~$noSuchParty
CreateConversation.nb~$<unexpectedErrors>
others for sure you can treat as bugs
nb←ThParty.Alert[...]
SELECT nb FROM $success, $stateMismatch
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~$<unexpectedErrors>
nb←Request[cDesc, $failed, $error, "Conversation already in progress"];
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
WaitForActive
nb←Request[cDesc, $failed, $error, "Finch failed to connect to voice service."];
IF nb=$success THEN nb←$timedOut;
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
InitFinchSmarts
[nb, credentials]←ThParty.Register[...]
IF nb=$success THEN
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
nb ← ThParty.Enable[...]
IF nb#$success THEN
Able.nb~success
Able.nb~noSuchSmarts
Able.nb~noSuchParty
UninitFinchSmarts
[-- nb --]←ThParty.Deregister[...]
Deregister.nb~$success
Deregister.nb~$noSuchSmarts
Deregister.nb~$noSuchParty -- really a quite unreasonable error case!