Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > eeacaa4eb55fa544d622989e42fc27b1 > files > 772

libyate-devel-2.0.0-2mdv2009.1.i586.rpm

<!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&nbsp;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&nbsp;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 &lt;yateclass.h&gt;</span>
<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;yatejabber.h&gt;</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>&amp; 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>&amp; 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>&amp; 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>&amp; 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>&amp; 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-&gt;<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>&amp; 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>&amp; 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>&amp; 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>&amp; callerJID, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; 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>&amp; <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>&amp; 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>&amp; 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>&amp; 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>&amp; 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>&amp; 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>&amp; 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>&amp; callerName, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; 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>&amp; processed, <span class="keywordtype">bool</span>&amp; 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>&amp; <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 &gt; 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&nbsp;
<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>