<!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 Page</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="files.html"><span>File List</span></a></li> </ul> </div> <h1>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 <yateclass.h></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>& operator=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& value) <a name="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>& 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>& sect, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& 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>& sect, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& 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>& sect, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& 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>& sect, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& 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>& sect, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& 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>& sect, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& 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>& 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>& sect, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& 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>& 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>& 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>& 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>& 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>& 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>& operator=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1Configuration.html" title="Configuration file handling.">Configuration</a>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& name)<span class="keyword"> const</span> <a name="l00284"></a>00284 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_data ? m_data->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>& 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>& 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>& 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>& <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>& 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>& operator=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1Message.html" title="A message container class.">Message</a>& 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>& 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>& 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>& 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>& msg) <a name="l00484"></a>00484 { <span class="keywordflow">return</span> m_receiver ? m_receiver->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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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 && *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>& 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>& 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 <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>