From derek@sofaswitch.org Tue Nov 14 19:25:37 2006 From: SofaSWITCH SVN To: sofaswitch-svn@lists.freeswitch.org Subject: [Sofaswitch-svn] [commit] r202 - sofaswitch/trunk/callflow/docs/current Date: Tue, 14 Nov 2006 19:25:37 -0500 Message-ID: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============8487870288478850530==" --===============8487870288478850530== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Author: derek Date: Tue Nov 14 19:25:36 2006 New Revision: 202 Modified: sofaswitch/trunk/callflow/docs/current/eachicon.dxy Log: Update to describe more of the items on the screen, and in alphabetical order. Modified: sofaswitch/trunk/callflow/docs/current/eachicon.dxy =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- sofaswitch/trunk/callflow/docs/current/eachicon.dxy (original) +++ sofaswitch/trunk/callflow/docs/current/eachicon.dxy Tue Nov 14 19:25:36 2= 006 @@ -17,6 +17,7 @@ \li \ref subsecReadFromFile=20 \li \ref subsecRequestNode \li \ref subsecStartFlow +\li \ref subsecTimer \li \ref subsecWriteToFile =20 All of the control structures in this application have optional parameters. @@ -28,67 +29,40 @@ can specify a string, which is indicated by placing double quotes at either end. Which makes (for example) "voip" a valid string Python code. =20 -\subsection subsecStartFlow Initiate graph processing -Start of graph processing is indicated by the toolbar icon and drawing area -image of =20 + + + +\subsection subsecConditional Conditional execution +The toolbar icon and a rendering of a drawing area shape for the "Conditiona= l" +item is shown below.
-\image html Controlsstart.png=20 +\image html ControlsIf.png            -\image html startflow.png +\image html conditional.png
=20 +On clicking the right mouse button on this shape, a window comes up. The tool +tip is as described before. The condition, which is evaluated is a Python +expression. Should this expression not be valid, a message will be printed to +the display when the compiled code is executed.=20 +=20 +On evaluation of the compiled code, execution switches to the bottom (True +result) or right output (False result). =20 -When this graph is processed, this item indicates that a new identity on the -server will be created, for each item on this graph to communicate with. Thu= s, -on instantiation, this graph will be identified as identity \c c290 (say). A= ny -messages sent via the server will be labelled as being sent by \c c290. =20 -It is mandatory that there is only one of these items on each graph. Placing -more than Start of graph processing item on the drawing area is ambiguous - -where would call processing start ? =20 -\subsection subsecJoinObjects Join items on the drawing area =20 -The toolbar icon and a possible rendering of a drawing area shape is shown b= elow. -
-
-\image html JoinObjects.png - -           - -\image html joinlines.png -
=20 -Items on the drawing screen may be joined directly - one to another, or join= ed -with this structure, which is multiline segment object. -Select the toolbar icon, move to the drawing area, and left click to mark the -points on the shape and complete with the right mouse button. -Once completed, you may move the shape by selecting it with the left button -or shift left to select multiple objects. =20 -When there is a valid connection at both ends of this object, a filled black -circle is drawn at each end. =20 -It is entirely valid to have the output of several items connected to one -item. Thus, of the the following two shapes, the left is valid, =20 -
-
-\image html validjoinexample.png - -           - -\image html faultyjoinexample.png -
=20 -and the right shape is wrong. The key problem with the right shape is that it -is ambiguous, since it is not clear where the flow of execution -should go. In this example, it would "work", in that there is no=20 -difference if either path is followed. =20 + + \subsection subsecEndCall End a call End a call to some external entity is indicated by the toolbar icon and dra= wing area image of =20 @@ -114,41 +88,89 @@ hangup the call, and then make a new call on the same worker node. =20 =20 -\subsection subsecRequestNode Request Node=20 =20 -The toolbar icon and a rendering of a drawing area shape for the "Request No= de" + +\subsection subsecEndEverything End Everything +The toolbar icon and a rendering of a drawing area shape for the "End Everyt= hing" item is shown below.
-\image html RequestNode.png +\image html bitmaps/death.png            -\image html requestnode.png +\image html current/Death.png
=20 -Request Node is a key component of the SofaSwitch suite of applications. With -this item, the controller asks the designated application to supply one work= er -node for use by this call graph. Alternatively, this is the mechanism by whi= ch -this call graph gets remote entities who can handle media data. +This icon initiates immediate closure of this Python instance. The connection +to the remote server is severed immediately. All pending TCP messages that we +were to have sent out are dropped. All pending timer events are +ignored. Further, processing will not ever return to any part of this graph. =20 -Once created, the requested worker has a lifetime of 2 seconds. This lifetim= e is -set by the designated application. If the requested worker is not acknowledg= ed -after 2 seconds, it is destroyed by the designated application. =20 -On receiving advise the node has been created, and its identity, this call -graph can advise the node to "transfer media to itself". Once this command is -made, the requested node is safe from death by timeout.=20 =20 -The Right Mouse Button on this request node shape brings up a menu box. You -may adjust the Tool Tip accordingly - I prefer to change this to indicate -who/what I am requesting a node from. The timer period here is a float, whi= ch -indicates how many seconds we will wait for a reply. The timer which runs is -labelled by the above string, which is used in the comparison of an eventer -box \ref subsecEventer. The additional information field is used to provide -details that some SofaSwitch applications want. For example, the conference -utility needs information on which room the node should be in. =20 + + + + + + + + + + + + + +\subsection subsecEndProcessing End Graph Processing +The toolbar icon and a rendering of a drawing area shape for the "End Graph = Processing" +item is shown below. +
+
+\image html bitmaps/ControlsEndHere.png + +           + +\image html current/endflow.png +
+ +This icon is provided as a means for temporarily holding up graph processing, +while we wait for external events. If processing does fall into here, extern= al +events will move graph processing to an Event Collection item as required. +Note that if graph processing was such that some events were never registered +for, then execution will be permanently stuck in the "End Graph Processing" +item. + +When execution is in the "End Graph Processing" item, waiting for an event to +happen, there is no CPU penalty.=20 + +Consider the following graph. +\image html faultyendprocessing.png "Permanent stuckly in End Graph Processi= ng" + +Execution starts at the top, moves to the Event Collection item where it +registers for some event, and then moves to the "End Graph Processing" +item. Since there is no means of generating events which can be sent to this +call graph, execution will never move to the "Event Collection" +item. Consequently, this graph will sit idle, until it is terminated by user +intervention. + + + + + + + + + + + + + + + + + \subsection subsecEventer Event Collection The toolbar icon and a rendering of a drawing area shape for the "Event Coll= ection" item is shown below. @@ -186,76 +208,63 @@ button. To illustrate, after a DTMF event, the Python variable will hold the particular DTMF value that was detected. =20 -\subsection subsecEndEverything End Everything -The toolbar icon and a rendering of a drawing area shape for the "End Everyt= hing" -item is shown below. + + + + + + + + +\subsection subsecJoinObjects Join items +The toolbar icon and a possible rendering of a drawing area shape is shown b= elow.
-\image html bitmaps/death.png +\image html JoinObjects.png            -\image html current/Death.png +\image html joinlines.png
=20 -This icon initiates immediate closure of this Python instance. The connection -to the remote server is severed immediately. All pending TCP messages that we -were to have sent out are dropped. All pending timer events are -ignored. Further, processing will not ever return to any part of this graph. +Items on the drawing screen may be joined directly - one to another, or join= ed +with this structure, which is multiline segment object. +Select the toolbar icon, move to the drawing area, and left click to mark the +points on the shape and complete with the right mouse button. +Once completed, you may move the shape by selecting it with the left button +or shift left to select multiple objects. =20 -\subsection subsecEndProcessing End Graph Processing -The toolbar icon and a rendering of a drawing area shape for the "End Graph = Processing" -item is shown below. +When there is a valid connection at both ends of this object, a filled black +circle is drawn at each end. + +It is entirely valid to have the output of several items connected to one +item. Thus, of the the following two shapes, the left is valid, +
-\image html bitmaps/ControlsEndHere.png +\image html validjoinexample.png            -\image html current/endflow.png +\image html faultyjoinexample.png
=20 -This icon is provided as a means for temporarily holding up graph processing, -while we wait for external events. If processing does fall into here, extern= al -events will move graph processing to an Event Collection item as required. -Note that if graph processing was such that some events were never registered -for, then execution will be permanently stuck in the "End Graph Processing" -item. +and the right shape is wrong. The key problem with the right shape is that it +is ambiguous, since it is not clear where the flow of execution +should go. In this example, it would "work", in that there is no=20 +difference if either path is followed. =20 -When execution is in the "End Graph Processing" item, waiting for an event to -happen, there is no CPU penalty.=20 =20 -Consider the following graph. -\image html faultyendprocessing.png "Permanent stuckly in End Graph Processi= ng" =20 -Execution starts at the top, moves to the Event Collection item where it -registers for some event, and then moves to the "End Graph Processing" -item. Since there is no means of generating events which can be sent to this -call graph, execution will never move to the "Event Collection" -item. Consequently, this graph will sit idle, until it is terminated by user -intervention. =20 -\subsection subsecConditional Conditional execution -The toolbar icon and a rendering of a drawing area shape for the "Conditiona= l" -item is shown below. -
-
-\image html ControlsIf.png - -           - -\image html conditional.png -
=20 -On clicking the right mouse button on this shape, a window comes up. The tool -tip is as described before. The condition, which is evaluated is a Python -expression. Should this expression not be valid, a message will be printed to -the display when the compiled code is executed.=20 -=20 -On evaluation of the compiled code, execution switches to the bottom (True -result) or right output (False result). =20 =20 + + + + + \subsection subsecMakeCall Make a call Make a call to some external entity is indicated by the toolbar icon and dra= wing area image of =20 @@ -284,6 +293,18 @@ getting the voip node to make a call to "h323:127.0.0.1". =20 =20 + + + + + + + + + + + + \subsection subsecReadFromFile Read from file Read from file is an answering machine specific function, and is indicated by the toolbar icon and drawing area image of @@ -316,6 +337,103 @@ answering machine worker node.=20 =20 =20 + + + + + + + + + + + + + + + + + + + +\subsection subsecRequestNode Request Node=20 + +The toolbar icon and a rendering of a drawing area shape for the "Request No= de" +item is shown below. +
+
+\image html RequestNode.png + +           + +\image html requestnode.png +
+ +Request Node is a key component of the SofaSwitch suite of applications. With +this item, the controller asks the designated application to supply one work= er +node for use by this call graph. Alternatively, this is the mechanism by whi= ch +this call graph gets remote entities who can handle media data. + +Once created, the requested worker has a lifetime of 2 seconds. This lifetim= e is +set by the designated application. If the requested worker is not acknowledg= ed +after 2 seconds, it is destroyed by the designated application. + +On receiving advise the node has been created, and its identity, this call +graph can advise the node to "transfer media to itself". Once this command is +made, the requested node is safe from death by timeout.=20 + +The Right Mouse Button on this request node shape brings up a menu box. You +may adjust the Tool Tip accordingly - I prefer to change this to indicate +who/what I am requesting a node from. The timer period here is a float, whi= ch +indicates how many seconds we will wait for a reply. The timer which runs is +labelled by the above string, which is used in the comparison of an eventer +box \ref subsecEventer. The additional information field is used to provide +details that some SofaSwitch applications want. For example, the conference +utility needs information on which room the node should be in. + + + + + + + + + + + + + + + + + + + +\subsection subsecStartFlow Initiate graph processing +Start of graph processing is indicated by the toolbar icon and drawing area +image of =20 +
+
+\image html Controlsstart.png=20 + +           + +\image html startflow.png +
+ + +When this graph is processed, this item indicates that a new identity on the +server will be created, for each item on this graph to communicate with. Thu= s, +on instantiation, this graph will be identified as identity \c c290 (say). A= ny +messages sent via the server will be labelled as being sent by \c c290. + +It is mandatory that there is only one of these items on each graph. Placing +more than Start of graph processing item on the drawing area is ambiguous - +where would call processing start ? + + + + \subsection subsecTimer Timer A timer is indicated by the toolbar icon and drawing area image of
@@ -327,6 +445,7 @@
=20 + On clicking the right mouse button on this shape, a window comes up. The tool tip is as described before. =20 @@ -334,7 +453,35 @@ number here with an exponent, or a python variable. Thus, one would specify= a delay of 1200 milliseconds as 1.2. =20 -The label one applies to the timer is specified on the=20 +The label one applies to the timer is specified in the last field of the +displayed window. This label is applied to timers generated by this particul= ar +graph, and should only be unique to this graph. Timer events which are +generated when processing a different graph are never passed to this graph. = + +We have supplied an example timerlabel of self.myId + "thistimer". The Python +variable self.myId is the string id the server applied to this particular +graph. The text "thistimer" is a string we generated to differentiate two +timers on the same graph. + + + + + + + + + + + + + + + + + + + + =20 =20 \subsection subsecWriteToFile Write to file --===============8487870288478850530==--