Sophie

Sophie

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

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: MGCPEngine Class Reference</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 class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="namespaceTelEngine.html">TelEngine</a>::<a class="el" href="classTelEngine_1_1MGCPEngine.html">MGCPEngine</a>
  </div>
</div>
<div class="contents">
<h1>MGCPEngine Class Reference</h1><!-- doxytag: class="TelEngine::MGCPEngine" --><!-- doxytag: inherits="TelEngine::DebugEnabler,TelEngine::Mutex" -->An MGCP engine.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="yatemgcp_8h-source.html">yatemgcp.h</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for MGCPEngine:</div>
<div class="dynsection">

<p><center><img src="classTelEngine_1_1MGCPEngine.png" usemap="#MGCPEngine_map" border="0" alt=""></center>
<map name="MGCPEngine_map">
<area href="classTelEngine_1_1DebugEnabler.html" alt="DebugEnabler" shape="rect" coords="0,0,93,24">
<area href="classTelEngine_1_1Mutex.html" alt="Mutex" shape="rect" coords="103,0,196,24">
</map>
</div>

<p>
<a href="classTelEngine_1_1MGCPEngine-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#90c3aa1eefae2a9d5e44b7dfb223207a">MGCPEngine</a> (bool gateway, const char *name=0, const <a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a> *params=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#b241bc5fed2e8a355ba659b9054a0ad8">~MGCPEngine</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#168174f35fe6d3d17c20839448376efb">gateway</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classTelEngine_1_1SocketAddr.html">SocketAddr</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#1a00da71a0c9df62d14f8d1e7114c021">address</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#ac104bca0ab22dcd26b796eea471da91">maxRecvPacket</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#5d51bafd1d4e1dff30c40d6d52e4d844">allowUnkCmd</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#88c56d2063408582e7552ce192c90405">retransInterval</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#2d304cf8c7eba13b49b81eab25d86bde">retransCount</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">u_int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#f9c23c36f24050cebfcfc083cb1b36f9">extraTime</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#6674c17b17efa7dcd0d131597958e24d">parseParamToLower</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#4efabab8aab5d7b07d963fcfee88164b">provisional</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#c391e1e7a016b4064486b5994fc1fed7">initialize</a> (const <a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a> &amp;params)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#976d53872adfb40020aed036ba20c1a3">knownCommand</a> (const char *cmd)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#0138918d16fa25765362df8cb1bb5294">addCommand</a> (const char *cmd)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#2acb572455dc1f874a40ed6f465cd91b">attach</a> (<a class="el" href="classTelEngine_1_1MGCPEndpoint.html">MGCPEndpoint</a> *ep)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#64beb48a376315c07b1a230854dfc0c5">detach</a> (<a class="el" href="classTelEngine_1_1MGCPEndpoint.html">MGCPEndpoint</a> *ep, bool del=false, bool delTrans=false)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1MGCPEndpoint.html">MGCPEndpoint</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#e35bb8c990a9fbb41ca0746fac528049">findEp</a> (<a class="el" href="classTelEngine_1_1MGCPEndpoint.html">MGCPEndpoint</a> *ep)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1MGCPEndpoint.html">MGCPEndpoint</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#4f46138f5ba74ebefe2c983b8df5377f">findEp</a> (const char *epId)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1MGCPTransaction.html">MGCPTransaction</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#40f2527667489c7744b934c9eceb5dda">findTrans</a> (unsigned int id, bool outgoing)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#828dc2c31fb4257729401913bb60d3cc">getNextId</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1MGCPTransaction.html">MGCPTransaction</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#dc37d0276f1b8b248cc45db20b8de791">sendCommand</a> (<a class="el" href="classTelEngine_1_1MGCPMessage.html">MGCPMessage</a> *cmd, const <a class="el" href="classTelEngine_1_1SocketAddr.html">SocketAddr</a> &amp;address)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#47fc16af954f70e5da3838ce7d83ed02">receive</a> (unsigned char *buffer, <a class="el" href="classTelEngine_1_1SocketAddr.html">SocketAddr</a> &amp;addr)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#e3adffaeb48678d2da69391955d54db7">process</a> (u_int64_t time=<a class="el" href="classTelEngine_1_1Time.html">Time</a>())</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#cfb4d2cba308658e622e0167547de3fc">runReceive</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#1ba3876e9bdfff5967351ac9fee5dc21">runProcess</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1MGCPEvent.html">MGCPEvent</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#fb29cd55e152d370493c6fe726ed5a57">getEvent</a> (u_int64_t time=<a class="el" href="classTelEngine_1_1Time.html">Time</a>())</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#40e32a90fe27e55a83f7ccd7f6ee7977">processEvent</a> (<a class="el" href="classTelEngine_1_1MGCPEvent.html">MGCPEvent</a> *event)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#7b11432761cebe36327714e6ab03de24">processEvent</a> (<a class="el" href="classTelEngine_1_1MGCPTransaction.html">MGCPTransaction</a> *trans, <a class="el" href="classTelEngine_1_1MGCPMessage.html">MGCPMessage</a> *msg, void *data)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#f4bc13c8b9b2767d25e0eb32d11dce5e">returnEvent</a> (<a class="el" href="classTelEngine_1_1MGCPEvent.html">MGCPEvent</a> *event)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#927bc95a3b11c00488399c547921993f">cleanup</a> (bool gracefully=true, const char *text=&quot;Shutdown&quot;)</td></tr>

<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#bfd7758491f107aaedb7597005527947">defaultPort</a> (bool gateway)</td></tr>

<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="structTelEngine_1_1TokenDict.html">TokenDict</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#2c711c367f67df7d917dda157c3fe7de">mgcp_commands</a> []</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="structTelEngine_1_1TokenDict.html">TokenDict</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#6cac4026a904ddfd6fa3dd3d4ff820b4">mgcp_responses</a> []</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="structTelEngine_1_1TokenDict.html">TokenDict</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#2f214ff6343dbc810542a7d08d4d20a8">mgcp_reasons</a> []</td></tr>

<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#19c889242633be7b073ea29af0b473b1">sendData</a> (const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;msg, const <a class="el" href="classTelEngine_1_1SocketAddr.html">SocketAddr</a> &amp;address)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#350e6689b736276571cb5628fb8ca812">appendTrans</a> (<a class="el" href="classTelEngine_1_1MGCPTransaction.html">MGCPTransaction</a> *trans)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#8dfc7030a90e005c5502c97edc25318f">removeTrans</a> (<a class="el" href="classTelEngine_1_1MGCPTransaction.html">MGCPTransaction</a> *trans, bool del)</td></tr>

<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1ObjList.html">ObjList</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#3ba285e2c3097fca9bc29494e68e8b6d">m_endpoints</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1ObjList.html">ObjList</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#308f1907148deb68d7418dca6d7b662c">m_transactions</a></td></tr>

<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="db5cff948254c10fcbfdef1236346d61"></a><!-- doxytag: member="TelEngine::MGCPEngine::MGCPPrivateThread" ref="db5cff948254c10fcbfdef1236346d61" args="" -->
class&nbsp;</td><td class="memItemRight" valign="bottom"><b>MGCPPrivateThread</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6360421efa805d198b4c1849eacabcd7"></a><!-- doxytag: member="TelEngine::MGCPEngine::MGCPTransaction" ref="6360421efa805d198b4c1849eacabcd7" args="" -->
class&nbsp;</td><td class="memItemRight" valign="bottom"><b>MGCPTransaction</b></td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
An MGCP engine. 
<p>
The engine may keep gateway endpoints or call agents Keep the transaction list and manage it (create/delete/modify/timeout...) Keep a list with the endpoints it services Generate transaction numbers (IDs) Parse received messages, validate and send them to the appropriate transaction Send MGCP messages to remote addresses <hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="90c3aa1eefae2a9d5e44b7dfb223207a"></a><!-- doxytag: member="TelEngine::MGCPEngine::MGCPEngine" ref="90c3aa1eefae2a9d5e44b7dfb223207a" args="(bool gateway, const char *name=0, const NamedList *params=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1MGCPEngine.html">MGCPEngine</a>           </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>gateway</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a> *&nbsp;</td>
          <td class="paramname"> <em>params</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Constructor. Construct the engine and, optionally, initialize it <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>gateway</em>&nbsp;</td><td>Engine's mode: true if this engine is an MGCP Gateway, false if it's a collection of Call Agents </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Optional debug name for this engine </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>params</em>&nbsp;</td><td>Optional parameters used to initialize this engine </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="b241bc5fed2e8a355ba659b9054a0ad8"></a><!-- doxytag: member="TelEngine::MGCPEngine::~MGCPEngine" ref="b241bc5fed2e8a355ba659b9054a0ad8" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual ~<a class="el" href="classTelEngine_1_1MGCPEngine.html">MGCPEngine</a>           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Destructor. Clear all lists 
</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="0138918d16fa25765362df8cb1bb5294"></a><!-- doxytag: member="TelEngine::MGCPEngine::addCommand" ref="0138918d16fa25765362df8cb1bb5294" args="(const char *cmd)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void addCommand           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>cmd</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add a command to the list of known commands <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>cmd</em>&nbsp;</td><td>The command name to add </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="1a00da71a0c9df62d14f8d1e7114c021"></a><!-- doxytag: member="TelEngine::MGCPEngine::address" ref="1a00da71a0c9df62d14f8d1e7114c021" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classTelEngine_1_1SocketAddr.html">SocketAddr</a>&amp; address           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the IP address used by this engine to receive data <dl class="return" compact><dt><b>Returns:</b></dt><dd>The IP address used by this engine to receive data </dd></dl>

</div>
</div><p>
<a class="anchor" name="5d51bafd1d4e1dff30c40d6d52e4d844"></a><!-- doxytag: member="TelEngine::MGCPEngine::allowUnkCmd" ref="5d51bafd1d4e1dff30c40d6d52e4d844" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool allowUnkCmd           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check if this engine is allowed to send/accept unknown commands <dl class="return" compact><dt><b>Returns:</b></dt><dd>True if this engine is allowed to send/accept unknown commands </dd></dl>

</div>
</div><p>
<a class="anchor" name="350e6689b736276571cb5628fb8ca812"></a><!-- doxytag: member="TelEngine::MGCPEngine::appendTrans" ref="350e6689b736276571cb5628fb8ca812" args="(MGCPTransaction *trans)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void appendTrans           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTelEngine_1_1MGCPTransaction.html">MGCPTransaction</a> *&nbsp;</td>
          <td class="paramname"> <em>trans</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Append a transaction to the list <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>trans</em>&nbsp;</td><td>The transaction to append </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="2acb572455dc1f874a40ed6f465cd91b"></a><!-- doxytag: member="TelEngine::MGCPEngine::attach" ref="2acb572455dc1f874a40ed6f465cd91b" args="(MGCPEndpoint *ep)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void attach           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTelEngine_1_1MGCPEndpoint.html">MGCPEndpoint</a> *&nbsp;</td>
          <td class="paramname"> <em>ep</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Append an endpoint to this engine if not already done <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ep</em>&nbsp;</td><td>The endpoint to append </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="927bc95a3b11c00488399c547921993f"></a><!-- doxytag: member="TelEngine::MGCPEngine::cleanup" ref="927bc95a3b11c00488399c547921993f" args="(bool gracefully=true, const char *text=&quot;Shutdown&quot;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cleanup           </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>gracefully</em> = <code>true</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>text</em> = <code>&quot;Shutdown&quot;</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Terminate all transactions. Cancel all private threads if any and wait for them to terminate <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>gracefully</em>&nbsp;</td><td>If true, all incoming transaction will be responded and private threads will be gently cancelled. If false, all transactions will be deleted and threads will be cancelled the hard way </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>text</em>&nbsp;</td><td>Optional text to be sent with the response code of the incoming transactions on gracefully cleanup </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="bfd7758491f107aaedb7597005527947"></a><!-- doxytag: member="TelEngine::MGCPEngine::defaultPort" ref="bfd7758491f107aaedb7597005527947" args="(bool gateway)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int defaultPort           </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>gateway</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the default port defined by the protocol <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>gateway</em>&nbsp;</td><td>True to get the default Gateway port, false to get the default port for the Call Agent </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>The default port defined by the protocol </dd></dl>

</div>
</div><p>
<a class="anchor" name="64beb48a376315c07b1a230854dfc0c5"></a><!-- doxytag: member="TelEngine::MGCPEngine::detach" ref="64beb48a376315c07b1a230854dfc0c5" args="(MGCPEndpoint *ep, bool del=false, bool delTrans=false)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void detach           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTelEngine_1_1MGCPEndpoint.html">MGCPEndpoint</a> *&nbsp;</td>
          <td class="paramname"> <em>ep</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>del</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>delTrans</em> = <code>false</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Remove an endpoint from this engine and, optionally, remove all its transactions <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ep</em>&nbsp;</td><td>The endpoint to remove </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>del</em>&nbsp;</td><td>True to delete it, false to just remove it from the list </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>delTrans</em>&nbsp;</td><td>True to remove all its transactions. Forced to true if the endpoint is deleted </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="f9c23c36f24050cebfcfc083cb1b36f9"></a><!-- doxytag: member="TelEngine::MGCPEngine::extraTime" ref="f9c23c36f24050cebfcfc083cb1b36f9" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u_int64_t extraTime           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the time to live after the transaction terminated gracefully <dl class="return" compact><dt><b>Returns:</b></dt><dd>The time to live after the transaction terminated gracefully </dd></dl>

</div>
</div><p>
<a class="anchor" name="4f46138f5ba74ebefe2c983b8df5377f"></a><!-- doxytag: member="TelEngine::MGCPEngine::findEp" ref="4f46138f5ba74ebefe2c983b8df5377f" args="(const char *epId)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1MGCPEndpoint.html">MGCPEndpoint</a>* findEp           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>epId</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Find an endpoint by its id <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>epId</em>&nbsp;</td><td>The endpoint's id to find </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd><a class="el" href="classTelEngine_1_1MGCPEndpoint.html" title="An MGCP endpoint.">MGCPEndpoint</a> pointer or 0 if not found </dd></dl>

</div>
</div><p>
<a class="anchor" name="e35bb8c990a9fbb41ca0746fac528049"></a><!-- doxytag: member="TelEngine::MGCPEngine::findEp" ref="e35bb8c990a9fbb41ca0746fac528049" args="(MGCPEndpoint *ep)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1MGCPEndpoint.html">MGCPEndpoint</a>* findEp           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTelEngine_1_1MGCPEndpoint.html">MGCPEndpoint</a> *&nbsp;</td>
          <td class="paramname"> <em>ep</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Find an endpoint by its pointer <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ep</em>&nbsp;</td><td>The endpoint to find </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd><a class="el" href="classTelEngine_1_1MGCPEndpoint.html" title="An MGCP endpoint.">MGCPEndpoint</a> pointer or 0 if not found </dd></dl>

</div>
</div><p>
<a class="anchor" name="40f2527667489c7744b934c9eceb5dda"></a><!-- doxytag: member="TelEngine::MGCPEngine::findTrans" ref="40f2527667489c7744b934c9eceb5dda" args="(unsigned int id, bool outgoing)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1MGCPTransaction.html">MGCPTransaction</a>* findTrans           </td>
          <td>(</td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>outgoing</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Find a transaction by its id <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>The id of the transaction to find </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>outgoing</em>&nbsp;</td><td>The transaction direction. True for outgoing, false for incoming </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd><a class="el" href="classTelEngine_1_1MGCPTransaction.html" title="An MGCP transaction.">MGCPTransaction</a> pointer or 0 if not found </dd></dl>

</div>
</div><p>
<a class="anchor" name="168174f35fe6d3d17c20839448376efb"></a><!-- doxytag: member="TelEngine::MGCPEngine::gateway" ref="168174f35fe6d3d17c20839448376efb" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool gateway           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check if this engine is an MGCP Gateway or a collection of Call Agents <dl class="return" compact><dt><b>Returns:</b></dt><dd>True if this engine is an MGCP Gateway, false if it's a collection of Call Agents </dd></dl>

</div>
</div><p>
<a class="anchor" name="fb29cd55e152d370493c6fe726ed5a57"></a><!-- doxytag: member="TelEngine::MGCPEngine::getEvent" ref="fb29cd55e152d370493c6fe726ed5a57" args="(u_int64_t time=Time())" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1MGCPEvent.html">MGCPEvent</a>* getEvent           </td>
          <td>(</td>
          <td class="paramtype">u_int64_t&nbsp;</td>
          <td class="paramname"> <em>time</em> = <code><a class="el" href="classTelEngine_1_1Time.html">Time</a>()</code>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Try to get an event from a transaction <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>time</em>&nbsp;</td><td>Current time in microseconds </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd><a class="el" href="classTelEngine_1_1MGCPEvent.html" title="An MGCP event.">MGCPEvent</a> pointer or 0 if none </dd></dl>

</div>
</div><p>
<a class="anchor" name="828dc2c31fb4257729401913bb60d3cc"></a><!-- doxytag: member="TelEngine::MGCPEngine::getNextId" ref="828dc2c31fb4257729401913bb60d3cc" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int getNextId           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Generate a new id for an outgoing transaction <dl class="return" compact><dt><b>Returns:</b></dt><dd>An id for an outgoing transaction </dd></dl>

</div>
</div><p>
<a class="anchor" name="c391e1e7a016b4064486b5994fc1fed7"></a><!-- doxytag: member="TelEngine::MGCPEngine::initialize" ref="c391e1e7a016b4064486b5994fc1fed7" args="(const NamedList &amp;params)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void initialize           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>params</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Initialize this engine <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>params</em>&nbsp;</td><td>Engine's parameters </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="976d53872adfb40020aed036ba20c1a3"></a><!-- doxytag: member="TelEngine::MGCPEngine::knownCommand" ref="976d53872adfb40020aed036ba20c1a3" args="(const char *cmd)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool knownCommand           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>cmd</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check if a command is known by this engine <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>cmd</em>&nbsp;</td><td>The command name to check </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the given command is known by this engine </dd></dl>

</div>
</div><p>
<a class="anchor" name="ac104bca0ab22dcd26b796eea471da91"></a><!-- doxytag: member="TelEngine::MGCPEngine::maxRecvPacket" ref="ac104bca0ab22dcd26b796eea471da91" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int maxRecvPacket           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the maximum length or received packets. This is the size of the buffer used by this engine to read data from the socket <dl class="return" compact><dt><b>Returns:</b></dt><dd>The maximum length or received packets </dd></dl>

</div>
</div><p>
<a class="anchor" name="6674c17b17efa7dcd0d131597958e24d"></a><!-- doxytag: member="TelEngine::MGCPEngine::parseParamToLower" ref="6674c17b17efa7dcd0d131597958e24d" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool parseParamToLower           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check if the parser should convert received messages' parameters to lower case <dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the parser should convert received messages' parameters to lower case </dd></dl>

</div>
</div><p>
<a class="anchor" name="e3adffaeb48678d2da69391955d54db7"></a><!-- doxytag: member="TelEngine::MGCPEngine::process" ref="e3adffaeb48678d2da69391955d54db7" args="(u_int64_t time=Time())" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool process           </td>
          <td>(</td>
          <td class="paramtype">u_int64_t&nbsp;</td>
          <td class="paramname"> <em>time</em> = <code><a class="el" href="classTelEngine_1_1Time.html">Time</a>()</code>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Try to get an event from a transaction. If the event contains an unknown command and this engine is not allowed to process such commands, calls the <a class="el" href="classTelEngine_1_1MGCPEngine.html#f4bc13c8b9b2767d25e0eb32d11dce5e">returnEvent()</a> method, otherwise, calls the <a class="el" href="classTelEngine_1_1MGCPEngine.html#40e32a90fe27e55a83f7ccd7f6ee7977">processEvent()</a> method <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>time</em>&nbsp;</td><td>Current time in microseconds </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if an event was processed </dd></dl>

</div>
</div><p>
<a class="anchor" name="7b11432761cebe36327714e6ab03de24"></a><!-- doxytag: member="TelEngine::MGCPEngine::processEvent" ref="7b11432761cebe36327714e6ab03de24" args="(MGCPTransaction *trans, MGCPMessage *msg, void *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool processEvent           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTelEngine_1_1MGCPTransaction.html">MGCPTransaction</a> *&nbsp;</td>
          <td class="paramname"> <em>trans</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classTelEngine_1_1MGCPMessage.html">MGCPMessage</a> *&nbsp;</td>
          <td class="paramname"> <em>msg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Process an event generated by a transaction. Descendants must override this method if they want to process events <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>trans</em>&nbsp;</td><td>Pointer to the transaction that generated the event </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>msg</em>&nbsp;</td><td>MGCP message of the event, may be NULL </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>User data that is stored in transaction, may be NULL </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the event was processed. If the event carry a received command and it's not processed the transaction will receive an 'unknown command' response </dd></dl>

</div>
</div><p>
<a class="anchor" name="40e32a90fe27e55a83f7ccd7f6ee7977"></a><!-- doxytag: member="TelEngine::MGCPEngine::processEvent" ref="40e32a90fe27e55a83f7ccd7f6ee7977" args="(MGCPEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool processEvent           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTelEngine_1_1MGCPEvent.html">MGCPEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Process an event generated by a transaction. Descendants must override this method if they want to process events. By default it calls the version of processEvent that accepts separate parameters of event <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>event</em>&nbsp;</td><td>The event to process </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the event was processed. If the event carry a received command and it's not processed the transaction will receive an 'unknown command' response </dd></dl>

</div>
</div><p>
<a class="anchor" name="4efabab8aab5d7b07d963fcfee88164b"></a><!-- doxytag: member="TelEngine::MGCPEngine::provisional" ref="4efabab8aab5d7b07d963fcfee88164b" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool provisional           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check if incoming transactions would send provisional responses <dl class="return" compact><dt><b>Returns:</b></dt><dd>True if incoming transactions would send provisional responses </dd></dl>

</div>
</div><p>
<a class="anchor" name="47fc16af954f70e5da3838ce7d83ed02"></a><!-- doxytag: member="TelEngine::MGCPEngine::receive" ref="47fc16af954f70e5da3838ce7d83ed02" args="(unsigned char *buffer, SocketAddr &amp;addr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool receive           </td>
          <td>(</td>
          <td class="paramtype">unsigned char *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classTelEngine_1_1SocketAddr.html">SocketAddr</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>addr</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Read data from the socket. Parse and process the received message <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>Buffer used for read operation. The buffer must be large enough to keep the maximum packet length returned by <a class="el" href="classTelEngine_1_1MGCPEngine.html#ac104bca0ab22dcd26b796eea471da91">maxRecvPacket()</a> </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>The sender's address if received any data </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if received any data (a message was successfully parsed) </dd></dl>

</div>
</div><p>
<a class="anchor" name="8dfc7030a90e005c5502c97edc25318f"></a><!-- doxytag: member="TelEngine::MGCPEngine::removeTrans" ref="8dfc7030a90e005c5502c97edc25318f" args="(MGCPTransaction *trans, bool del)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void removeTrans           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTelEngine_1_1MGCPTransaction.html">MGCPTransaction</a> *&nbsp;</td>
          <td class="paramname"> <em>trans</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>del</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Remove a transaction from the list <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>trans</em>&nbsp;</td><td>The transaction to remove </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>del</em>&nbsp;</td><td>True to delete it, false to just remove it from list </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="2d304cf8c7eba13b49b81eab25d86bde"></a><!-- doxytag: member="TelEngine::MGCPEngine::retransCount" ref="2d304cf8c7eba13b49b81eab25d86bde" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int retransCount           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the maximum number of retransmissions for a message <dl class="return" compact><dt><b>Returns:</b></dt><dd>The maximum number of retransmissions for a message </dd></dl>

</div>
</div><p>
<a class="anchor" name="88c56d2063408582e7552ce192c90405"></a><!-- doxytag: member="TelEngine::MGCPEngine::retransInterval" ref="88c56d2063408582e7552ce192c90405" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int retransInterval           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the message retransmission interval <dl class="return" compact><dt><b>Returns:</b></dt><dd>The message retransmission interval </dd></dl>

</div>
</div><p>
<a class="anchor" name="f4bc13c8b9b2767d25e0eb32d11dce5e"></a><!-- doxytag: member="TelEngine::MGCPEngine::returnEvent" ref="f4bc13c8b9b2767d25e0eb32d11dce5e" args="(MGCPEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void returnEvent           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTelEngine_1_1MGCPEvent.html">MGCPEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns an unprocessed event to this engine to be deleted. Incoming transactions will be responded. Unknown commands will receive a 504 Unknown Command response, the others will receive a 507 Unsupported Functionality one <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>event</em>&nbsp;</td><td>The event to return </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="1ba3876e9bdfff5967351ac9fee5dc21"></a><!-- doxytag: member="TelEngine::MGCPEngine::runProcess" ref="1ba3876e9bdfff5967351ac9fee5dc21" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void runProcess           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Repeatedly calls <a class="el" href="classTelEngine_1_1MGCPEngine.html#e3adffaeb48678d2da69391955d54db7">process()</a> until the calling thread terminates 
</div>
</div><p>
<a class="anchor" name="cfb4d2cba308658e622e0167547de3fc"></a><!-- doxytag: member="TelEngine::MGCPEngine::runReceive" ref="cfb4d2cba308658e622e0167547de3fc" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void runReceive           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Repeatedly calls <a class="el" href="classTelEngine_1_1MGCPEngine.html#47fc16af954f70e5da3838ce7d83ed02">receive()</a> until the calling thread terminates 
</div>
</div><p>
<a class="anchor" name="dc37d0276f1b8b248cc45db20b8de791"></a><!-- doxytag: member="TelEngine::MGCPEngine::sendCommand" ref="dc37d0276f1b8b248cc45db20b8de791" args="(MGCPMessage *cmd, const SocketAddr &amp;address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1MGCPTransaction.html">MGCPTransaction</a>* sendCommand           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTelEngine_1_1MGCPMessage.html">MGCPMessage</a> *&nbsp;</td>
          <td class="paramname"> <em>cmd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1SocketAddr.html">SocketAddr</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>address</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Send a command message. Create a transaction for it. The method will fail if the message is not a valid one or isn't a valid command <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>cmd</em>&nbsp;</td><td>The message containig the command </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>The destination IP address </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd><a class="el" href="classTelEngine_1_1MGCPTransaction.html" title="An MGCP transaction.">MGCPTransaction</a> pointer or 0 if failed to create a transaction </dd></dl>

</div>
</div><p>
<a class="anchor" name="19c889242633be7b073ea29af0b473b1"></a><!-- doxytag: member="TelEngine::MGCPEngine::sendData" ref="19c889242633be7b073ea29af0b473b1" args="(const String &amp;msg, const SocketAddr &amp;address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool sendData           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>msg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1SocketAddr.html">SocketAddr</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>address</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Send a string buffer through the socket <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>msg</em>&nbsp;</td><td>The buffer to send </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>The destination IP address </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>False if the operation failed </dd></dl>

</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="3ba285e2c3097fca9bc29494e68e8b6d"></a><!-- doxytag: member="TelEngine::MGCPEngine::m_endpoints" ref="3ba285e2c3097fca9bc29494e68e8b6d" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1ObjList.html">ObjList</a> <a class="el" href="classTelEngine_1_1MGCPEngine.html#3ba285e2c3097fca9bc29494e68e8b6d">m_endpoints</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The list of endpoints attached to this engine 
</div>
</div><p>
<a class="anchor" name="308f1907148deb68d7418dca6d7b662c"></a><!-- doxytag: member="TelEngine::MGCPEngine::m_transactions" ref="308f1907148deb68d7418dca6d7b662c" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1ObjList.html">ObjList</a> <a class="el" href="classTelEngine_1_1MGCPEngine.html#308f1907148deb68d7418dca6d7b662c">m_transactions</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The transaction list 
</div>
</div><p>
<a class="anchor" name="2c711c367f67df7d917dda157c3fe7de"></a><!-- doxytag: member="TelEngine::MGCPEngine::mgcp_commands" ref="2c711c367f67df7d917dda157c3fe7de" args="[]" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structTelEngine_1_1TokenDict.html">TokenDict</a> <a class="el" href="classTelEngine_1_1MGCPEngine.html#2c711c367f67df7d917dda157c3fe7de">mgcp_commands</a>[]<code> [static]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The list of commands defined in RFC 3435 
</div>
</div><p>
<a class="anchor" name="2f214ff6343dbc810542a7d08d4d20a8"></a><!-- doxytag: member="TelEngine::MGCPEngine::mgcp_reasons" ref="2f214ff6343dbc810542a7d08d4d20a8" args="[]" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structTelEngine_1_1TokenDict.html">TokenDict</a> <a class="el" href="classTelEngine_1_1MGCPEngine.html#2f214ff6343dbc810542a7d08d4d20a8">mgcp_reasons</a>[]<code> [static]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The list of known reason codes defined in RFC 3435 2.5. Reason codes are used by the gateway when deleting a connection to inform the Call Agent about the reason for deleting the connection. They may also be used in a RestartInProgress command to inform the Call Agent of the reason for the RestartInProgress 
</div>
</div><p>
<a class="anchor" name="6cac4026a904ddfd6fa3dd3d4ff820b4"></a><!-- doxytag: member="TelEngine::MGCPEngine::mgcp_responses" ref="6cac4026a904ddfd6fa3dd3d4ff820b4" args="[]" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structTelEngine_1_1TokenDict.html">TokenDict</a> <a class="el" href="classTelEngine_1_1MGCPEngine.html#6cac4026a904ddfd6fa3dd3d4ff820b4">mgcp_responses</a>[]<code> [static]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The list of known responses defined in RFC 3435 2.4 
</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="yatemgcp_8h-source.html">yatemgcp.h</a></ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun Dec 7 21:36:13 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>