Sophie

Sophie

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

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: yatengine.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>yatengine.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * yatengine.h</span>
<a name="l00003"></a>00003 <span class="comment"> * This file is part of the YATE Project http://YATE.null.ro</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
<a name="l00005"></a>00005 <span class="comment"> * Engine, plugins and messages related classes</span>
<a name="l00006"></a>00006 <span class="comment"> *</span>
<a name="l00007"></a>00007 <span class="comment"> * Yet Another Telephony Engine - a fully featured software PBX and IVR</span>
<a name="l00008"></a>00008 <span class="comment"> * Copyright (C) 2004-2006 Null Team</span>
<a name="l00009"></a>00009 <span class="comment"> *</span>
<a name="l00010"></a>00010 <span class="comment"> * This program is free software; you can redistribute it and/or modify</span>
<a name="l00011"></a>00011 <span class="comment"> * it under the terms of the GNU General Public License as published by</span>
<a name="l00012"></a>00012 <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span>
<a name="l00013"></a>00013 <span class="comment"> * (at your option) any later version.</span>
<a name="l00014"></a>00014 <span class="comment"> *</span>
<a name="l00015"></a>00015 <span class="comment"> * This program is distributed in the hope that it will be useful,</span>
<a name="l00016"></a>00016 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00017"></a>00017 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<a name="l00018"></a>00018 <span class="comment"> * GNU General Public License for more details.</span>
<a name="l00019"></a>00019 <span class="comment"> *</span>
<a name="l00020"></a>00020 <span class="comment"> * You should have received a copy of the GNU General Public License</span>
<a name="l00021"></a>00021 <span class="comment"> * along with this program; if not, write to the Free Software</span>
<a name="l00022"></a>00022 <span class="comment"> * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.</span>
<a name="l00023"></a>00023 <span class="comment"> */</span>
<a name="l00024"></a>00024 
<a name="l00025"></a>00025 <span class="preprocessor">#ifndef __YATENGINE_H</span>
<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define __YATENGINE_H</span>
<a name="l00027"></a>00027 <span class="preprocessor"></span>
<a name="l00028"></a>00028 <span class="preprocessor">#ifndef __cplusplus</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#error C++ is required</span>
<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00031"></a>00031 <span class="preprocessor"></span>
<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;yateclass.h&gt;</span>
<a name="l00033"></a>00033         
<a name="l00037"></a>00037 <span class="keyword">namespace </span>TelEngine {
<a name="l00038"></a>00038 
<a name="l00043"></a><a class="code" href="classTelEngine_1_1Configuration.html">00043</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1Configuration.html" title="Configuration file handling.">Configuration</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="l00044"></a>00044 {
<a name="l00045"></a>00045 <span class="keyword">public</span>:
<a name="l00049"></a>00049     <a class="code" href="classTelEngine_1_1Configuration.html" title="Configuration file handling.">Configuration</a>();
<a name="l00050"></a>00050 
<a name="l00056"></a>00056     <a class="code" href="classTelEngine_1_1Configuration.html" title="Configuration file handling.">Configuration</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename, <span class="keywordtype">bool</span> warn = <span class="keyword">true</span>);
<a name="l00057"></a>00057 
<a name="l00061"></a><a class="code" href="classTelEngine_1_1Configuration.html#4fb4265e174bda11146385e8c4b8ea3c">00061</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Configuration.html" title="Configuration file handling.">Configuration</a>&amp; operator=(<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="l00062"></a>00062         { <a class="code" href="classTelEngine_1_1String.html#eec29f03ccc4bb7fc94e3e44ad7d761a">String::operator=</a>(value); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l00063"></a>00063 
<a name="l00068"></a><a class="code" href="classTelEngine_1_1Configuration.html#28614e1f829a789176e1ebec3f7ab7c8">00068</a>     <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sections()<span class="keyword"> const</span>
<a name="l00069"></a>00069 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_sections.length(); }
<a name="l00070"></a>00070 
<a name="l00076"></a>00076     <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>* getSection(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index) <span class="keyword">const</span>;
<a name="l00077"></a>00077 
<a name="l00083"></a>00083     <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>* getSection(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; sect) <span class="keyword">const</span>;
<a name="l00084"></a>00084 
<a name="l00091"></a>00091     <a class="code" href="classTelEngine_1_1NamedString.html" title="A named string class.">NamedString</a>* getKey(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; sect, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; key) <span class="keyword">const</span>;
<a name="l00092"></a>00092 
<a name="l00100"></a>00100     <span class="keyword">const</span> <span class="keywordtype">char</span>* getValue(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; sect, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; key, <span class="keyword">const</span> <span class="keywordtype">char</span>* defvalue = 0) <span class="keyword">const</span>;
<a name="l00101"></a>00101 
<a name="l00109"></a>00109     <span class="keywordtype">int</span> getIntValue(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; sect, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; key, <span class="keywordtype">int</span> defvalue = 0) <span class="keyword">const</span>;
<a name="l00110"></a>00110 
<a name="l00119"></a>00119     <span class="keywordtype">int</span> getIntValue(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; sect, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; key, <span class="keyword">const</span> <a class="code" href="structTelEngine_1_1TokenDict.html">TokenDict</a>* tokens, <span class="keywordtype">int</span> defvalue = 0) <span class="keyword">const</span>;
<a name="l00120"></a>00120 
<a name="l00128"></a>00128     <span class="keywordtype">double</span> getDoubleValue(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; sect, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; key, <span class="keywordtype">double</span> defvalue = 0.0) <span class="keyword">const</span>;
<a name="l00129"></a>00129 
<a name="l00137"></a>00137     <span class="keywordtype">bool</span> getBoolValue(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; sect, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; key, <span class="keywordtype">bool</span> defvalue = <span class="keyword">false</span>) <span class="keyword">const</span>;
<a name="l00138"></a>00138 
<a name="l00143"></a>00143     <span class="keywordtype">void</span> clearSection(<span class="keyword">const</span> <span class="keywordtype">char</span>* sect = 0);
<a name="l00144"></a>00144 
<a name="l00149"></a><a class="code" href="classTelEngine_1_1Configuration.html#6120467f8fb77ab26fc405a152bfc601">00149</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> createSection(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; sect)
<a name="l00150"></a>00150         { <span class="keywordflow">if</span> (sect) makeSectHolder(sect); }
<a name="l00151"></a>00151 
<a name="l00157"></a>00157     <span class="keywordtype">void</span> clearKey(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; sect, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; key);
<a name="l00158"></a>00158 
<a name="l00165"></a>00165     <span class="keywordtype">void</span> addValue(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; sect, <span class="keyword">const</span> <span class="keywordtype">char</span>* key, <span class="keyword">const</span> <span class="keywordtype">char</span>* value = 0);
<a name="l00166"></a>00166 
<a name="l00173"></a>00173     <span class="keywordtype">void</span> setValue(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; sect, <span class="keyword">const</span> <span class="keywordtype">char</span>* key, <span class="keyword">const</span> <span class="keywordtype">char</span>* value = 0);
<a name="l00174"></a>00174 
<a name="l00181"></a>00181     <span class="keywordtype">void</span> setValue(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; sect, <span class="keyword">const</span> <span class="keywordtype">char</span>* key, <span class="keywordtype">int</span> value);
<a name="l00182"></a>00182 
<a name="l00189"></a>00189     <span class="keywordtype">void</span> setValue(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; sect, <span class="keyword">const</span> <span class="keywordtype">char</span>* key, <span class="keywordtype">bool</span> value);
<a name="l00190"></a>00190 
<a name="l00196"></a>00196     <span class="keywordtype">bool</span> load(<span class="keywordtype">bool</span> warn = <span class="keyword">true</span>);
<a name="l00197"></a>00197 
<a name="l00202"></a>00202     <span class="keywordtype">bool</span> save() <span class="keyword">const</span>;
<a name="l00203"></a>00203 
<a name="l00204"></a>00204 <span class="keyword">private</span>:
<a name="l00205"></a>00205     <a class="code" href="classTelEngine_1_1Configuration.html" title="Configuration file handling.">Configuration</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1Configuration.html" title="Configuration file handling.">Configuration</a>&amp; value); <span class="comment">// no copy constructor</span>
<a name="l00206"></a>00206     <a class="code" href="classTelEngine_1_1Configuration.html" title="Configuration file handling.">Configuration</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1Configuration.html" title="Configuration file handling.">Configuration</a>&amp; value); <span class="comment">// no assignment please</span>
<a name="l00207"></a>00207     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a> *getSectHolder(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; sect) <span class="keyword">const</span>;
<a name="l00208"></a>00208     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a> *makeSectHolder(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; sect);
<a name="l00209"></a>00209     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a> m_sections;
<a name="l00210"></a>00210 };
<a name="l00211"></a>00211 
<a name="l00212"></a>00212 <span class="keyword">class </span>MessageDispatcher;
<a name="l00213"></a>00213 
<a name="l00218"></a><a class="code" href="classTelEngine_1_1Message.html">00218</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1Message.html" title="A message container class.">Message</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>
<a name="l00219"></a>00219 {
<a name="l00220"></a>00220     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classTelEngine_1_1MessageDispatcher.html" title="A message dispatching hub.">MessageDispatcher</a>;
<a name="l00221"></a>00221 <span class="keyword">public</span>:
<a name="l00228"></a>00228     <a class="code" href="classTelEngine_1_1Message.html" title="A message container class.">Message</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name, <span class="keyword">const</span> <span class="keywordtype">char</span>* retval = 0);
<a name="l00229"></a>00229 
<a name="l00235"></a>00235     <a class="code" href="classTelEngine_1_1Message.html" title="A message container class.">Message</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1Message.html" title="A message container class.">Message</a>&amp; original);
<a name="l00236"></a>00236 
<a name="l00240"></a>00240     ~<a class="code" href="classTelEngine_1_1Message.html" title="A message container class.">Message</a>();
<a name="l00241"></a>00241 
<a name="l00247"></a>00247     <span class="keyword">virtual</span> <span class="keywordtype">void</span>* getObject(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name) <span class="keyword">const</span>;
<a name="l00248"></a>00248 
<a name="l00253"></a><a class="code" href="classTelEngine_1_1Message.html#b967abea1ca600b2d2162aa33973e248">00253</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; retValue()
<a name="l00254"></a>00254         { <span class="keywordflow">return</span> m_return; }
<a name="l00255"></a>00255 
<a name="l00260"></a><a class="code" href="classTelEngine_1_1Message.html#789cdee8e00b2e8951781b4ac6cdcb48">00260</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; retValue()<span class="keyword"> const</span>
<a name="l00261"></a>00261 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_return; }
<a name="l00262"></a>00262 
<a name="l00267"></a><a class="code" href="classTelEngine_1_1Message.html#ce6af75c8b7cd55f05d20244ab345642">00267</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1RefObject.html">RefObject</a>* userData()<span class="keyword"> const</span>
<a name="l00268"></a>00268 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_data; }
<a name="l00269"></a>00269 
<a name="l00276"></a>00276     <span class="keywordtype">void</span> userData(<a class="code" href="classTelEngine_1_1RefObject.html">RefObject</a>* data);
<a name="l00277"></a>00277 
<a name="l00283"></a><a class="code" href="classTelEngine_1_1Message.html#ee87a391e548199dafc028350e1ea9e8">00283</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span>* userObject(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name)<span class="keyword"> const</span>
<a name="l00284"></a>00284 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_data ? m_data-&gt;getObject(name) : 0; }
<a name="l00285"></a>00285 
<a name="l00286"></a>00286 
<a name="l00292"></a><a class="code" href="classTelEngine_1_1Message.html#3cd31574e84b409024d17ccdae6a96ee">00292</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> setNotify(<span class="keywordtype">bool</span> notify = <span class="keyword">true</span>)
<a name="l00293"></a>00293         { m_notify = notify; }
<a name="l00294"></a>00294 
<a name="l00299"></a><a class="code" href="classTelEngine_1_1Message.html#e74f2e31a8a4563a9608369c2b62be9f">00299</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Time.html" title="A time holding class.">Time</a>&amp; msgTime()
<a name="l00300"></a>00300         { <span class="keywordflow">return</span> m_time; }
<a name="l00301"></a>00301 
<a name="l00306"></a><a class="code" href="classTelEngine_1_1Message.html#7556c4b4228f6d9b541589acfe122b7f">00306</a>     <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1Time.html" title="A time holding class.">Time</a>&amp; msgTime()<span class="keyword"> const</span>
<a name="l00307"></a>00307 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_time; }
<a name="l00308"></a>00308 
<a name="l00312"></a><a class="code" href="classTelEngine_1_1Message.html#b3285a2c0aecead722de9d6c2782ea77">00312</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Message.html" title="A message container class.">Message</a>&amp; operator=(<span class="keyword">const</span> <span class="keywordtype">char</span>* value)
<a name="l00313"></a>00313         { <a class="code" href="classTelEngine_1_1String.html#eec29f03ccc4bb7fc94e3e44ad7d761a">String::operator=</a>(value); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l00314"></a>00314 
<a name="l00320"></a>00320     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> encode(<span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keywordtype">id</span>) <span class="keyword">const</span>;
<a name="l00321"></a>00321 
<a name="l00328"></a>00328     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> encode(<span class="keywordtype">bool</span> received, <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keywordtype">id</span>) <span class="keyword">const</span>;
<a name="l00329"></a>00329 
<a name="l00338"></a>00338     <span class="keywordtype">int</span> decode(<span class="keyword">const</span> <span class="keywordtype">char</span>* str, <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="l00339"></a>00339 
<a name="l00349"></a>00349     <span class="keywordtype">int</span> decode(<span class="keyword">const</span> <span class="keywordtype">char</span>* str, <span class="keywordtype">bool</span>&amp; received, <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keywordtype">id</span>);
<a name="l00350"></a>00350 
<a name="l00351"></a>00351 <span class="keyword">protected</span>:
<a name="l00358"></a>00358     <span class="keyword">virtual</span> <span class="keywordtype">void</span> dispatched(<span class="keywordtype">bool</span> accepted);
<a name="l00359"></a>00359 
<a name="l00360"></a>00360 <span class="keyword">private</span>:
<a name="l00361"></a>00361     <a class="code" href="classTelEngine_1_1Message.html" title="A message container class.">Message</a>(); <span class="comment">// no default constructor please</span>
<a name="l00362"></a>00362     <a class="code" href="classTelEngine_1_1Message.html" title="A message container class.">Message</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1Message.html" title="A message container class.">Message</a>&amp; value); <span class="comment">// no assignment please</span>
<a name="l00363"></a>00363     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> m_return;
<a name="l00364"></a>00364     <a class="code" href="classTelEngine_1_1Time.html" title="A time holding class.">Time</a> m_time;
<a name="l00365"></a>00365     <a class="code" href="classTelEngine_1_1RefObject.html">RefObject</a>* m_data;
<a name="l00366"></a>00366     <span class="keywordtype">bool</span> m_notify;
<a name="l00367"></a>00367     <span class="keywordtype">void</span> commonEncode(<a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; str) <span class="keyword">const</span>;
<a name="l00368"></a>00368     <span class="keywordtype">int</span> commonDecode(<span class="keyword">const</span> <span class="keywordtype">char</span>* str, <span class="keywordtype">int</span> offs);
<a name="l00369"></a>00369 };
<a name="l00370"></a>00370 
<a name="l00377"></a><a class="code" href="classTelEngine_1_1MessageHandler.html">00377</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1MessageHandler.html" title="A message handler.">MessageHandler</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="l00378"></a>00378 {
<a name="l00379"></a>00379     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classTelEngine_1_1MessageDispatcher.html" title="A message dispatching hub.">MessageDispatcher</a>;
<a name="l00380"></a>00380 <span class="keyword">public</span>:
<a name="l00386"></a>00386     <a class="code" href="classTelEngine_1_1MessageHandler.html" title="A message handler.">MessageHandler</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name, <span class="keywordtype">unsigned</span> priority = 100);
<a name="l00387"></a>00387 
<a name="l00391"></a>00391     <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1MessageHandler.html" title="A message handler.">MessageHandler</a>();
<a name="l00392"></a>00392 
<a name="l00396"></a>00396     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#9cc4a4249317f5c7eb006842cf233672">destruct</a>();
<a name="l00397"></a>00397 
<a name="l00403"></a>00403     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> received(<a class="code" href="classTelEngine_1_1Message.html" title="A message container class.">Message</a>&amp; msg) = 0;
<a name="l00404"></a>00404 
<a name="l00409"></a><a class="code" href="classTelEngine_1_1MessageHandler.html#8492b29e4afda6b404448b7c9dfdc174">00409</a>     <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> priority()<span class="keyword"> const</span>
<a name="l00410"></a>00410 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_priority; }
<a name="l00411"></a>00411 
<a name="l00415"></a><a class="code" href="classTelEngine_1_1MessageHandler.html#4b49701c4f4811d91513feec62f48adb">00415</a>     <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1NamedString.html" title="A named string class.">NamedString</a>* filter()<span class="keyword"> const</span>
<a name="l00416"></a>00416 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_filter; }
<a name="l00417"></a>00417 
<a name="l00423"></a>00423     <span class="keywordtype">void</span> setFilter(<a class="code" href="classTelEngine_1_1NamedString.html" title="A named string class.">NamedString</a>* filter);
<a name="l00424"></a>00424 
<a name="l00430"></a><a class="code" href="classTelEngine_1_1MessageHandler.html#73608c76039f6753ba2165bfcb7a7be9">00430</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> setFilter(<span class="keyword">const</span> <span class="keywordtype">char</span>* name, <span class="keyword">const</span> <span class="keywordtype">char</span>* value)
<a name="l00431"></a>00431         { <a class="code" href="classTelEngine_1_1MessageHandler.html#73608c76039f6753ba2165bfcb7a7be9">setFilter</a>(<span class="keyword">new</span> <a class="code" href="classTelEngine_1_1NamedString.html" title="A named string class.">NamedString</a>(name,value)); }
<a name="l00432"></a>00432 
<a name="l00436"></a>00436     <span class="keywordtype">void</span> clearFilter();
<a name="l00437"></a>00437 
<a name="l00438"></a>00438 <span class="keyword">private</span>:
<a name="l00439"></a>00439     <span class="keywordtype">void</span> cleanup();
<a name="l00440"></a>00440     <span class="keywordtype">unsigned</span> m_priority;
<a name="l00441"></a>00441     <a class="code" href="classTelEngine_1_1MessageDispatcher.html" title="A message dispatching hub.">MessageDispatcher</a>* m_dispatcher;
<a name="l00442"></a>00442     <a class="code" href="classTelEngine_1_1NamedString.html" title="A named string class.">NamedString</a>* m_filter;
<a name="l00443"></a>00443 };
<a name="l00444"></a>00444 
<a name="l00449"></a><a class="code" href="classTelEngine_1_1MessageReceiver.html">00449</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1MessageReceiver.html" title="A multiple message receiver.">MessageReceiver</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>
<a name="l00450"></a>00450 {
<a name="l00451"></a>00451 <span class="keyword">public</span>:
<a name="l00458"></a>00458     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> received(<a class="code" href="classTelEngine_1_1Message.html" title="A message container class.">Message</a>&amp; msg, <span class="keywordtype">int</span> <span class="keywordtype">id</span>) = 0;
<a name="l00459"></a>00459 };
<a name="l00460"></a>00460 
<a name="l00465"></a><a class="code" href="classTelEngine_1_1MessageRelay.html">00465</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1MessageRelay.html" title="A message handler relay.">MessageRelay</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1MessageHandler.html" title="A message handler.">MessageHandler</a>
<a name="l00466"></a>00466 {
<a name="l00467"></a>00467 <span class="keyword">public</span>:
<a name="l00475"></a><a class="code" href="classTelEngine_1_1MessageRelay.html#97d63a3dc135a71143376c097f36e887">00475</a>     <a class="code" href="classTelEngine_1_1MessageRelay.html" title="A message handler relay.">MessageRelay</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name, <a class="code" href="classTelEngine_1_1MessageReceiver.html" title="A multiple message receiver.">MessageReceiver</a>* receiver, <span class="keywordtype">int</span> <span class="keywordtype">id</span>, <span class="keywordtype">int</span> priority = 100)
<a name="l00476"></a>00476         : <a class="code" href="classTelEngine_1_1MessageHandler.html" title="A message handler.">MessageHandler</a>(name,priority), m_receiver(receiver), m_id(id) { }
<a name="l00477"></a>00477 
<a name="l00483"></a><a class="code" href="classTelEngine_1_1MessageRelay.html#349325c8b3b3ebebffca0d35e4613b31">00483</a>     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> received(<a class="code" href="classTelEngine_1_1Message.html" title="A message container class.">Message</a>&amp; msg)
<a name="l00484"></a>00484         { <span class="keywordflow">return</span> m_receiver ? m_receiver-&gt;received(msg,m_id) : <span class="keyword">false</span>; }
<a name="l00485"></a>00485 
<a name="l00490"></a><a class="code" href="classTelEngine_1_1MessageRelay.html#e0c063cfb2479f614be43b9d2f92ba63">00490</a>     <span class="keyword">inline</span> <span class="keywordtype">int</span> id()<span class="keyword"> const</span>
<a name="l00491"></a>00491 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_id; }
<a name="l00492"></a>00492 
<a name="l00493"></a>00493 <span class="keyword">private</span>:
<a name="l00494"></a>00494     <a class="code" href="classTelEngine_1_1MessageReceiver.html" title="A multiple message receiver.">MessageReceiver</a>* m_receiver;
<a name="l00495"></a>00495     <span class="keywordtype">int</span> m_id;
<a name="l00496"></a>00496 };
<a name="l00497"></a>00497 
<a name="l00504"></a><a class="code" href="classTelEngine_1_1MessageNotifier.html">00504</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1MessageNotifier.html" title="Post-dispatching message hook.">MessageNotifier</a>
<a name="l00505"></a>00505 {
<a name="l00506"></a>00506 <span class="keyword">public</span>:
<a name="l00510"></a>00510     <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1MessageNotifier.html" title="Post-dispatching message hook.">MessageNotifier</a>();
<a name="l00511"></a>00511 
<a name="l00517"></a>00517     <span class="keyword">virtual</span> <span class="keywordtype">void</span> dispatched(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1Message.html" title="A message container class.">Message</a>&amp; msg, <span class="keywordtype">bool</span> handled) = 0;
<a name="l00518"></a>00518 };
<a name="l00519"></a>00519 
<a name="l00526"></a><a class="code" href="classTelEngine_1_1MessagePostHook.html">00526</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1MessagePostHook.html" title="Post-dispatching message hook that can be added to a list.">MessagePostHook</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>, <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1MessageNotifier.html" title="Post-dispatching message hook.">MessageNotifier</a>
<a name="l00527"></a>00527 {
<a name="l00528"></a>00528 };
<a name="l00529"></a>00529 
<a name="l00536"></a><a class="code" href="classTelEngine_1_1MessageDispatcher.html">00536</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1MessageDispatcher.html" title="A message dispatching hub.">MessageDispatcher</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>
<a name="l00537"></a>00537 {
<a name="l00538"></a>00538 <span class="keyword">public</span>:
<a name="l00542"></a>00542     <a class="code" href="classTelEngine_1_1MessageDispatcher.html" title="A message dispatching hub.">MessageDispatcher</a>();
<a name="l00543"></a>00543 
<a name="l00547"></a>00547     ~<a class="code" href="classTelEngine_1_1MessageDispatcher.html" title="A message dispatching hub.">MessageDispatcher</a>();
<a name="l00548"></a>00548 
<a name="l00554"></a>00554     <span class="keywordtype">bool</span> install(<a class="code" href="classTelEngine_1_1MessageHandler.html" title="A message handler.">MessageHandler</a>* handler);
<a name="l00555"></a>00555 
<a name="l00561"></a>00561     <span class="keywordtype">bool</span> uninstall(<a class="code" href="classTelEngine_1_1MessageHandler.html" title="A message handler.">MessageHandler</a>* handler);
<a name="l00562"></a>00562 
<a name="l00568"></a>00568     <span class="keywordtype">bool</span> dispatch(<a class="code" href="classTelEngine_1_1Message.html" title="A message container class.">Message</a>&amp; msg);
<a name="l00569"></a>00569 
<a name="l00575"></a>00575     <span class="keywordtype">bool</span> enqueue(<a class="code" href="classTelEngine_1_1Message.html" title="A message container class.">Message</a>* msg);
<a name="l00576"></a>00576 
<a name="l00580"></a>00580     <span class="keywordtype">void</span> dequeue();
<a name="l00581"></a>00581 
<a name="l00586"></a>00586     <span class="keywordtype">bool</span> dequeueOne();
<a name="l00587"></a>00587 
<a name="l00592"></a><a class="code" href="classTelEngine_1_1MessageDispatcher.html#1daac6d09975ec8b1ee34fd6cb87033e">00592</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> warnTime(u_int64_t usec)
<a name="l00593"></a>00593         { m_warnTime = usec; }
<a name="l00594"></a>00594 
<a name="l00598"></a><a class="code" href="classTelEngine_1_1MessageDispatcher.html#c8bb3912a3ce86b15842e79d0b421204">00598</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> clear()
<a name="l00599"></a>00599         { m_handlers.clear(); m_hooks.clear(); }
<a name="l00600"></a>00600 
<a name="l00605"></a>00605     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> messageCount();
<a name="l00606"></a>00606 
<a name="l00611"></a>00611     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> handlerCount();
<a name="l00612"></a>00612 
<a name="l00618"></a>00618     <span class="keywordtype">void</span> setHook(<a class="code" href="classTelEngine_1_1MessagePostHook.html" title="Post-dispatching message hook that can be added to a list.">MessagePostHook</a>* hook, <span class="keywordtype">bool</span> <span class="keyword">remove</span> = <span class="keyword">false</span>);
<a name="l00619"></a>00619 
<a name="l00620"></a>00620 <span class="keyword">private</span>:
<a name="l00621"></a>00621     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a> m_handlers;
<a name="l00622"></a>00622     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a> m_messages;
<a name="l00623"></a>00623     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a> m_hooks;
<a name="l00624"></a>00624     <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a> m_mutex;
<a name="l00625"></a>00625     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_changes;
<a name="l00626"></a>00626     u_int64_t m_warnTime;
<a name="l00627"></a>00627 };
<a name="l00628"></a>00628 
<a name="l00639"></a><a class="code" href="classTelEngine_1_1Plugin.html">00639</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1Plugin.html" title="Plugin support.">Plugin</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>
<a name="l00640"></a>00640 {
<a name="l00641"></a>00641 <span class="keyword">public</span>:
<a name="l00647"></a>00647     <a class="code" href="classTelEngine_1_1Plugin.html" title="Plugin support.">Plugin</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name, <span class="keywordtype">bool</span> earlyInit = <span class="keyword">false</span>);
<a name="l00648"></a>00648 
<a name="l00653"></a>00653     <a class="code" href="classTelEngine_1_1Plugin.html" title="Plugin support.">Plugin</a>();
<a name="l00654"></a>00654 
<a name="l00660"></a>00660     <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1Plugin.html" title="Plugin support.">Plugin</a>();
<a name="l00661"></a>00661 
<a name="l00667"></a>00667     <span class="keyword">virtual</span> <span class="keywordtype">void</span>* getObject(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name) <span class="keyword">const</span>;
<a name="l00668"></a>00668 
<a name="l00672"></a>00672     <span class="keyword">virtual</span> <span class="keywordtype">void</span> initialize() = 0;
<a name="l00673"></a>00673 
<a name="l00678"></a><a class="code" href="classTelEngine_1_1Plugin.html#beb36e46a4679f3d29c28d783447a920">00678</a>     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isBusy()<span class="keyword"> const</span>
<a name="l00679"></a>00679 <span class="keyword">        </span>{ <span class="keywordflow">return</span> <span class="keyword">false</span>; }
<a name="l00680"></a>00680 
<a name="l00685"></a><a class="code" href="classTelEngine_1_1Plugin.html#754e909984ca8cced076defa59ce587d">00685</a>     <span class="keywordtype">bool</span> earlyInit()<span class="keyword"> const</span>
<a name="l00686"></a>00686 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_early; }
<a name="l00687"></a>00687 
<a name="l00688"></a>00688 <span class="keyword">private</span>:
<a name="l00689"></a>00689     <span class="keywordtype">bool</span> m_early;
<a name="l00690"></a>00690 };
<a name="l00691"></a>00691 
<a name="l00692"></a>00692 <span class="preprocessor">#if 0 </span><span class="comment">/* for documentation generator */</span>
<a name="l00693"></a>00693 
<a name="l00697"></a>00697 <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#0077aec51e59f7715186818ff95a0d35">INIT_PLUGIN</a>(<span class="keyword">class</span> pclass);
<a name="l00698"></a>00698 
<a name="l00704"></a>00704 <span class="keywordtype">bool</span> <a class="code" href="namespaceTelEngine.html#ac50eebaf157eb6c843612d60b5e3235">UNLOAD_PLUGIN</a>(<span class="keywordtype">bool</span> unloadNow);
<a name="l00705"></a>00705 <span class="preprocessor">#endif</span>
<a name="l00706"></a>00706 <span class="preprocessor"></span>
<a name="l00707"></a>00707 <span class="preprocessor">#define INIT_PLUGIN(pclass) static pclass __plugin</span>
<a name="l00708"></a>00708 <span class="preprocessor"></span><span class="preprocessor">#ifdef _WINDOWS</span>
<a name="l00709"></a>00709 <span class="preprocessor"></span><span class="preprocessor">#define UNLOAD_PLUGIN(arg) extern "C" __declspec(dllexport) bool _unload(bool arg)</span>
<a name="l00710"></a>00710 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00711"></a>00711 <span class="preprocessor"></span><span class="preprocessor">#define UNLOAD_PLUGIN(arg) extern "C" bool _unload(bool arg)</span>
<a name="l00712"></a>00712 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00713"></a>00713 <span class="preprocessor"></span>
<a name="l00720"></a><a class="code" href="classTelEngine_1_1Engine.html">00720</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1Engine.html" title="Engine globals.">Engine</a>
<a name="l00721"></a>00721 {
<a name="l00722"></a>00722     <span class="keyword">friend</span> <span class="keyword">class </span>EnginePrivate;
<a name="l00723"></a>00723     <span class="keyword">friend</span> <span class="keyword">class </span>EngineCommand;
<a name="l00724"></a>00724 <span class="keyword">public</span>:
<a name="l00728"></a><a class="code" href="classTelEngine_1_1Engine.html#3dfe11cf1a3a8121f6cd7fec4bf5947e">00728</a>     <span class="keyword">enum</span> <a class="code" href="classTelEngine_1_1Engine.html#3dfe11cf1a3a8121f6cd7fec4bf5947e">RunMode</a> {
<a name="l00729"></a>00729         Stopped = 0,
<a name="l00730"></a>00730         Console = 1,
<a name="l00731"></a>00731         <a class="code" href="classTelEngine_1_1Client.html" title="Thread that runs the User Interface.">Client</a> = 2,
<a name="l00732"></a>00732         Server = 3,
<a name="l00733"></a>00733     };
<a name="l00734"></a>00734 
<a name="l00741"></a><a class="code" href="classTelEngine_1_1Engine.html#7e0f7aeb7f80a3b65b90416a9719b7a6">00741</a>     <span class="keyword">enum</span> <a class="code" href="classTelEngine_1_1Engine.html#7e0f7aeb7f80a3b65b90416a9719b7a6">PluginMode</a> {
<a name="l00742"></a>00742         LoadFail = 0,
<a name="l00743"></a>00743         LoadLate,
<a name="l00744"></a>00744         LoadEarly
<a name="l00745"></a>00745     };
<a name="l00746"></a>00746 
<a name="l00756"></a>00756     <span class="keyword">static</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keyword">const</span> <span class="keywordtype">char</span>** argv, <span class="keyword">const</span> <span class="keywordtype">char</span>** env,
<a name="l00757"></a>00757         RunMode mode = Console, <span class="keywordtype">bool</span> fail = <span class="keyword">false</span>);
<a name="l00758"></a>00758 
<a name="l00764"></a>00764     <span class="keyword">static</span> <span class="keywordtype">void</span> help(<span class="keywordtype">bool</span> client, <span class="keywordtype">bool</span> errout = <span class="keyword">false</span>);
<a name="l00765"></a>00765 
<a name="l00770"></a>00770     <span class="keywordtype">int</span> run();
<a name="l00771"></a>00771 
<a name="l00776"></a>00776     <span class="keyword">static</span> <a class="code" href="classTelEngine_1_1Engine.html" title="Engine globals.">Engine</a>* <span class="keyword">self</span>();
<a name="l00777"></a>00777 
<a name="l00782"></a><a class="code" href="classTelEngine_1_1Engine.html#1c88d866bcaf4dfc831cb949c147ffd9">00782</a>     <span class="keyword">static</span> <a class="code" href="classTelEngine_1_1Engine.html#3dfe11cf1a3a8121f6cd7fec4bf5947e">RunMode</a> mode()
<a name="l00783"></a>00783         { <span class="keywordflow">return</span> s_mode; }
<a name="l00784"></a>00784 
<a name="l00789"></a><a class="code" href="classTelEngine_1_1Engine.html#166179bca82218afba68ae767d318924">00789</a>     <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> clientMode()
<a name="l00790"></a>00790         { <span class="keywordflow">return</span> s_mode == <a class="code" href="classTelEngine_1_1Client.html" title="Thread that runs the User Interface.">Client</a>; }
<a name="l00791"></a>00791 
<a name="l00798"></a>00798     <span class="keyword">static</span> <span class="keywordtype">bool</span> Register(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1Plugin.html" title="Plugin support.">Plugin</a>* plugin, <span class="keywordtype">bool</span> reg = <span class="keyword">true</span>);
<a name="l00799"></a>00799 
<a name="l00804"></a><a class="code" href="classTelEngine_1_1Engine.html#8a19daacb85cd820012150f4e0215ce6">00804</a>     <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; nodeName()
<a name="l00805"></a>00805         { <span class="keywordflow">return</span> s_node; }
<a name="l00806"></a>00806 
<a name="l00811"></a><a class="code" href="classTelEngine_1_1Engine.html#b0dee886f4c10ebff6904c5851e9fd43">00811</a>     <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; sharedPath()
<a name="l00812"></a>00812         { <span class="keywordflow">return</span> s_shrpath; }
<a name="l00813"></a>00813 
<a name="l00820"></a>00820     <span class="keyword">static</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> configFile(<span class="keyword">const</span> <span class="keywordtype">char</span>* name, <span class="keywordtype">bool</span> user = <span class="keyword">false</span>);
<a name="l00821"></a>00821 
<a name="l00826"></a><a class="code" href="classTelEngine_1_1Engine.html#e9f8c43197bd92c6490e1b45e24228c6">00826</a>     <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; configPath()
<a name="l00827"></a>00827         { <span class="keywordflow">return</span> s_cfgpath; }
<a name="l00828"></a>00828 
<a name="l00833"></a><a class="code" href="classTelEngine_1_1Engine.html#ce3d8ed5872149a0a3e5c5eb54f35b51">00833</a>     <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; configSuffix()
<a name="l00834"></a>00834         { <span class="keywordflow">return</span> s_cfgsuffix; }
<a name="l00835"></a>00835 
<a name="l00839"></a><a class="code" href="classTelEngine_1_1Engine.html#62579eb1a4ef436c184ed7eaf5347ed8">00839</a>     <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; modulePath()
<a name="l00840"></a>00840         { <span class="keywordflow">return</span> s_modpath; }
<a name="l00841"></a>00841 
<a name="l00847"></a>00847     <span class="keyword">static</span> <span class="keywordtype">void</span> extraPath(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; path);
<a name="l00848"></a>00848 
<a name="l00853"></a><a class="code" href="classTelEngine_1_1Engine.html#f76d26ac6cb542db24e1f2f9a7e3e7bf">00853</a>     <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; moduleSuffix()
<a name="l00854"></a>00854         { <span class="keywordflow">return</span> s_modsuffix; }
<a name="l00855"></a>00855 
<a name="l00860"></a>00860     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* pathSeparator();
<a name="l00861"></a>00861 
<a name="l00869"></a>00869     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1Configuration.html" title="Configuration file handling.">Configuration</a>&amp; config();
<a name="l00870"></a>00870 
<a name="l00875"></a>00875     <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> runId();
<a name="l00876"></a>00876 
<a name="l00881"></a><a class="code" href="classTelEngine_1_1Engine.html#8cf10a511683dcdf192e6b53a25515aa">00881</a>     <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>&amp; runParams()
<a name="l00882"></a>00882         { <span class="keywordflow">return</span> s_params; }
<a name="l00883"></a>00883 
<a name="l00887"></a>00887     <span class="keyword">static</span> <span class="keywordtype">void</span> init();
<a name="l00888"></a>00888 
<a name="l00893"></a>00893     <span class="keyword">static</span> <span class="keywordtype">void</span> halt(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> code);
<a name="l00894"></a>00894 
<a name="l00901"></a>00901     <span class="keyword">static</span> <span class="keywordtype">bool</span> restart(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> code, <span class="keywordtype">bool</span> gracefull = <span class="keyword">false</span>);
<a name="l00902"></a>00902 
<a name="l00907"></a><a class="code" href="classTelEngine_1_1Engine.html#f0c7e111b9b125a276685abd649d9577">00907</a>     <span class="keyword">static</span> <span class="keywordtype">bool</span> exiting()
<a name="l00908"></a>00908         { <span class="keywordflow">return</span> (s_haltcode != -1); }
<a name="l00909"></a>00909 
<a name="l00915"></a>00915     <span class="keyword">static</span> <span class="keywordtype">bool</span> install(<a class="code" href="classTelEngine_1_1MessageHandler.html" title="A message handler.">MessageHandler</a>* handler);
<a name="l00916"></a>00916 
<a name="l00922"></a>00922     <span class="keyword">static</span> <span class="keywordtype">bool</span> uninstall(<a class="code" href="classTelEngine_1_1MessageHandler.html" title="A message handler.">MessageHandler</a>* handler);
<a name="l00923"></a>00923 
<a name="l00929"></a>00929     <span class="keyword">static</span> <span class="keywordtype">bool</span> enqueue(<a class="code" href="classTelEngine_1_1Message.html" title="A message container class.">Message</a>* msg);
<a name="l00930"></a>00930 
<a name="l00937"></a><a class="code" href="classTelEngine_1_1Engine.html#c6a841edf269105e16094e91272684fa">00937</a>     <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> enqueue(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)
<a name="l00938"></a>00938         { <span class="keywordflow">return</span> (name &amp;&amp; *name) ? <a class="code" href="classTelEngine_1_1Engine.html#c6a841edf269105e16094e91272684fa">enqueue</a>(<span class="keyword">new</span> <a class="code" href="classTelEngine_1_1Message.html" title="A message container class.">Message</a>(name)) : <span class="keyword">false</span>; }
<a name="l00939"></a>00939 
<a name="l00945"></a>00945     <span class="keyword">static</span> <span class="keywordtype">bool</span> dispatch(<a class="code" href="classTelEngine_1_1Message.html" title="A message container class.">Message</a>* msg);
<a name="l00946"></a>00946 
<a name="l00952"></a>00952     <span class="keyword">static</span> <span class="keywordtype">bool</span> dispatch(<a class="code" href="classTelEngine_1_1Message.html" title="A message container class.">Message</a>&amp; msg);
<a name="l00953"></a>00953 
<a name="l00960"></a>00960     <span class="keyword">static</span> <span class="keywordtype">bool</span> dispatch(<span class="keyword">const</span> <span class="keywordtype">char</span>* name);
<a name="l00961"></a>00961 
<a name="l00967"></a><a class="code" href="classTelEngine_1_1Engine.html#26b1251594cbd70dc5774518ec7b42ba">00967</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> setHook(<a class="code" href="classTelEngine_1_1MessagePostHook.html" title="Post-dispatching message hook that can be added to a list.">MessagePostHook</a>* hook, <span class="keywordtype">bool</span> <span class="keyword">remove</span> = <span class="keyword">false</span>)
<a name="l00968"></a>00968         { m_dispatcher.setHook(hook,<span class="keyword">remove</span>); }
<a name="l00969"></a>00969 
<a name="l00974"></a>00974     <span class="keywordtype">int</span> usedPlugins();
<a name="l00975"></a>00975 
<a name="l00980"></a><a class="code" href="classTelEngine_1_1Engine.html#da7d3d221ee0d87bb9f927f58fc61985">00980</a>     <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> messageCount()
<a name="l00981"></a>00981         { <span class="keywordflow">return</span> m_dispatcher.messageCount(); }
<a name="l00982"></a>00982 
<a name="l00987"></a><a class="code" href="classTelEngine_1_1Engine.html#4da8395b9ce6b8554d26dc8905e2e69b">00987</a>     <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> handlerCount()
<a name="l00988"></a>00988         { <span class="keywordflow">return</span> m_dispatcher.handlerCount(); }
<a name="l00989"></a>00989 
<a name="l00995"></a>00995     <span class="keywordtype">bool</span> loadPluginDir(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; relPath);
<a name="l00996"></a>00996 
<a name="l01001"></a>01001     <span class="keyword">static</span> <span class="keywordtype">void</span> pluginMode(PluginMode mode);
<a name="l01002"></a>01002 
<a name="l01003"></a>01003 <span class="keyword">protected</span>:
<a name="l01008"></a>01008     ~<a class="code" href="classTelEngine_1_1Engine.html" title="Engine globals.">Engine</a>();
<a name="l01009"></a>01009 
<a name="l01016"></a>01016     <span class="keywordtype">bool</span> loadPlugin(<span class="keyword">const</span> <span class="keywordtype">char</span>* file, <span class="keywordtype">bool</span> local = <span class="keyword">false</span>);
<a name="l01017"></a>01017 
<a name="l01021"></a>01021     <span class="keywordtype">void</span> loadPlugins();
<a name="l01022"></a>01022 
<a name="l01026"></a>01026     <span class="keywordtype">void</span> initPlugins();
<a name="l01027"></a>01027 
<a name="l01028"></a>01028 <span class="keyword">private</span>:
<a name="l01029"></a>01029     <a class="code" href="classTelEngine_1_1Engine.html" title="Engine globals.">Engine</a>();
<a name="l01030"></a>01030     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a> m_libs;
<a name="l01031"></a>01031     <a class="code" href="classTelEngine_1_1MessageDispatcher.html" title="A message dispatching hub.">MessageDispatcher</a> m_dispatcher;
<a name="l01032"></a>01032     <span class="keyword">static</span> <a class="code" href="classTelEngine_1_1Engine.html" title="Engine globals.">Engine</a>* s_self;
<a name="l01033"></a>01033     <span class="keyword">static</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> s_node;
<a name="l01034"></a>01034     <span class="keyword">static</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> s_shrpath;
<a name="l01035"></a>01035     <span class="keyword">static</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> s_cfgpath;
<a name="l01036"></a>01036     <span class="keyword">static</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> s_cfgsuffix;
<a name="l01037"></a>01037     <span class="keyword">static</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> s_modpath;
<a name="l01038"></a>01038     <span class="keyword">static</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> s_modsuffix;
<a name="l01039"></a>01039     <span class="keyword">static</span> <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a> s_extramod;
<a name="l01040"></a>01040     <span class="keyword">static</span> <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a> s_params;
<a name="l01041"></a>01041     <span class="keyword">static</span> <span class="keywordtype">int</span> s_haltcode;
<a name="l01042"></a>01042     <span class="keyword">static</span> RunMode s_mode;
<a name="l01043"></a>01043 };
<a name="l01044"></a>01044 
<a name="l01045"></a>01045 }; <span class="comment">// namespace TelEngine</span>
<a name="l01046"></a>01046 
<a name="l01047"></a>01047 <span class="preprocessor">#endif </span><span class="comment">/* __YATENGINE_H */</span>
<a name="l01048"></a>01048 
<a name="l01049"></a>01049 <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>