/[resiprocate]/main/resip/dum/doc/dum-invite-connected-state.dot
ViewVC logotype

Contents of /main/resip/dum/doc/dum-invite-connected-state.dot

Parent Directory Parent Directory | Revision Log Revision Log


Revision 7406 - (show annotations) (download)
Thu Nov 15 17:20:31 2007 UTC (12 years ago) by sgodin
File MIME type: text/plain
File size: 8417 byte(s)
- removed an out dated comment and fixed the graph name in dum-invite-connected-state.dot
1 // names start with cap are states
2 // names start with app:: are appliction handlers
3 // names start with dum:: are dum interface to application
4 // names start with lower case are actions
5 // names start with on are events
6
7 // Note: not all Assert transitions are shown here
8 digraph ConnectedState {
9 rankdir=LR;
10 node [shape = box];
11
12 // Should we use UPDATE to send offer or reINVITE? How does the app know which to use? UPDATE needs to get a response right away
13 Connected -> SentUpdate [ label = "dum::provideOffer/send::UPDATE" ];
14 Connected -> SentReinvite [ label = "dum::provideOffer/send::INVITE" ]; // UPDATE not supported
15 Connected -> SentReinviteNoOffer [ label = "dum::requestOffer/send::INVITE" ];
16 Connected -> ReceivedUpdate [ label = "onUPDATE-offer/app::onOffer" ];
17 Connected -> ReceivedReinvite [ label = "onINVITE-offer/app::onOffer" ];
18 Connected -> ReceivedReinviteNoOffer [ label = "onINVITE/app::onDialogModified,app::onOfferRequired" ];
19 Connected -> Connected [ label = "on200P" ];
20 Connected -> Connected [ label = "on200I/resend::ACK" ];
21 Connected -> Connected [ label = "onTimer200/resend::2xx" ];
22 Connected -> Connected [ label = "onCANCEL/send::200C" ]; // is this right?
23 Connected -> Terminated [ label = "dum::end/send::BYE" ];
24 Connected -> Terminated [ label = "onBYE/send::200B,app::onTerminated(PeerEnded)" ];
25
26 SentUpdate -> Connected [ label = "on200U/app::onAnswer" ];
27 SentUpdate -> Connected [ label = "on4XXU/app::onOfferRejected" ];
28 SentUpdate -> SentUpdate [ label = "onUPDATE|onINVITE/send::491" ];
29 SentUpdate -> SentUpdateGlare [ label = "on491U/timer::491" ];
30 SentUpdate -> Terminated [ label = "onGeneralFailure/app::onTerminated(GeneralFailure),send::BYE" ];
31 SentUpdate -> Terminated [ label = "dum::end/send::BYE" ];
32
33 SentUpdateGlare -> SentUpdate [ label = "onTimer491/resend::UPDATE" ];
34 SentUpdateGlare -> ReceivedUpdate [ label = "onUPDATE/app::onOfferRejected,app::onOffer" ];
35 SentUpdateGlare -> ReceivedReinvite [ label = "onINVITE/app::onOfferRejected,app::onOffer" ];
36 SentUpdateGlare -> Terminated [ label = "dum::end/send::BYE" ];
37
38 SentReinvite -> Connected [ label = "on200I-sdp/app::onAnswer,send::ACK" ];// need to store the ACK
39 SentReinvite -> Connected [ label = "on200I-nosdp/app::onIllegalNegotiation,send::ACK" ];// need to store the ACK
40 SentReinvite -> Connected [ label = "on4XXI/app::onOfferRejected" ];
41 SentReinvite -> SentReinvite [ label = "onINVITE|onUPDATE/send::491" ];
42 SentReinvite -> SentReinviteGlare [ label = "on491I/timer::491" ];
43 SentReinvite -> WaitingToTerminate [ label = "dum::end" ];
44
45 SentReinviteGlare -> SentReinvite [ label = "onTimer491/resend::INVITE" ];
46 SentReinviteGlare -> ReceivedUpdate [ label = "onUPDATE/app::onOfferRejected,app::onOffer" ];
47 SentReinviteGlare -> ReceivedReinvite [ label = "onINVITE/app::onOfferRejected,app::onOffer" ];
48 SentReinviteGlare -> ReceivedReinviteNoOffer [ label = "onINVITE/app::onOfferRejected,app::onOfferRequired" ];
49 SentReinviteGlare -> Terminated [ label = "dum::end/send::BYE" ];
50
51 SentReinviteNoOffer -> SentReinviteAnswered [ label = "on200I-sdp/app::onOffer" ];
52 SentReinviteNoOffer -> Connected [ label = "on200I-nosdp/app::onIllegalNegotiation,send::ACK" ];
53 SentReinviteNoOffer -> Connected [ label = "on4XXI/app::onOfferRequestRejected" ];
54 SentReinviteNoOffer -> SentReinviteNoOffer [ label = "onINVITE|onUPDATE/send::491" ];
55 SentReinviteNoOffer -> SentReinviteNoOfferGlare [ label = "on491I/timer::491" ];
56 SentReinviteNoOffer -> WaitingToTerminate [ label = "dum::end" ];
57
58 SentReinviteAnswered -> Connected [ label = "dum::provideAnswer/send::ACK-answer" ];
59 SentReinviteAnswered -> Terminated [ label = "dum::end/app::onTerminated(GeneralFailure),send::BYE" ];
60
61 SentReinviteNoOfferGlare -> SentReinviteNoOffer [ label = "onTimer491/resend::INVITE" ];
62 SentReinviteNoOfferGlare -> ReceivedUpdate [ label = "onUPDATE/app::onOfferRequestRejected,app::onOffer" ];
63 SentReinviteNoOfferGlare -> ReceivedReinvite [ label = "onINVITE/app::onOfferRequestRejected,app::onOffer" ];
64 SentReinviteNoOfferGlare -> ReceivedReinviteNoOffer [ label = "onINVITE/app::onOfferRequestRejected,app::onOfferRequired" ];
65 SentReinviteNoOfferGlare -> Terminated [ label = "dum::end/send::BYE" ];
66
67
68 // If we require the app to synchronously provide an answer to an UPDATE then the
69 // ReceivedUpdate state is not necessary. If we want the app to be able to respond
70 // async then this state is necessary and the app must respond in a timely manner
71 ReceivedUpdate -> Connected [ label = "dum::provideAnswer/send::200U" ];
72 ReceivedUpdate -> Connected [ label = "dum::reject/send::488U" ];
73 ReceivedUpdate -> Terminated [ label = "dum::end/send::488U,send::BYE" ];
74 ReceivedUpdate -> ReceivedUpdate [ label = "onINVITE|onUPDATE/send::500" ];
75
76 ReceivedReinvite -> Answered [ label = "dum::provideAnswer/send::200I,timer::200I,timer::NoACK" ];
77 ReceivedReinvite -> Connected [ label = "dum::reject/send::488U" ];
78 ReceivedReinvite -> Terminated [ label = "dum::end/send::488I,send::BYE" ];
79 ReceivedReinvite -> ReceivedReinvite [ label = "onINVITE|onUPDATE/send::500" ];
80
81 Answered -> Answered [ label = "timer::2xx/resend::2xx" ];
82 Answered -> WaitingToOffer [ label = "dum::provideOffer/saveOffer" ];
83 Answered -> WaitingToRequestOffer [ label = "dum::requestOffer ];
84 Answered -> Connected [ label = "onACK/timer::NoACK/app::onAckNotReceived()" ];
85 Answered -> WaitingToHangup [ label = "dum::end" ];
86
87 WaitingToOffer -> WaitingToOffer [ label = "timer::2xx/resend::2xx" ];
88 WaitingToOffer -> SentUpdate [ label = "onACK/send::UPDATE-offer" ];
89 WaitingToOffer -> SentReinvite [ label = "onACK/send::INVITE-offer" ];
90 WaitingToOffer -> Terminated [ label = "onTimerNoACK/app::onAckNotReceived(),app::onTerminated(GeneralFailure),send::BYE" ];
91 WaitingToOffer -> WaitingToHangup [ label = "dum::end" ];
92
93 WaitingToRequestOffer -> WaitingToRequestOffer [ label = "timer::2xx/resend::2xx" ];
94 WaitingToRequestOffer -> SentReinviteNoOffer [ label = "onACK/send::INVITE" ];
95 WaitingToRequestOffer -> SentReinviteNoOffer [ label = "onTimerNoACK/app::onAckNotReceived/send::INVITE" ];
96 WaitingToRequestOffer -> WaitingToHangup [ label = "dum::end" ];
97
98 ReceivedReinviteNoOffer -> ReceivedReinviteSentOffer [ label = "dum::provideOffer/send::200-offer,timer::200I,timer::NoACK" ];
99 ReceivedReinviteNoOffer -> Connected [ label = "dum::reject/send::488I" ];
100 ReceivedReinviteNoOffer -> Terminated [ label = "dum::end/send::488I,send::BYE" ];
101 ReceivedReinviteNoOffer -> ReceivedReinviteNoOffer [ label = "onINVITE|onUPDATE/send::500" ];
102
103 ReceivedReinviteSentOffer -> Connected [ label = "onACK-answer/app::onAnswer" ];
104 ReceivedReinviteSentOffer -> Connected [ label = "onACK/app::onOfferRejected" ];
105 ReceivedReinviteSentOffer -> ReceivedReinviteSentOffer [ label = "onTimer2xx/resend::2XXI" ];
106 ReceivedReinviteSentOffer -> Connected [ label = "onTimerNoACK/app::onOfferRejected" ];
107 ReceivedReinviteSentOffer -> WaitingToHangup [ label = "dum::end" ];
108
109 WaitingToTerminate -> Terminated [ label = "on200I/send::ACK,send::BYE" ];
110 WaitingToTerminate -> Terminated [ label = "onFailureInvite/?send::BYE" ];
111
112 WaitingToHangup -> Terminated [ label = "onACK/send::BYE" ];
113 WaitingToHangup -> Terminated [ label = "onTimerNoACK/send::BYE" ];
114
115 Terminated -> Terminated [ label = "onResponse/destroy" ];
116 Terminated -> Terminated [ label = "onRequest/send::481,destroy" ];
117 }

Properties

Name Value
svn:eol-style native
svn:mime-type text/plain

webmaster AT resiprocate DOT org
ViewVC Help
Powered by ViewVC 1.1.27