diff --git a/sflphonegui-uml.xmi b/sflphonegui-uml.xmi index 4abde70e4007033a7f21f39e5197bb83b00b150b..3134c858774b4aa2ad92ccf01f8ae9bd7f802767 100644 --- a/sflphonegui-uml.xmi +++ b/sflphonegui-uml.xmi @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<XMI xmlns:UML="http://schema.omg.org/spec/UML/1.3" verified="false" timestamp="2005-09-15T14:16:28" xmi.version="1.2" > +<XMI xmlns:UML="http://schema.omg.org/spec/UML/1.3" verified="false" timestamp="2005-09-15T15:11:28" xmi.version="1.2" > <XMI.header> <XMI.documentation> <XMI.exporter>umbrello uml modeller http://uml.sf.net</XMI.exporter> @@ -28,56 +28,56 @@ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="3437" isRoot="false" isAbstract="false" name="disconnect" /> <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="2834" isRoot="false" isAbstract="false" name="getAccount" > <UML:BehavioralFeature.parameter> - <UML:Parameter kind="return" xmi.id="15945" type="2521" /> + <UML:Parameter kind="return" xmi.id="16250" type="2521" /> <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="2835" isRoot="false" value="" type="2466" isAbstract="false" name="name" /> </UML:BehavioralFeature.parameter> </UML:Operation> <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="2556" isRoot="false" isAbstract="false" name="version" > <UML:BehavioralFeature.parameter> - <UML:Parameter kind="return" xmi.id="15946" type="2466" /> + <UML:Parameter kind="return" xmi.id="16251" type="2466" /> </UML:BehavioralFeature.parameter> </UML:Operation> <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="2611" isRoot="false" isAbstract="false" name="listConfig" > <UML:BehavioralFeature.parameter> - <UML:Parameter kind="return" xmi.id="15947" type="2466" /> + <UML:Parameter kind="return" xmi.id="16252" type="2466" /> </UML:BehavioralFeature.parameter> </UML:Operation> <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="2655" isRoot="false" isAbstract="false" name="setOption" > <UML:BehavioralFeature.parameter> - <UML:Parameter kind="return" xmi.id="15948" type="2466" /> + <UML:Parameter kind="return" xmi.id="16253" type="2466" /> <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="2656" isRoot="false" value="" type="2466" isAbstract="false" name="name" /> <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="2660" isRoot="false" value="" type="2466" isAbstract="false" name="value" /> </UML:BehavioralFeature.parameter> </UML:Operation> <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="2670" isRoot="false" isAbstract="false" name="getOption" > <UML:BehavioralFeature.parameter> - <UML:Parameter kind="return" xmi.id="15949" type="2466" /> + <UML:Parameter kind="return" xmi.id="16254" type="2466" /> <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="2671" isRoot="false" value="" type="2466" isAbstract="false" name="name" /> </UML:BehavioralFeature.parameter> </UML:Operation> <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="2687" isRoot="false" isAbstract="false" name="saveConfig" > <UML:BehavioralFeature.parameter> - <UML:Parameter kind="return" xmi.id="15950" type="2466" /> + <UML:Parameter kind="return" xmi.id="16255" type="2466" /> </UML:BehavioralFeature.parameter> </UML:Operation> <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="2700" isRoot="false" isAbstract="false" name="listAudioDevices" > <UML:BehavioralFeature.parameter> - <UML:Parameter kind="return" xmi.id="15951" type="2466" /> + <UML:Parameter kind="return" xmi.id="16256" type="2466" /> </UML:BehavioralFeature.parameter> </UML:Operation> <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="2716" isRoot="false" isAbstract="false" name="listAudioCodecs" > <UML:BehavioralFeature.parameter> - <UML:Parameter kind="return" xmi.id="15952" type="2466" /> + <UML:Parameter kind="return" xmi.id="16257" type="2466" /> </UML:BehavioralFeature.parameter> </UML:Operation> <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="2826" isRoot="false" isAbstract="false" name="listAccounts" > <UML:BehavioralFeature.parameter> - <UML:Parameter kind="return" xmi.id="15953" type="2466" /> + <UML:Parameter kind="return" xmi.id="16258" type="2466" /> </UML:BehavioralFeature.parameter> </UML:Operation> <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="15090" isRoot="false" isAbstract="false" name="handleevents" > <UML:BehavioralFeature.parameter> - <UML:Parameter kind="return" xmi.id="15954" type="2466" /> + <UML:Parameter kind="return" xmi.id="16259" type="2466" /> </UML:BehavioralFeature.parameter> </UML:Operation> </UML:Classifier.feature> @@ -119,7 +119,7 @@ </UML:Operation> <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="2524" isRoot="false" isAbstract="false" name="call" > <UML:BehavioralFeature.parameter> - <UML:Parameter kind="return" xmi.id="15955" type="2468" /> + <UML:Parameter kind="return" xmi.id="16260" type="2468" /> <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="10314" isRoot="false" value="" type="2466" isAbstract="false" name="to" /> </UML:BehavioralFeature.parameter> </UML:Operation> @@ -174,7 +174,7 @@ <UML:Classifier.feature> <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="4219" isRoot="false" isAbstract="false" name="createHoldTask" > <UML:BehavioralFeature.parameter> - <UML:Parameter kind="return" xmi.id="15956" type="3814" /> + <UML:Parameter kind="return" xmi.id="16261" type="3814" /> </UML:BehavioralFeature.parameter> </UML:Operation> <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="7283" isRoot="false" isAbstract="false" name="addTask" > @@ -189,7 +189,7 @@ <UML:Attribute isSpecification="false" isLeaf="false" visibility="private" xmi.id="3927" isRoot="false" initialValue="" type="3600" isAbstract="false" name="mFactory" /> <UML:Operation isSpecification="false" isLeaf="false" visibility="private" xmi.id="4600" isRoot="false" isAbstract="false" name="getTaskFactory" > <UML:BehavioralFeature.parameter> - <UML:Parameter kind="return" xmi.id="15957" type="3600" /> + <UML:Parameter kind="return" xmi.id="16262" type="3600" /> </UML:BehavioralFeature.parameter> </UML:Operation> </UML:Classifier.feature> @@ -371,7 +371,7 @@ <UML:Attribute isSpecification="false" isLeaf="false" visibility="private" xmi.id="6951" isRoot="false" initialValue="" type="2470" isAbstract="false" name="mapSeqToCommand< string, Command>" /> <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="6799" isRoot="false" isAbstract="false" name="sendCallCommand" > <UML:BehavioralFeature.parameter> - <UML:Parameter kind="return" xmi.id="15958" type="2466" /> + <UML:Parameter kind="return" xmi.id="16263" type="2466" /> <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="8075" isRoot="false" value="" type="2466" isAbstract="false" name="sessionId" /> <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="8118" isRoot="false" value="" type="2466" isAbstract="false" name="callId" /> <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="6800" isRoot="false" value="" type="2466" isAbstract="false" name="command" /> @@ -380,7 +380,7 @@ </UML:Operation> <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="8161" isRoot="false" isAbstract="false" name="sendAccountCommand" > <UML:BehavioralFeature.parameter> - <UML:Parameter kind="return" xmi.id="15959" type="2466" /> + <UML:Parameter kind="return" xmi.id="16264" type="2466" /> <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="8176" isRoot="false" value="" type="2466" isAbstract="false" name="sessionId" /> <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="8191" isRoot="false" value="" type="2466" isAbstract="false" name="accountId" /> <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="8206" isRoot="false" value="" type="2466" isAbstract="false" name="command" /> @@ -394,19 +394,24 @@ <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="7150" isRoot="false" value="" type="2466" isAbstract="false" name="message" /> </UML:BehavioralFeature.parameter> </UML:Operation> + <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="16168" isRoot="false" isAbstract="false" name="receiveAnswer" > + <UML:BehavioralFeature.parameter> + <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="16169" isRoot="false" value="" type="2466" isAbstract="false" name="answer" /> + </UML:BehavioralFeature.parameter> + </UML:Operation> <UML:Operation isSpecification="false" isLeaf="false" visibility="private" xmi.id="8297" isRoot="false" isAbstract="false" name="createSessionId" > <UML:BehavioralFeature.parameter> - <UML:Parameter kind="return" xmi.id="15960" type="2466" /> + <UML:Parameter kind="return" xmi.id="16265" type="2466" /> </UML:BehavioralFeature.parameter> </UML:Operation> <UML:Operation isSpecification="false" isLeaf="false" visibility="private" xmi.id="8386" isRoot="false" isAbstract="false" name="createCallId" > <UML:BehavioralFeature.parameter> - <UML:Parameter kind="return" xmi.id="15961" type="2466" /> + <UML:Parameter kind="return" xmi.id="16266" type="2466" /> </UML:BehavioralFeature.parameter> </UML:Operation> <UML:Operation isSpecification="false" isLeaf="false" visibility="private" xmi.id="8406" isRoot="false" isAbstract="false" name="createRequestId" > <UML:BehavioralFeature.parameter> - <UML:Parameter kind="return" xmi.id="15962" type="2466" /> + <UML:Parameter kind="return" xmi.id="16267" type="2466" /> </UML:BehavioralFeature.parameter> </UML:Operation> </UML:Classifier.feature> @@ -418,7 +423,7 @@ <UML:Attribute isSpecification="false" isLeaf="false" visibility="private" xmi.id="7050" isRoot="false" initialValue="" type="2466" isAbstract="false" name="listOfarguments" /> <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="6926" isRoot="false" isAbstract="false" name="toString" > <UML:BehavioralFeature.parameter> - <UML:Parameter kind="return" xmi.id="15963" type="2466" /> + <UML:Parameter kind="return" xmi.id="16268" type="2466" /> </UML:BehavioralFeature.parameter> </UML:Operation> </UML:Classifier.feature> @@ -464,18 +469,19 @@ </UML:Operation> <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="8893" isRoot="false" isAbstract="false" name="toString" > <UML:BehavioralFeature.parameter> - <UML:Parameter kind="return" xmi.id="15964" type="2466" /> + <UML:Parameter kind="return" xmi.id="16269" type="2466" /> </UML:BehavioralFeature.parameter> </UML:Operation> </UML:Classifier.feature> </UML:Class> - <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="11167" isRoot="false" isAbstract="false" name="SessionImpl" > + <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="11167" isRoot="false" isAbstract="false" name="SessionSender" > <UML:Classifier.feature> <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="11208" isRoot="false" isAbstract="false" name="send" > <UML:BehavioralFeature.parameter> <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="11209" isRoot="false" value="" type="8547" isAbstract="false" name="request" /> </UML:BehavioralFeature.parameter> </UML:Operation> + <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="16087" isRoot="false" isAbstract="false" name="run" /> </UML:Classifier.feature> </UML:Class> <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="14744" isRoot="false" isAbstract="false" name="CallRequest" > @@ -565,9 +571,9 @@ </UML:Model> </XMI.content> <XMI.extensions xmi.extender="umbrello" > - <docsettings viewid="2457" documentation="" uniqueid="15964" /> + <docsettings viewid="2457" documentation="" uniqueid="16269" /> <diagrams> - <diagram snapgrid="0" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="0" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="2460" snapy="10" showatts="1" xmi.id="2457" documentation="" type="402" showops="1" showpackage="0" name="class diagram" localid="900000" showstereotype="0" showscope="1" snapcsgrid="0" font="Sans Serif,10,-1,5,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="1016" > + <diagram snapgrid="0" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="0" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="2460" snapy="10" showatts="1" xmi.id="2457" documentation="" type="402" showops="1" showpackage="0" name="class diagram" localid="900000" showstereotype="0" showscope="1" snapcsgrid="0" font="Sans Serif,10,-1,5,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="1031" > <widgets> <classwidget usesdiagramfillcolour="0" width="321" showattsigs="601" usesdiagramusefillcolour="0" x="1775" linecolour="#ff0000" y="104" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="202" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="2467" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" /> <classwidget usesdiagramfillcolour="0" width="357" showattsigs="601" usesdiagramusefillcolour="0" x="1757" linecolour="#ff0000" y="535" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="180" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="2468" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" /> @@ -575,7 +581,7 @@ <classwidget usesdiagramfillcolour="0" width="162" showattsigs="601" usesdiagramusefillcolour="0" x="2211" linecolour="#ff0000" y="172" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="82" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="2585" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" /> <classwidget usesdiagramfillcolour="0" width="336" showattsigs="601" usesdiagramusefillcolour="0" x="248" linecolour="#ff0000" y="200" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="90" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="2999" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,1,0,0,0,0" /> <classwidget usesdiagramfillcolour="1" width="226" showattsigs="601" usesdiagramusefillcolour="1" x="2230" linecolour="none" y="471" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="52" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="3600" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" /> - <classwidget usesdiagramfillcolour="0" width="218" showattsigs="601" usesdiagramusefillcolour="0" x="2223" linecolour="#ff0000" y="360" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="45" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="3611" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" /> + <classwidget usesdiagramfillcolour="0" width="218" showattsigs="601" usesdiagramusefillcolour="0" x="2234" linecolour="#ff0000" y="376" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="45" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="3611" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" /> <classwidget usesdiagramfillcolour="1" width="90" showattsigs="601" usesdiagramusefillcolour="1" x="91" linecolour="none" y="249" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="29" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="3814" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" /> <classwidget usesdiagramfillcolour="1" width="107" showattsigs="601" usesdiagramusefillcolour="1" x="91" linecolour="none" y="100" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="29" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="4821" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" /> <classwidget usesdiagramfillcolour="1" width="105" showattsigs="601" usesdiagramusefillcolour="1" x="664" linecolour="none" y="208" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="29" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="4844" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" /> @@ -593,10 +599,10 @@ <classwidget usesdiagramfillcolour="0" width="370" showattsigs="601" usesdiagramusefillcolour="0" x="858" linecolour="#ff0000" y="650" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="67" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="5921" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" /> <classwidget usesdiagramfillcolour="1" width="125" showattsigs="601" usesdiagramusefillcolour="1" x="1071" linecolour="none" y="834" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="29" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="5999" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" /> <classwidget usesdiagramfillcolour="1" width="126" showattsigs="601" usesdiagramusefillcolour="1" x="1291" linecolour="none" y="697" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="29" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="6011" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" /> - <classwidget usesdiagramfillcolour="0" width="695" showattsigs="601" usesdiagramusefillcolour="0" x="278" linecolour="#ff0000" y="892" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="120" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="6732" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" /> - <classwidget usesdiagramfillcolour="1" width="161" showattsigs="601" usesdiagramusefillcolour="1" x="2144" linecolour="none" y="351" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="75" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="6858" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" /> + <classwidget usesdiagramfillcolour="0" width="695" showattsigs="601" usesdiagramusefillcolour="0" x="278" linecolour="#ff0000" y="892" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="135" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="6732" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" /> + <classwidget usesdiagramfillcolour="1" width="161" showattsigs="601" usesdiagramusefillcolour="1" x="2165" linecolour="none" y="271" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="75" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="6858" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" /> <classwidget usesdiagramfillcolour="0" width="458" showattsigs="601" usesdiagramusefillcolour="0" x="396" linecolour="#ff0000" y="429" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="135" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="8547" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" /> - <classwidget usesdiagramfillcolour="1" width="177" showattsigs="601" usesdiagramusefillcolour="1" x="2142" linecolour="none" y="57" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="37" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="11167" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" /> + <classwidget usesdiagramfillcolour="1" width="177" showattsigs="601" usesdiagramusefillcolour="1" x="2169" linecolour="none" y="38" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="52" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="11167" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" /> <classwidget usesdiagramfillcolour="1" width="86" showattsigs="601" usesdiagramusefillcolour="1" x="316" linecolour="none" y="793" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="29" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="14744" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" /> <classwidget usesdiagramfillcolour="1" width="340" showattsigs="601" usesdiagramusefillcolour="1" x="979" linecolour="none" y="290" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="67" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="15208" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Sans Serif,10,-1,5,75,0,0,0,0,0" /> </widgets> @@ -622,7 +628,7 @@ </assocwidget> <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="3600" widgetaid="3611" xmi.id="3927" type="510" changeabilityA="900" changeabilityB="900" visibilityA="200" > <linepath> - <startpoint startx="2332" starty="405" /> + <startpoint startx="2343" starty="421" /> <endpoint endx="2343" endy="471" /> </linepath> <floatingtext usesdiagramfillcolour="1" width="69" usesdiagramusefillcolour="1" x="2272" linecolour="none" y="450" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="19" usefillcolor="1" pretext="+" isinstance="0" xmi.id="15556" text="mFactory" font="Sans Serif,10,-1,5,50,0,0,0,0,0" /> @@ -837,6 +843,7 @@ <listitem open="0" type="815" id="6799" /> <listitem open="0" type="815" id="8161" /> <listitem open="0" type="815" id="7123" /> + <listitem open="0" type="815" id="16168" /> <listitem open="0" type="815" id="8297" /> <listitem open="0" type="815" id="8386" /> <listitem open="0" type="815" id="8406" /> @@ -861,6 +868,7 @@ </listitem> <listitem open="1" type="813" id="11167" > <listitem open="0" type="815" id="11208" /> + <listitem open="0" type="815" id="16087" /> </listitem> <listitem open="1" type="813" id="5921" > <listitem open="0" type="815" id="6401" /> @@ -1658,7 +1666,7 @@ </hierarchicalcodeblock> </textblocks> <header> - <codecomment tag="" text="/************************************************************************&#010; taskmanager.cpp - Copyright jpbarrette&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Thu Sep 15 2005 at 14:16:23&#010;The original location of this file is &#010;**************************************************************************/&#010;" /> + <codecomment tag="" text="/************************************************************************&#010; taskmanager.cpp - Copyright jpbarrette&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Thu Sep 15 2005 at 14:41:45&#010;The original location of this file is &#010;**************************************************************************/&#010;" /> </header> <classfields> <codeclassfield parent_id="3927" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" > @@ -2355,11 +2363,16 @@ <cppcodedocumentation tag="" /> </header> </codeoperation> + <codeoperation parent_id="16168" tag="operation_16168" canDelete="false" > + <header> + <cppcodedocumentation tag="" /> + </header> + </codeoperation> </textblocks> </hierarchicalcodeblock> </textblocks> <header> - <codecomment tag="" text="/************************************************************************&#010; requester.cpp - Copyright jpbarrette&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Thu Sep 15 2005 at 14:16:23&#010;The original location of this file is &#010;**************************************************************************/&#010;" /> + <codecomment tag="" text="/************************************************************************&#010; requester.cpp - Copyright jpbarrette&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Thu Sep 15 2005 at 15:08:13&#010;The original location of this file is &#010;**************************************************************************/&#010;" /> </header> <classfields> <codeclassfield parent_id="6951" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" > @@ -2441,7 +2454,7 @@ </hierarchicalcodeblock> </textblocks> <header> - <codecomment tag="" text="/************************************************************************&#010; command.cpp - Copyright jpbarrette&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Thu Sep 15 2005 at 14:16:23&#010;The original location of this file is &#010;**************************************************************************/&#010;" /> + <codecomment tag="" text="/************************************************************************&#010; command.cpp - Copyright jpbarrette&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Thu Sep 15 2005 at 14:35:29&#010;The original location of this file is &#010;**************************************************************************/&#010;" /> </header> <classfields> <codeclassfield parent_id="6881" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" > @@ -2679,9 +2692,9 @@ </codeclassfield> </classfields> </classifiercodedocument> - <classifiercodedocument writeOutCode="true" package="" id="11167" parent_class="11167" fileExt=".cpp" fileName="sessionimpl" > + <classifiercodedocument writeOutCode="true" package="" id="11167" parent_class="11167" fileExt=".cpp" fileName="sessionsender" > <textblocks> - <codeblockwithcomments tag="includes" text="#include "sessionimpl.h"&#010;" > + <codeblockwithcomments tag="includes" text="#include "sessionsender.h"&#010;" > <header> <cppcodedocumentation tag="" writeOutText="false" /> </header> @@ -2702,11 +2715,16 @@ <cppcodedocumentation tag="" /> </header> </codeoperation> + <codeoperation parent_id="16087" tag="operation_16087" canDelete="false" > + <header> + <cppcodedocumentation tag="" /> + </header> + </codeoperation> </textblocks> </hierarchicalcodeblock> </textblocks> <header> - <codecomment tag="" text="/************************************************************************&#010; sessionimpl.cpp - Copyright jpbarrette&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Thu Sep 15 2005 at 14:16:23&#010;The original location of this file is &#010;**************************************************************************/&#010;" /> + <codecomment tag="" text="/************************************************************************&#010; sessionsender.cpp - Copyright jpbarrette&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Thu Sep 15 2005 at 15:07:40&#010;The original location of this file is &#010;**************************************************************************/&#010;" /> </header> <classfields/> </classifiercodedocument> @@ -5066,7 +5084,7 @@ </codeblockwithcomments> </textblocks> <header> - <codecomment tag="" text="/************************************************************************&#010; taskmanager.h - Copyright jpbarrette&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Thu Sep 15 2005 at 14:16:23&#010;The original location of this file is &#010;**************************************************************************/&#010;" /> + <codecomment tag="" text="/************************************************************************&#010; taskmanager.h - Copyright jpbarrette&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Thu Sep 15 2005 at 14:41:45&#010;The original location of this file is &#010;**************************************************************************/&#010;" /> </header> <classfields> <codeclassfield parent_id="3927" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" > @@ -9431,6 +9449,11 @@ <cppcodedocumentation tag="" indentLevel="1" text="&#010;@param code &#010;@param noSeq &#010;@param message " /> </header> </codeoperation> + <codeoperation parent_id="16168" tag="operation_16168" canDelete="false" indentLevel="1" > + <header> + <cppcodedocumentation tag="" indentLevel="1" text="&#010;@param answer " /> + </header> + </codeoperation> </textblocks> </hierarchicalcodeblock> </textblocks> @@ -9583,7 +9606,7 @@ </codeblockwithcomments> </textblocks> <header> - <codecomment tag="" text="/************************************************************************&#010; requester.h - Copyright jpbarrette&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Thu Sep 15 2005 at 14:16:23&#010;The original location of this file is &#010;**************************************************************************/&#010;" /> + <codecomment tag="" text="/************************************************************************&#010; requester.h - Copyright jpbarrette&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Thu Sep 15 2005 at 15:08:13&#010;The original location of this file is &#010;**************************************************************************/&#010;" /> </header> <classfields> <codeclassfield parent_id="6951" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" > @@ -9863,7 +9886,7 @@ </codeblockwithcomments> </textblocks> <header> - <codecomment tag="" text="/************************************************************************&#010; command.h - Copyright jpbarrette&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Thu Sep 15 2005 at 14:16:23&#010;The original location of this file is &#010;**************************************************************************/&#010;" /> + <codecomment tag="" text="/************************************************************************&#010; command.h - Copyright jpbarrette&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Thu Sep 15 2005 at 14:35:29&#010;The original location of this file is &#010;**************************************************************************/&#010;" /> </header> <classfields> <codeclassfield parent_id="6881" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" > @@ -10480,9 +10503,9 @@ </codeclassfield> </classfields> </classifiercodedocument> - <classifiercodedocument writeOutCode="true" package="" id="cppheader11167" parent_class="11167" fileExt=".h" fileName="sessionimpl" > + <classifiercodedocument writeOutCode="true" package="" id="cppheader11167" parent_class="11167" fileExt=".h" fileName="sessionsender" > <textblocks> - <codeblockwithcomments tag="hashDefBlock" text="#ifndef SESSIONIMPL_H&#010;#define SESSIONIMPL_H" > + <codeblockwithcomments tag="hashDefBlock" text="#ifndef SESSIONSENDER_H&#010;#define SESSIONSENDER_H" > <header> <cppcodedocumentation tag="" writeOutText="false" /> </header> @@ -10509,7 +10532,7 @@ </codeblockwithcomments> <cppheaderclassdeclarationblock parent_id="11167" tag="classDeclarationBlock" canDelete="false" > <header> - <cppcodedocumentation tag="" text="Class SessionImpl&#010;" /> + <cppcodedocumentation tag="" text="Class SessionSender&#010;" /> </header> <textblocks> <hierarchicalcodeblock tag="publicBlock" canDelete="false" > @@ -10569,6 +10592,11 @@ <cppcodedocumentation tag="" indentLevel="1" text="&#010;@param request " /> </header> </codeoperation> + <codeoperation parent_id="16087" tag="operation_16087" canDelete="false" indentLevel="1" > + <header> + <cppcodedocumentation tag="" indentLevel="1" /> + </header> + </codeoperation> </textblocks> </hierarchicalcodeblock> </textblocks> @@ -10681,14 +10709,14 @@ </cppheaderclassdeclarationblock> </textblocks> </hierarchicalcodeblock> - <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //SESSIONIMPL_H" > + <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //SESSIONSENDER_H" > <header> <cppcodedocumentation tag="" writeOutText="false" /> </header> </codeblockwithcomments> </textblocks> <header> - <codecomment tag="" text="/************************************************************************&#010; sessionimpl.h - Copyright jpbarrette&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Thu Sep 15 2005 at 14:16:23&#010;The original location of this file is &#010;**************************************************************************/&#010;" /> + <codecomment tag="" text="/************************************************************************&#010; sessionsender.h - Copyright jpbarrette&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Thu Sep 15 2005 at 15:07:40&#010;The original location of this file is &#010;**************************************************************************/&#010;" /> </header> <classfields/> </classifiercodedocument> diff --git a/src/gui/Makefile.am b/src/gui/Makefile.am index cb8b1608f3b1237c73b5694c85baced58be396ab..84686e28d532fb8f1ae4335498d165ad64d44071 100644 --- a/src/gui/Makefile.am +++ b/src/gui/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS = qt server +SUBDIRS = qt server noinst_LTLIBRARIES = libguiframework.la diff --git a/src/gui/official/account.h b/src/gui/official/account.h index 8e70ba786afb3d12aee7511ecb321534f4f9efaf..0f66dfc1ba061a633864dd7034e4b80c406f91a7 100644 --- a/src/gui/official/account.h +++ b/src/gui/official/account.h @@ -30,8 +30,7 @@ class Account { /** * This will generate a call ready to be used. */ - Call createCall(); - + Call call(const std::string &to); std::string register(); std::string unregister(); diff --git a/src/gui/official/callrequestfactory.h b/src/gui/official/callrequestfactory.h new file mode 100644 index 0000000000000000000000000000000000000000..42a852f40b1014c0e6640b68882521ec845142f0 --- /dev/null +++ b/src/gui/official/callrequestfactory.h @@ -0,0 +1,37 @@ +/** + * Copyright (C) 2004-2005 Savoir-Faire Linux inc. + * Author: Jean-Philippe Barrette-LaPierre + * <jean-philippe.barrette-lapierre@savoirfairelinux.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef SFLPHONEGUI_CALLREQUESTFACTORY_H +#define SFLPHONEGUI_CALLREQUESTFACTORY_H + +#include <map> + + +class CallRequestFactory +{ + public: + CallRequest *create(const std::string &command + + private: + std::map< std::string, CallRequestCreatorBase > mCreators; +} + +#endif + diff --git a/src/gui/official/objectpool.cpp b/src/gui/official/objectpool.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f77f6e512143302b37ab55338d6ff0055805b6c2 --- /dev/null +++ b/src/gui/official/objectpool.cpp @@ -0,0 +1,45 @@ +/** + * Copyright (C) 2004-2005 Savoir-Faire Linux inc. + * Author: Jean-Philippe Barrette-LaPierre + * <jean-philippe.barrette-lapierre@savoirfairelinux.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "objectpool.h" + + +template< T > +void +LinePool< T >::push(const T &value) +{ + QMutexLocker guard(&mMutex); + mPool.push_back(value); + mDataAvailable.wakeOne(); +} + +template< T > +T +LinePool< T >::pop() +{ + QMutexLocker guard(&mMutex); + while(mPool.begin() == mPool.end()) { + mDataAvailable.wait(guard.mutex()); + } + + std::list< T >::iterator pos = mPool.begin(); + mDataAvailable.pop_front(); + return (*pos); +} diff --git a/src/gui/official/objectpool.h b/src/gui/official/objectpool.h new file mode 100644 index 0000000000000000000000000000000000000000..481e8bbd7c5ae1be98c720faa043a24e53cb76b0 --- /dev/null +++ b/src/gui/official/objectpool.h @@ -0,0 +1,50 @@ +/** + * Copyright (C) 2004-2005 Savoir-Faire Linux inc. + * Author: Jean-Philippe Barrette-LaPierre + * <jean-philippe.barrette-lapierre@savoirfairelinux.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef SFLPHONEGUI_OBJECTPOOL_H +#define SFLPHONEGUI_OBJECTPOOL_H + +#include <string> +#include <QMutex> +#include <QWaitCondition> + +template< T > +class ObjectPool +{ + public: + /** + * This function will push a line in the pool. + */ + void push(const T &line); + + /** + * This function will wait for an available line. + */ + T pop(); + + private: + std::list< T > mPool; + + QMutex mMutex; + QWaitCondition mDataAvailable; +}; + +#endif + diff --git a/src/gui/official/requesterimpl.cpp b/src/gui/official/requesterimpl.cpp index 5bc39e58f2f2f8a78f69285b52271cef73bf4e28..aaab0f920ce19608ae79022cf77dfd883f6fb819 100644 --- a/src/gui/official/requesterimpl.cpp +++ b/src/gui/official/requesterimpl.cpp @@ -17,6 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + #include <stdexcept> #include "requesterimpl.h" @@ -44,14 +45,14 @@ RequesterImpl::sendCallCommand(const std::string &sessionId, const std::string &command) { // We retreive the internal of a session. - SessionImpl *session = getSessionImpl(sessionId); + SessionSender *session = getSessionSender(sessionId); // We ask the factory to create the request. Request *request = mCallRequestFactory.create(command, sequenceId, callId) std::string sequenceId = generateSequenceId(); registerRequest(sessionId, sequenceId, request); - s->send(request); + s->send(request.toString()); return sequenceId; } diff --git a/src/gui/official/requesterimpl.h b/src/gui/official/requesterimpl.h index 87c71d4048e507ae6a3e921f4cdd21e75b38818f..bb452ab4a1e2b8ae1fe690764b3cf250837787cd 100644 --- a/src/gui/official/requesterimpl.h +++ b/src/gui/official/requesterimpl.h @@ -22,6 +22,7 @@ #define SFLPHONEGUI_REQUESTERIMPL_H class Call; +class SessionIO; class RequesterImpl { @@ -65,7 +66,7 @@ class RequesterImpl private: - std::map< std::string, SessionImpl * > mSessions; + std::map< std::string, SessionIO * > mSessions; /** diff --git a/src/gui/official/sessionio.cpp b/src/gui/official/sessionio.cpp new file mode 100644 index 0000000000000000000000000000000000000000..1345d73d219d3380b54a4ca20dc43685037677c3 --- /dev/null +++ b/src/gui/official/sessionio.cpp @@ -0,0 +1,112 @@ +/** + * Copyright (C) 2004-2005 Savoir-Faire Linux inc. + * Author: Jean-Philippe Barrette-LaPierre + * <jean-philippe.barrette-lapierre@savoirfairelinux.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +InputStreamer::InputStreamer(SessionIO *sessionIO) + : mSessionIO(sessionIO) +{} + +void +InputStreamer::run() +{ + while(mSessionIO->isUp()) { + mSessionIO->receive(); + } +} + +void +OutputStreamer::OutputStreamer(SessionIO *sessionIO) + : mSessionIO(sessionIO) +{} + +void +OutputStreamer::run() +{ + while(mSessionIO->isUp()) { + mSessionIO->send(); + } +} + +SessionIO::SessionIO(std::istream *input, std::ostream *output) + : mIsUp(false) + , mInput(input) + , mOutput(output) + , mInputStreamer(this) + , mOutputStreamer(this) +{} + +SessionIO::~SessionIO() +{ + stop(); +} + +void +SessionIO::run() +{ + stop(); + //just protecting the mutex + { + QMutexLock guard(&mMutex); + mInputStreamer.start(); + mOutputStreamer.start(); + mIsUp = true; + } +} + +void +SessionIO::stop() +{ + mMutex.lock(); + mIsUp = false; + mMutex.unlock(); + + mInputStreamer.wait(); + mOutputStreamer.wait(); +} + +void +SessionIO::send(const std::string &request) +{ + mOutputPool.push(request); +} + +void +SessionIO::receive(std::string &answer) +{ + answer = mInputPool.pop(); +} + +void +SessionIO::send() +{ + (*mOutputStream) << mOutputPool.pop(); + mOutputPool->sync(); +} + +void +SessionIO::receive() +{ + std::string s; + std::getline(*mInputStream, s); + mInputPool.push(s); +} + + + + diff --git a/src/gui/official/sessionio.h b/src/gui/official/sessionio.h new file mode 100644 index 0000000000000000000000000000000000000000..e550bb8e097eebd9245eaa03e12f1840ee3e9aa6 --- /dev/null +++ b/src/gui/official/sessionio.h @@ -0,0 +1,137 @@ +/** + * Copyright (C) 2004-2005 Savoir-Faire Linux inc. + * Author: Jean-Philippe Barrette-LaPierre + * <jean-philippe.barrette-lapierre@savoirfairelinux.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef SFLPHONEGUI_SESSIONIO_H +#define SFLPHONEGUI_SESSIONIO_H + +#include <string> +#include <iostream> +#include <cc++/thread.h> + +#include "objectpool.h" + +/** + * This is the main class that will handle + * the IO. + */ +class SessionIO +{ + public: + friend class OutputStreamer; + friend class InputStreamer; + + /** + * Those streams will be the streams read or write to. + */ + SessionIO(std::istream *input, std::ostream *output); + + /** + * This is the function that will start the threads + * that will handle the streams. + */ + void run(); + + /** + * This function will stop the streaming + * processing. + */ + void stop(); + + /** + * You can use this function for sending request. + * The sending is non-blocking. This function will + * send the data as it is; it will NOT add an EOL. + * the stream will be "sync"ed. + */ + void send(const std::string &request); + + /** + * You can use this function to receive answers. + * This function will wait until there's an + * answer to be processed. + */ + void receive(std::string &answer); + + private: + /** + * This function will send to the stream + * the given data. EOL will be added at the + * end of the data. + */ + void send(); + + /** + * This function will read a line of data from + * the stream. + */ + void receive(); + + private: + QMutex mMutex; + bool mIsUp; + + ObjectPool< std::string > mInputPool; + ObjectPool< std::string > mOutputPool; +}; + + +/** + * This class is the thread that will read + * from the SessionIO. + */ +class InputStreamer : public QThread +{ + public: + InputStreamer(SessionIO *sessionIO); + ~InputStreamer(); + + /** + * This is the main processing function. + */ + virtual void run(); + + + private: + SessionIO *mSessionIO; +}; + + + +/** + * This class is the thread that will write + * to the SessionIO. + */ +class OutputStreamer : public QThread +{ + public: + OutputStreamer(SessionIO *sessionIO); + + /** + * This is the main processing function + */ + virtual void run(); + + private: + SessionIO *sessionIO; +}; + + +#endif +