<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>Yate: yatejingle.h Source File</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.7.1 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="files.html"><span>File List</span></a></li> </ul> </div> <h1>yatejingle.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <a name="l00024"></a>00024 <span class="preprocessor">#ifndef __YATEJINGLE_H</span> <a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#define __YATEJINGLE_H</span> <a name="l00026"></a>00026 <span class="preprocessor"></span> <a name="l00027"></a>00027 <span class="preprocessor">#include <yateclass.h></span> <a name="l00028"></a>00028 <span class="preprocessor">#include <yatejabber.h></span> <a name="l00029"></a>00029 <a name="l00033"></a>00033 <span class="keyword">namespace </span>TelEngine { <a name="l00034"></a>00034 <a name="l00035"></a>00035 <span class="keyword">class </span>JGAudio; <span class="comment">// A Jingle data payload</span> <a name="l00036"></a>00036 <span class="keyword">class </span>JGAudioList; <span class="comment">// A List of Jingle data payloads</span> <a name="l00037"></a>00037 <span class="keyword">class </span>JGTransport; <span class="comment">// A Jingle transport description</span> <a name="l00038"></a>00038 <span class="keyword">class </span>JGSession; <span class="comment">// A Jingle session</span> <a name="l00039"></a>00039 <span class="keyword">class </span>JGEvent; <span class="comment">// An event generated by a Jingle session</span> <a name="l00040"></a>00040 <span class="keyword">class </span>JGEngine; <span class="comment">// The Jingle engine</span> <a name="l00041"></a>00041 <span class="keyword">class </span>JGSentStanza; <span class="comment">// Sent stanza timeout info</span> <a name="l00042"></a>00042 <a name="l00043"></a>00043 <a name="l00048"></a><a class="code" href="classTelEngine_1_1JGAudio.html">00048</a> <span class="keyword">class </span>YJINGLE_API <a class="code" href="classTelEngine_1_1JGAudio.html" title="A Jingle data payload.">JGAudio</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a> <a name="l00049"></a>00049 { <a name="l00050"></a>00050 <span class="keyword">public</span>: <a name="l00059"></a><a class="code" href="classTelEngine_1_1JGAudio.html#4d1ad11be60e72cca592783fbb776eed">00059</a> <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1JGAudio.html" title="A Jingle data payload.">JGAudio</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* _id, <span class="keyword">const</span> <span class="keywordtype">char</span>* _name, <span class="keyword">const</span> <span class="keywordtype">char</span>* _clockrate, <a name="l00060"></a>00060 <span class="keyword">const</span> <span class="keywordtype">char</span>* _bitrate, <span class="keyword">const</span> <span class="keywordtype">char</span>* _synonym) <a name="l00061"></a>00061 { <span class="keyword">set</span>(_id,_name,_clockrate,_bitrate,_synonym); } <a name="l00062"></a>00062 <a name="l00067"></a><a class="code" href="classTelEngine_1_1JGAudio.html#4c540042c1e24ecc59cabc88f6147786">00067</a> <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1JGAudio.html" title="A Jingle data payload.">JGAudio</a>(<a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* xml) <a name="l00068"></a>00068 { fromXML(xml); } <a name="l00069"></a>00069 <a name="l00073"></a><a class="code" href="classTelEngine_1_1JGAudio.html#f5ff705a73bbff2fc0297a31bf395d4d">00073</a> <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1JGAudio.html" title="A Jingle data payload.">JGAudio</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1JGAudio.html" title="A Jingle data payload.">JGAudio</a>& src) <a name="l00074"></a>00074 { <span class="keyword">set</span>(src.<a class="code" href="classTelEngine_1_1JGAudio.html#76010eef1edc0406cc2375c25d2a433d">id</a>,src.<a class="code" href="classTelEngine_1_1JGAudio.html#9a2326f35466e54c36c070829245c557">name</a>,src.<a class="code" href="classTelEngine_1_1JGAudio.html#94bc83bcc93239074a48ae1e8da8e59e">clockrate</a>,src.<a class="code" href="classTelEngine_1_1JGAudio.html#cf162452cf1e2c604a9ef5d7870d6ece">bitrate</a>,src.<a class="code" href="classTelEngine_1_1JGAudio.html#73ef99fb1f39432a5baed5d8c264ec34">synonym</a>); } <a name="l00075"></a>00075 <a name="l00084"></a><a class="code" href="classTelEngine_1_1JGAudio.html#f2dbd658fffad392339de6eede1c923f">00084</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(<span class="keyword">const</span> <span class="keywordtype">char</span>* _id, <span class="keyword">const</span> <span class="keywordtype">char</span>* _name, <span class="keyword">const</span> <span class="keywordtype">char</span>* _clockrate, <a name="l00085"></a>00085 <span class="keyword">const</span> <span class="keywordtype">char</span>* _bitrate, <span class="keyword">const</span> <span class="keywordtype">char</span>* _synonym) { <a name="l00086"></a>00086 <span class="keywordtype">id</span> = _id; <a name="l00087"></a>00087 name = _name; <a name="l00088"></a>00088 clockrate = _clockrate; <a name="l00089"></a>00089 bitrate = _bitrate; <a name="l00090"></a>00090 synonym = _synonym; <a name="l00091"></a>00091 } <a name="l00092"></a>00092 <a name="l00097"></a><a class="code" href="classTelEngine_1_1JGAudio.html#4a7bd56fb99593ace9379ed699f2719c">00097</a> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& toString()<span class="keyword"> const</span> <a name="l00098"></a>00098 <span class="keyword"> </span>{ <span class="keywordflow">return</span> id; } <a name="l00099"></a>00099 <a name="l00104"></a>00104 <a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* toXML(); <a name="l00105"></a>00105 <a name="l00110"></a>00110 <span class="keywordtype">void</span> fromXML(<a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* xml); <a name="l00111"></a>00111 <a name="l00115"></a><a class="code" href="classTelEngine_1_1JGAudio.html#76010eef1edc0406cc2375c25d2a433d">00115</a> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> id; <a name="l00116"></a>00116 <a name="l00120"></a><a class="code" href="classTelEngine_1_1JGAudio.html#9a2326f35466e54c36c070829245c557">00120</a> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> name; <a name="l00121"></a>00121 <a name="l00125"></a><a class="code" href="classTelEngine_1_1JGAudio.html#94bc83bcc93239074a48ae1e8da8e59e">00125</a> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> clockrate; <a name="l00126"></a>00126 <a name="l00130"></a><a class="code" href="classTelEngine_1_1JGAudio.html#cf162452cf1e2c604a9ef5d7870d6ece">00130</a> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> bitrate; <a name="l00131"></a>00131 <a name="l00135"></a><a class="code" href="classTelEngine_1_1JGAudio.html#73ef99fb1f39432a5baed5d8c264ec34">00135</a> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> synonym; <a name="l00136"></a>00136 }; <a name="l00137"></a>00137 <a name="l00138"></a>00138 <a name="l00143"></a><a class="code" href="classTelEngine_1_1JGAudioList.html">00143</a> <span class="keyword">class </span><a class="code" href="classTelEngine_1_1JGAudioList.html" title="A List of Jingle data payloads.">JGAudioList</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a> <a name="l00144"></a>00144 { <a name="l00145"></a>00145 <span class="keyword">public</span>: <a name="l00154"></a><a class="code" href="classTelEngine_1_1JGAudioList.html#fe5751cc745288231a11080bee30d507">00154</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">add</span>(<span class="keyword">const</span> <span class="keywordtype">char</span>* id, <span class="keyword">const</span> <span class="keywordtype">char</span>* name, <span class="keyword">const</span> <span class="keywordtype">char</span>* clockrate, <a name="l00155"></a>00155 <span class="keyword">const</span> <span class="keywordtype">char</span>* bitrate, <span class="keyword">const</span> <span class="keywordtype">char</span>* synonym) <a name="l00156"></a>00156 { <a class="code" href="classTelEngine_1_1ObjList.html#abb60c1b270c8c7fdb5b548d99e40b67">append</a>(<span class="keyword">new</span> <a class="code" href="classTelEngine_1_1JGAudio.html" title="A Jingle data payload.">JGAudio</a>(<span class="keywordtype">id</span>,name,clockrate,bitrate,synonym)); } <a name="l00157"></a>00157 <a name="l00163"></a>00163 <a class="code" href="classTelEngine_1_1JGAudio.html" title="A Jingle data payload.">JGAudio</a>* <a class="code" href="classTelEngine_1_1JGAudioList.html#165b1c52b3a4419495d2fb85d3cf7667">findSynonym</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& value); <a name="l00164"></a>00164 <a name="l00170"></a>00170 <a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* <a class="code" href="classTelEngine_1_1JGAudioList.html#78424c6d585369d977b2c787a7ca6fe1">toXML</a>(<span class="keywordtype">bool</span> telEvent = <span class="keyword">true</span>); <a name="l00171"></a>00171 <a name="l00176"></a>00176 <span class="keywordtype">void</span> <a class="code" href="classTelEngine_1_1JGAudioList.html#5cd7f02fd2fa558b6cc20f533bc03add">fromXML</a>(<a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* xml); <a name="l00177"></a>00177 <a name="l00185"></a>00185 <span class="keywordtype">bool</span> <a class="code" href="classTelEngine_1_1JGAudioList.html#37290447bb5fc8757ca860fe016b4975">createList</a>(<a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& dest, <span class="keywordtype">bool</span> synonym, <span class="keyword">const</span> <span class="keywordtype">char</span>* sep = <span class="stringliteral">","</span>); <a name="l00186"></a>00186 }; <a name="l00187"></a>00187 <a name="l00188"></a>00188 <a name="l00193"></a><a class="code" href="classTelEngine_1_1JGTransport.html">00193</a> <span class="keyword">class </span>YJINGLE_API <a class="code" href="classTelEngine_1_1JGTransport.html" title="A Jingle transport description.">JGTransport</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1RefObject.html">RefObject</a> <a name="l00194"></a>00194 { <a name="l00195"></a>00195 <span class="keyword">public</span>: <a name="l00199"></a><a class="code" href="classTelEngine_1_1JGTransport.html#5d0f6f441631ed68062713448cada78a">00199</a> <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1JGTransport.html" title="A Jingle transport description.">JGTransport</a>() <a name="l00200"></a>00200 {} <a name="l00201"></a>00201 <a name="l00205"></a>00205 <a class="code" href="classTelEngine_1_1JGTransport.html" title="A Jingle transport description.">JGTransport</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1JGTransport.html" title="A Jingle transport description.">JGTransport</a>& src); <a name="l00206"></a>00206 <a name="l00211"></a><a class="code" href="classTelEngine_1_1JGTransport.html#785e735701a180b91656c5f4d6565248">00211</a> <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1JGTransport.html" title="A Jingle transport description.">JGTransport</a>(<a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* element) <a name="l00212"></a>00212 { fromXML(element); } <a name="l00213"></a>00213 <a name="l00217"></a><a class="code" href="classTelEngine_1_1JGTransport.html#1fed8999dace0b366a5164ad03363ae2">00217</a> <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1JGTransport.html" title="A Jingle transport description.">JGTransport</a>() <a name="l00218"></a>00218 {} <a name="l00219"></a>00219 <a name="l00224"></a>00224 <span class="keyword">static</span> <a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* createTransport(); <a name="l00225"></a>00225 <a name="l00230"></a>00230 <a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* toXML(); <a name="l00231"></a>00231 <a name="l00236"></a>00236 <span class="keywordtype">void</span> fromXML(<a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* element); <a name="l00237"></a>00237 <a name="l00242"></a><a class="code" href="classTelEngine_1_1JGTransport.html#e7d5c2074b1fdf95e9fbb90db1da54ca">00242</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> addTo(<a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* transport) <a name="l00243"></a>00243 { <span class="keywordflow">if</span> (transport) transport-><a class="code" href="classTelEngine_1_1XMLElement.html#766eb1028fd00d9a65a453ac20bc105e">addChild</a>(toXML()); } <a name="l00244"></a>00244 <a name="l00245"></a>00245 <span class="comment">// Attributes</span> <a name="l00246"></a>00246 <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> name; <a name="l00247"></a>00247 <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> address; <a name="l00248"></a>00248 <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> port; <a name="l00249"></a>00249 <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> preference; <a name="l00250"></a>00250 <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> username; <a name="l00251"></a>00251 <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> protocol; <a name="l00252"></a>00252 <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> generation; <a name="l00253"></a>00253 <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> password; <a name="l00254"></a>00254 <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> type; <a name="l00255"></a>00255 <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> network; <a name="l00256"></a>00256 }; <a name="l00257"></a>00257 <a name="l00258"></a>00258 <a name="l00263"></a><a class="code" href="classTelEngine_1_1JGSession.html">00263</a> <span class="keyword">class </span>YJINGLE_API <a class="code" href="classTelEngine_1_1JGSession.html" title="A Jingle session.">JGSession</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1RefObject.html">RefObject</a>, <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a> <a name="l00264"></a>00264 { <a name="l00265"></a>00265 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classTelEngine_1_1JGEvent.html" title="A Jingle event.">JGEvent</a>; <a name="l00266"></a>00266 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classTelEngine_1_1JGEngine.html" title="A Jingle engine.">JGEngine</a>; <a name="l00267"></a>00267 <span class="keyword">public</span>: <a name="l00271"></a><a class="code" href="classTelEngine_1_1JGSession.html#5d74787dedbc4e11c1ab15bf487e61f8">00271</a> <span class="keyword">enum</span> <a class="code" href="classTelEngine_1_1JGSession.html#5d74787dedbc4e11c1ab15bf487e61f8">State</a> { <a name="l00272"></a>00272 Idle = 0, <span class="comment">// Outgoing stream is waiting for </span> <a name="l00273"></a>00273 Pending = 1, <span class="comment">// Session is pending, session-initiate sent/received</span> <a name="l00274"></a>00274 Active = 2, <span class="comment">// Session is active, session-accept sent/received</span> <a name="l00275"></a>00275 Ending = 3, <span class="comment">// Session terminated: Wait for write result</span> <a name="l00276"></a>00276 Destroy = 4, <span class="comment">// The session will be destroyed</span> <a name="l00277"></a>00277 }; <a name="l00278"></a>00278 <a name="l00282"></a><a class="code" href="classTelEngine_1_1JGSession.html#8bb1ef53467e4f61410d12822d922498">00282</a> <span class="keyword">enum</span> <a class="code" href="classTelEngine_1_1JGSession.html#8bb1ef53467e4f61410d12822d922498">Action</a> { <a name="l00283"></a>00283 ActAccept, <span class="comment">// accept</span> <a name="l00284"></a>00284 ActInitiate, <span class="comment">// initiate</span> <a name="l00285"></a>00285 ActReject, <span class="comment">// reject</span> <a name="l00286"></a>00286 ActTerminate, <span class="comment">// terminate</span> <a name="l00287"></a>00287 ActTransport, <span class="comment">// Used to set/get transport info</span> <a name="l00288"></a>00288 ActTransportInfo, <span class="comment">// transport-info</span> <a name="l00289"></a>00289 ActTransportCandidates, <span class="comment">// candidates</span> <a name="l00290"></a>00290 ActTransportAccept, <span class="comment">// transport-accept</span> <a name="l00291"></a>00291 ActContentInfo, <span class="comment">// content-info</span> <a name="l00292"></a>00292 ActDtmf, <span class="comment">// Used to set/get dtmf content-info element</span> <a name="l00293"></a>00293 ActDtmfMethod, <span class="comment">// Used to set/get dtmf method content-info element</span> <a name="l00294"></a>00294 ActCount, <a name="l00295"></a>00295 }; <a name="l00296"></a>00296 <a name="l00300"></a><a class="code" href="classTelEngine_1_1JGSession.html#ca1e72535e7f260e54ed8bbf984dade9">00300</a> <span class="keyword">enum</span> <a class="code" href="classTelEngine_1_1JGSession.html#ca1e72535e7f260e54ed8bbf984dade9">TransportType</a> { <a name="l00301"></a>00301 TransportUnknown, <span class="comment">// Detect transport type on incoming, sent both on outgoing</span> <a name="l00302"></a>00302 TransportInfo, <span class="comment">// transport-info</span> <a name="l00303"></a>00303 TransportCandidates, <span class="comment">// candidates</span> <a name="l00304"></a>00304 }; <a name="l00305"></a>00305 <a name="l00309"></a>00309 <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1JGSession.html" title="A Jingle session.">JGSession</a>(); <a name="l00310"></a>00310 <a name="l00315"></a><a class="code" href="classTelEngine_1_1JGSession.html#bf0a85f6a7ff9ab42c7f7d86b1bc0da8">00315</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> outgoing()<span class="keyword"> const</span> <a name="l00316"></a>00316 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_outgoing; } <a name="l00317"></a>00317 <a name="l00322"></a><a class="code" href="classTelEngine_1_1JGSession.html#ede9f8697f419ef1f866c5d498e07863">00322</a> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& sid()<span class="keyword"> const</span> <a name="l00323"></a>00323 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_sid; } <a name="l00324"></a>00324 <a name="l00329"></a><a class="code" href="classTelEngine_1_1JGSession.html#6d69311c97f52f35724133a03e922036">00329</a> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1JabberID.html" title="A Jabber ID.">JabberID</a>& local()<span class="keyword"> const</span> <a name="l00330"></a>00330 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_localJID; } <a name="l00331"></a>00331 <a name="l00336"></a><a class="code" href="classTelEngine_1_1JGSession.html#53352bbc3dbce3d00e4f1d34c4bdeb33">00336</a> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1JabberID.html" title="A Jabber ID.">JabberID</a>& remote()<span class="keyword"> const</span> <a name="l00337"></a>00337 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_remoteJID; } <a name="l00338"></a>00338 <a name="l00343"></a><a class="code" href="classTelEngine_1_1JGSession.html#3804c9648e6d1325751536cca350f2bf">00343</a> <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1JGSession.html#5d74787dedbc4e11c1ab15bf487e61f8">State</a> state()<span class="keyword"> const</span> <a name="l00344"></a>00344 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_state; } <a name="l00345"></a>00345 <a name="l00350"></a><a class="code" href="classTelEngine_1_1JGSession.html#5eb2c54934a60de9723a484f2bc24736">00350</a> <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1JBStream.html" title="A Jabber stream.">JBStream</a>* stream()<span class="keyword"> const</span> <a name="l00351"></a>00351 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_stream; } <a name="l00352"></a>00352 <a name="l00357"></a><a class="code" href="classTelEngine_1_1JGSession.html#e5a82c8228351a9fffde9c28f71accc0">00357</a> <span class="keyword">inline</span> <span class="keywordtype">void</span>* userData() <a name="l00358"></a>00358 { <span class="keywordflow">return</span> m_private; } <a name="l00359"></a>00359 <a name="l00364"></a><a class="code" href="classTelEngine_1_1JGSession.html#45cb2bc102bf0229853cc9a9ce4d02bb">00364</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> userData(<span class="keywordtype">void</span>* userdata) <a name="l00365"></a>00365 { m_private = userdata; } <a name="l00366"></a>00366 <a name="l00373"></a>00373 <span class="keywordtype">bool</span> accept(<a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* description); <a name="l00374"></a>00374 <a name="l00382"></a>00382 <span class="keywordtype">bool</span> hangup(<span class="keywordtype">bool</span> reject = <span class="keyword">false</span>, <span class="keyword">const</span> <span class="keywordtype">char</span>* msg = 0); <a name="l00383"></a>00383 <a name="l00394"></a>00394 <span class="keywordtype">bool</span> confirm(<a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* xml, <a class="code" href="classTelEngine_1_1XMPPError.html#1d1cfd8ffb84e947f82999c682b666a7">XMPPError::Type</a> error = XMPPError::NoError, <a name="l00395"></a>00395 <span class="keyword">const</span> <span class="keywordtype">char</span>* text = 0, <a class="code" href="classTelEngine_1_1XMPPError.html#b0df38968e4f03a3f1f6d6df0f31f45a">XMPPError::ErrorType</a> type = XMPPError::TypeModify); <a name="l00396"></a>00396 <a name="l00404"></a>00404 <span class="keywordtype">bool</span> sendDtmf(<span class="keyword">const</span> <span class="keywordtype">char</span>* dtmf, <span class="keywordtype">bool</span> buttonUp = <span class="keyword">true</span>); <a name="l00405"></a>00405 <a name="l00411"></a>00411 <span class="keywordtype">bool</span> sendDtmfMethod(<span class="keyword">const</span> <span class="keywordtype">char</span>* method); <a name="l00412"></a>00412 <a name="l00418"></a>00418 <span class="keywordtype">bool</span> denyDtmfMethod(<a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* element); <a name="l00419"></a>00419 <a name="l00426"></a><a class="code" href="classTelEngine_1_1JGSession.html#03baef874b868fcbeff7359f4f580222">00426</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> acceptTransport(<a class="code" href="classTelEngine_1_1JGTransport.html" title="A Jingle transport description.">JGTransport</a>* transport = 0) <a name="l00427"></a>00427 { <span class="keywordflow">return</span> sendTransport(transport,ActTransportAccept); } <a name="l00428"></a>00428 <a name="l00435"></a><a class="code" href="classTelEngine_1_1JGSession.html#d8435d5da9439d6ad08381177a315065">00435</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> sendTransport(<a class="code" href="classTelEngine_1_1JGTransport.html" title="A Jingle transport description.">JGTransport</a>* transport) <a name="l00436"></a>00436 { <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1JGSession.html#d8435d5da9439d6ad08381177a315065">sendTransport</a>(transport,ActTransport); } <a name="l00437"></a>00437 <a name="l00444"></a><a class="code" href="classTelEngine_1_1JGSession.html#bd39602da3be43f8a540fff8fd446be5">00444</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classTelEngine_1_1JGSession.html#bd39602da3be43f8a540fff8fd446be5">sendMessage</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* msg) { <a name="l00445"></a>00445 <span class="keywordflow">return</span> sendStanza(<a class="code" href="classTelEngine_1_1JBMessage.html#c0bb587450cabf4431d376a985b9694f">JBMessage::createMessage</a>(JBMessage::Chat, <a name="l00446"></a>00446 m_localJID,m_remoteJID,0,msg),<span class="keyword">false</span>); <a name="l00447"></a>00447 } <a name="l00448"></a>00448 <a name="l00449"></a>00449 <span class="keyword">protected</span>: <a name="l00461"></a>00461 <a class="code" href="classTelEngine_1_1JGSession.html" title="A Jingle session.">JGSession</a>(<a class="code" href="classTelEngine_1_1JGEngine.html" title="A Jingle engine.">JGEngine</a>* engine, <a class="code" href="classTelEngine_1_1JBStream.html" title="A Jabber stream.">JBStream</a>* stream, <a name="l00462"></a>00462 <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& callerJID, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& calledJID, <a name="l00463"></a>00463 <a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* media, <a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* transport, <a name="l00464"></a>00464 <span class="keywordtype">bool</span> sid, <span class="keyword">const</span> <span class="keywordtype">char</span>* msg = 0); <a name="l00465"></a>00465 <a name="l00473"></a>00473 <a class="code" href="classTelEngine_1_1JGSession.html" title="A Jingle session.">JGSession</a>(<a class="code" href="classTelEngine_1_1JGEngine.html" title="A Jingle engine.">JGEngine</a>* engine, <a class="code" href="classTelEngine_1_1JBEvent.html" title="A Jabber stream event.">JBEvent</a>* event, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& <span class="keywordtype">id</span>, <span class="keywordtype">bool</span> sid); <a name="l00474"></a>00474 <a name="l00478"></a>00478 <span class="keyword">virtual</span> <span class="keywordtype">void</span> destroyed(); <a name="l00479"></a>00479 <a name="l00485"></a>00485 <span class="keywordtype">void</span> enqueue(<a class="code" href="classTelEngine_1_1JBEvent.html" title="A Jabber stream event.">JBEvent</a>* event); <a name="l00486"></a>00486 <a name="l00493"></a>00493 <a class="code" href="classTelEngine_1_1JGEvent.html" title="A Jingle event.">JGEvent</a>* getEvent(u_int64_t time); <a name="l00494"></a>00494 <a name="l00501"></a>00501 <span class="keywordtype">bool</span> sendStanza(<a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* stanza, <span class="keywordtype">bool</span> confirmation = <span class="keyword">true</span>); <a name="l00502"></a>00502 <a name="l00508"></a>00508 <a class="code" href="classTelEngine_1_1JGEvent.html" title="A Jingle event.">JGEvent</a>* decodeJingle(<a class="code" href="classTelEngine_1_1JBEvent.html" title="A Jabber stream event.">JBEvent</a>* jbev); <a name="l00509"></a>00509 <a name="l00517"></a>00517 <a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* createJingle(Action action, <a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* element1 = 0, <a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* element2 = 0); <a name="l00518"></a>00518 <a name="l00525"></a>00525 <span class="keywordtype">bool</span> sendTransport(<a class="code" href="classTelEngine_1_1JGTransport.html" title="A Jingle transport description.">JGTransport</a>* transport, Action act); <a name="l00526"></a>00526 <a name="l00531"></a><a class="code" href="classTelEngine_1_1JGSession.html#6d223b92e52e0b21f8436a65de973d6d">00531</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* lookupState(<span class="keywordtype">int</span> state) <a name="l00532"></a>00532 { <span class="keywordflow">return</span> <a class="code" href="namespaceTelEngine.html#4668c9172c6ae5f59f5782ecc6e05516">lookup</a>(state,s_states); } <a name="l00533"></a>00533 <a name="l00534"></a>00534 <span class="keyword">private</span>: <a name="l00535"></a>00535 <span class="keyword">static</span> <a class="code" href="structTelEngine_1_1TokenDict.html">TokenDict</a> s_states[]; <span class="comment">// Session state names</span> <a name="l00536"></a>00536 <span class="keyword">static</span> <a class="code" href="structTelEngine_1_1TokenDict.html">TokenDict</a> s_actions[]; <span class="comment">// Action names</span> <a name="l00537"></a>00537 <a name="l00538"></a>00538 <a class="code" href="classTelEngine_1_1JGSession.html" title="A Jingle session.">JGSession</a>() {} <span class="comment">// Don't use it</span> <a name="l00539"></a>00539 <span class="comment">// Terminate notification from an event. Reset the last generated event.</span> <a name="l00540"></a>00540 <span class="keywordtype">void</span> eventTerminated(JGEvent* event); <a name="l00541"></a>00541 <span class="comment">// Change session state</span> <a name="l00542"></a>00542 <span class="keywordtype">void</span> changeState(State newState); <a name="l00543"></a>00543 <a name="l00544"></a>00544 <span class="comment">// State info</span> <a name="l00545"></a>00545 State m_state; <span class="comment">// Session state</span> <a name="l00546"></a>00546 TransportType m_transportType; <span class="comment">// Remote client transport type</span> <a name="l00547"></a>00547 <span class="comment">// Links</span> <a name="l00548"></a>00548 JGEngine* m_engine; <span class="comment">// The engine that owns this session</span> <a name="l00549"></a>00549 JBStream* m_stream; <span class="comment">// The stream this session is bound to</span> <a name="l00550"></a>00550 <span class="comment">// Session info</span> <a name="l00551"></a>00551 <span class="keywordtype">bool</span> m_outgoing; <span class="comment">// Session direction</span> <a name="l00552"></a>00552 String m_sid; <span class="comment">// Session id</span> <a name="l00553"></a>00553 JabberID m_localJID; <span class="comment">// Local peer's JID</span> <a name="l00554"></a>00554 JabberID m_remoteJID; <span class="comment">// Remote peer's JID</span> <a name="l00555"></a>00555 String m_sidAttr; <span class="comment">// Session id attribute name</span> <a name="l00556"></a>00556 <span class="comment">// Session data</span> <a name="l00557"></a>00557 ObjList m_events; <span class="comment">// Incoming events from Jabber engine</span> <a name="l00558"></a>00558 JGEvent* m_lastEvent; <span class="comment">// Last generated event</span> <a name="l00559"></a>00559 <span class="keywordtype">void</span>* m_private; <span class="comment">// Arbitrary user data</span> <a name="l00560"></a>00560 <span class="comment">// Sent stanzas id generation</span> <a name="l00561"></a>00561 String m_localSid; <span class="comment">// Local session id (used to generate element's id)</span> <a name="l00562"></a>00562 u_int32_t m_stanzaId; <span class="comment">// Sent stanza id counter</span> <a name="l00563"></a>00563 ObjList m_sentStanza; <span class="comment">// Sent stanzas' id</span> <a name="l00564"></a>00564 }; <a name="l00565"></a>00565 <a name="l00570"></a><a class="code" href="classTelEngine_1_1JGEvent.html">00570</a> <span class="keyword">class </span>YJINGLE_API <a class="code" href="classTelEngine_1_1JGEvent.html" title="A Jingle event.">JGEvent</a> <a name="l00571"></a>00571 { <a name="l00572"></a>00572 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classTelEngine_1_1JGSession.html" title="A Jingle session.">JGSession</a>; <a name="l00573"></a>00573 <span class="keyword">public</span>: <a name="l00577"></a><a class="code" href="classTelEngine_1_1JGEvent.html#1d1cfd8ffb84e947f82999c682b666a7">00577</a> <span class="keyword">enum</span> <a class="code" href="classTelEngine_1_1JGEvent.html#1d1cfd8ffb84e947f82999c682b666a7">Type</a> { <a name="l00578"></a>00578 Jingle, <span class="comment">// Actions:</span> <a name="l00579"></a>00579 <span class="comment">// ActAccept</span> <a name="l00580"></a>00580 <span class="comment">// ActInitiate</span> <a name="l00581"></a>00581 <span class="comment">// ActTransport Transport candidade(s)</span> <a name="l00582"></a>00582 <span class="comment">// ActTransportAccept</span> <a name="l00583"></a>00583 <span class="comment">// ActDtmf m_reason is button-up/button-down. m_text is the dtmf</span> <a name="l00584"></a>00584 <span class="comment">// ActDtmfMethod m_text is the dtmf method: rtp/xmpp</span> <a name="l00585"></a>00585 <span class="comment">// Final</span> <a name="l00586"></a>00586 Terminated, <span class="comment">// m_element is the element that caused the termination</span> <a name="l00587"></a>00587 <span class="comment">// m_reason contains the reason</span> <a name="l00588"></a>00588 Destroy, <span class="comment">// The engine sould delete the event (causing session destruction)</span> <a name="l00589"></a>00589 }; <a name="l00590"></a>00590 <a name="l00594"></a>00594 <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1JGEvent.html" title="A Jingle event.">JGEvent</a>(); <a name="l00595"></a>00595 <a name="l00600"></a><a class="code" href="classTelEngine_1_1JGEvent.html#fbd0fa31db28593e9669c3c56711c0a7">00600</a> <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1JGEvent.html#1d1cfd8ffb84e947f82999c682b666a7">Type</a> type()<span class="keyword"> const</span> <a name="l00601"></a>00601 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_type; } <a name="l00602"></a>00602 <a name="l00607"></a><a class="code" href="classTelEngine_1_1JGEvent.html#250976eeb667f83340f1a961fc0cf93a">00607</a> <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1JGSession.html" title="A Jingle session.">JGSession</a>* session()<span class="keyword"> const</span> <a name="l00608"></a>00608 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_session; } <a name="l00609"></a>00609 <a name="l00614"></a><a class="code" href="classTelEngine_1_1JGEvent.html#097b09ca0cd260fcdb0f05c34473847c">00614</a> <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* element()<span class="keyword"> const</span> <a name="l00615"></a>00615 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_element; } <a name="l00616"></a>00616 <a name="l00621"></a><a class="code" href="classTelEngine_1_1JGEvent.html#3f7fe152abb15d001ac176114964f327">00621</a> <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1JGSession.html#8bb1ef53467e4f61410d12822d922498">JGSession::Action</a> action()<span class="keyword"> const</span> <a name="l00622"></a>00622 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_action; } <a name="l00623"></a>00623 <a name="l00628"></a><a class="code" href="classTelEngine_1_1JGEvent.html#3598ed3af10ef068657b65f95089bcd5">00628</a> <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1JGAudioList.html" title="A List of Jingle data payloads.">JGAudioList</a>& audio() <a name="l00629"></a>00629 { <span class="keywordflow">return</span> m_audio; } <a name="l00630"></a>00630 <a name="l00635"></a><a class="code" href="classTelEngine_1_1JGEvent.html#fd3d48785af7f3a0d79c89e336129c7e">00635</a> <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>& transport() <a name="l00636"></a>00636 { <span class="keywordflow">return</span> m_transport; } <a name="l00637"></a>00637 <a name="l00642"></a><a class="code" href="classTelEngine_1_1JGEvent.html#e537a056a2d8316444575696aa701bbd">00642</a> <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& id()<span class="keyword"> const</span> <a name="l00643"></a>00643 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_id; } <a name="l00644"></a>00644 <a name="l00649"></a><a class="code" href="classTelEngine_1_1JGEvent.html#4e3addfdb1af4d3a2d4716a6343921ea">00649</a> <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& reason()<span class="keyword"> const</span> <a name="l00650"></a>00650 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_reason; } <a name="l00651"></a>00651 <a name="l00656"></a><a class="code" href="classTelEngine_1_1JGEvent.html#b9dd7ce5697473f1226828da52353f6b">00656</a> <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& text()<span class="keyword"> const</span> <a name="l00657"></a>00657 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_text; } <a name="l00658"></a>00658 <a name="l00663"></a><a class="code" href="classTelEngine_1_1JGEvent.html#6ce67cd364c3a85ec5c63c629e18d8a2">00663</a> <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* <a class="code" href="classTelEngine_1_1JGEvent.html#6ce67cd364c3a85ec5c63c629e18d8a2">releaseXML</a>() { <a name="l00664"></a>00664 <a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* tmp = m_element; <a name="l00665"></a>00665 m_element = 0; <a name="l00666"></a>00666 <span class="keywordflow">return</span> tmp; <a name="l00667"></a>00667 } <a name="l00668"></a>00668 <a name="l00673"></a><a class="code" href="classTelEngine_1_1JGEvent.html#32921c16f78fbf22e8f553ec5d355285">00673</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <span class="keyword">final</span>() <span class="keyword">const</span> <a name="l00674"></a>00674 { <span class="keywordflow">return</span> m_type == Terminated || m_type == Destroy; } <a name="l00675"></a>00675 <a name="l00676"></a>00676 <span class="keyword">protected</span>: <a name="l00685"></a><a class="code" href="classTelEngine_1_1JGEvent.html#832a932e8af0013b89f2ffe03dadf7f4">00685</a> <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1JGEvent.html" title="A Jingle event.">JGEvent</a>(<a class="code" href="classTelEngine_1_1JGEvent.html#1d1cfd8ffb84e947f82999c682b666a7">Type</a> type, <a class="code" href="classTelEngine_1_1JGSession.html" title="A Jingle session.">JGSession</a>* session, <a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* element = 0, <a name="l00686"></a>00686 <span class="keyword">const</span> <span class="keywordtype">char</span>* reason = 0, <span class="keyword">const</span> <span class="keywordtype">char</span>* text = 0) <a name="l00687"></a>00687 : m_type(type), m_session(0), m_element(element), m_action(<a class="code" href="classTelEngine_1_1JGSession.html" title="A Jingle session.">JGSession</a>::ActCount), <a name="l00688"></a>00688 m_reason(reason), m_text(text) <a name="l00689"></a>00689 { init(session); } <a name="l00690"></a>00690 <a name="l00699"></a><a class="code" href="classTelEngine_1_1JGEvent.html#8a9a308ab51ad7c5957241a74203a8d4">00699</a> <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1JGEvent.html" title="A Jingle event.">JGEvent</a>(<a class="code" href="classTelEngine_1_1JGSession.html#8bb1ef53467e4f61410d12822d922498">JGSession::Action</a> act, <a class="code" href="classTelEngine_1_1JGSession.html" title="A Jingle session.">JGSession</a>* session, <a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* element, <a name="l00700"></a>00700 <span class="keyword">const</span> <span class="keywordtype">char</span>* reason = 0, <span class="keyword">const</span> <span class="keywordtype">char</span>* text = 0) <a name="l00701"></a>00701 : m_type(Jingle), m_session(0), m_element(element), m_action(act), <a name="l00702"></a>00702 m_reason(reason), m_text(text) <a name="l00703"></a>00703 { init(session); } <a name="l00704"></a>00704 <a name="l00705"></a>00705 <span class="keyword">private</span>: <a name="l00706"></a>00706 <a class="code" href="classTelEngine_1_1JGEvent.html" title="A Jingle event.">JGEvent</a>() {} <span class="comment">// Don't use it</span> <a name="l00707"></a>00707 <span class="keywordtype">void</span> init(JGSession* session); <a name="l00708"></a>00708 <a name="l00709"></a>00709 Type m_type; <span class="comment">// The type of this event</span> <a name="l00710"></a>00710 JGSession* m_session; <span class="comment">// Jingle session that generated this event</span> <a name="l00711"></a>00711 XMLElement* m_element; <span class="comment">// XML element that generated this event</span> <a name="l00712"></a>00712 <span class="comment">// Event specific</span> <a name="l00713"></a>00713 <a class="code" href="classTelEngine_1_1JGSession.html#8bb1ef53467e4f61410d12822d922498">JGSession::Action</a> m_action; <span class="comment">// The action if type is Jingle</span> <a name="l00714"></a>00714 JGAudioList m_audio; <span class="comment">// The received audio payloads</span> <a name="l00715"></a>00715 ObjList m_transport; <span class="comment">// The received transport data</span> <a name="l00716"></a>00716 String m_id; <span class="comment">// The element's id attribute</span> <a name="l00717"></a>00717 String m_reason; <span class="comment">// The reason if type is Error or Terminated </span> <a name="l00718"></a>00718 String m_text; <span class="comment">// Dtmf text</span> <a name="l00719"></a>00719 }; <a name="l00720"></a>00720 <a name="l00726"></a><a class="code" href="classTelEngine_1_1JGEngine.html">00726</a> <span class="keyword">class </span>YJINGLE_API <a class="code" href="classTelEngine_1_1JGEngine.html" title="A Jingle engine.">JGEngine</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1JBService.html" title="A Jabber service.">JBService</a>, <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1JBThreadList.html" title="A list of private threads.">JBThreadList</a> <a name="l00727"></a>00727 { <a name="l00728"></a>00728 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classTelEngine_1_1JGSession.html" title="A Jingle session.">JGSession</a>; <a name="l00729"></a>00729 <span class="keyword">public</span>: <a name="l00736"></a>00736 <a class="code" href="classTelEngine_1_1JGEngine.html" title="A Jingle engine.">JGEngine</a>(<a class="code" href="classTelEngine_1_1JBEngine.html" title="A Jabber engine.">JBEngine</a>* engine, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>* params, <span class="keywordtype">int</span> prio = 0); <a name="l00737"></a>00737 <a name="l00741"></a>00741 <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1JGEngine.html" title="A Jingle engine.">JGEngine</a>(); <a name="l00742"></a>00742 <a name="l00747"></a><a class="code" href="classTelEngine_1_1JGEngine.html#eb263837b83d9b611cc6aea658437802">00747</a> <span class="keyword">inline</span> u_int64_t stanzaTimeout()<span class="keyword"> const</span> <a name="l00748"></a>00748 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_stanzaTimeout; } <a name="l00749"></a>00749 <a name="l00754"></a>00754 <span class="keyword">virtual</span> <span class="keywordtype">void</span> initialize(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>& params); <a name="l00755"></a>00755 <a name="l00762"></a>00762 <a class="code" href="classTelEngine_1_1JGEvent.html" title="A Jingle event.">JGEvent</a>* getEvent(u_int64_t time); <a name="l00763"></a>00763 <a name="l00774"></a>00774 <a class="code" href="classTelEngine_1_1JGSession.html" title="A Jingle session.">JGSession</a>* call(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& callerName, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& remoteJID, <a name="l00775"></a>00775 <a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* media, <a class="code" href="classTelEngine_1_1XMLElement.html" title="An XML element.">XMLElement</a>* transport, <span class="keyword">const</span> <span class="keywordtype">char</span>* msg = 0); <a name="l00776"></a>00776 <a name="l00781"></a>00781 <span class="keywordtype">void</span> defProcessEvent(<a class="code" href="classTelEngine_1_1JGEvent.html" title="A Jingle event.">JGEvent</a>* event); <a name="l00782"></a>00782 <a name="l00788"></a>00788 <span class="keyword">virtual</span> <span class="keywordtype">void</span> processEvent(<a class="code" href="classTelEngine_1_1JGEvent.html" title="A Jingle event.">JGEvent</a>* event); <a name="l00789"></a>00789 <a name="l00790"></a>00790 <span class="keyword">protected</span>: <a name="l00798"></a>00798 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> accept(<a class="code" href="classTelEngine_1_1JBEvent.html" title="A Jabber stream event.">JBEvent</a>* event, <span class="keywordtype">bool</span>& processed, <span class="keywordtype">bool</span>& insert); <a name="l00799"></a>00799 <a name="l00800"></a>00800 <span class="keyword">private</span>: <a name="l00801"></a>00801 <span class="comment">// Create a local session id</span> <a name="l00802"></a>00802 <span class="keywordtype">void</span> createSessionId(<a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& <span class="keywordtype">id</span>); <a name="l00803"></a>00803 <a name="l00804"></a>00804 <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a> m_sessions; <span class="comment">// List of sessions</span> <a name="l00805"></a>00805 <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a> m_sessionIdMutex; <span class="comment">// Session id counter lock</span> <a name="l00806"></a>00806 u_int32_t m_sessionId; <span class="comment">// Session id counter</span> <a name="l00807"></a>00807 u_int64_t m_stanzaTimeout; <span class="comment">// The timeout of a sent stanza</span> <a name="l00808"></a>00808 <span class="keywordtype">bool</span> m_useSidAttr; <span class="comment">// Use 'sid' for session id attribute name for outgoing calls</span> <a name="l00809"></a>00809 }; <a name="l00810"></a>00810 <a name="l00811"></a>00811 <a name="l00816"></a><a class="code" href="classTelEngine_1_1JGSentStanza.html">00816</a> <span class="keyword">class </span>YJINGLE_API <a class="code" href="classTelEngine_1_1JGSentStanza.html" title="Send stanza timeout info.">JGSentStanza</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> <a name="l00817"></a>00817 { <a name="l00818"></a>00818 <span class="keyword">public</span>: <a name="l00824"></a><a class="code" href="classTelEngine_1_1JGSentStanza.html#451b08f7358ec4c3a5e8fc2bef7934b2">00824</a> <a class="code" href="classTelEngine_1_1JGSentStanza.html" title="Send stanza timeout info.">JGSentStanza</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keywordtype">id</span>, u_int64_t time) <a name="l00825"></a>00825 : <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>(id), m_time(time) <a name="l00826"></a>00826 {} <a name="l00827"></a>00827 <a name="l00832"></a><a class="code" href="classTelEngine_1_1JGSentStanza.html#c0047fd6571de8227f231fa8fcd4453c">00832</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> timeout(u_int64_t time)<span class="keyword"> const</span> <a name="l00833"></a>00833 <span class="keyword"> </span>{ <span class="keywordflow">return</span> time > m_time; } <a name="l00834"></a>00834 <a name="l00835"></a>00835 <span class="keyword">private</span>: <a name="l00836"></a>00836 u_int64_t m_time; <span class="comment">// Timeout</span> <a name="l00837"></a>00837 }; <a name="l00838"></a>00838 <a name="l00839"></a>00839 } <a name="l00840"></a>00840 <a name="l00841"></a>00841 <span class="preprocessor">#endif </span><span class="comment">/* __YATEJINGLE_H */</span> <a name="l00842"></a>00842 <a name="l00843"></a>00843 <span class="comment">/* vi: set ts=8 sw=4 sts=4 noet: */</span> </pre></div></div> <hr size="1"><address style="text-align: right;"><small>Generated on Sun Dec 7 21:36:10 2008 for Yate by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.7.1 </small></address> </body> </html>