<!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 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 List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class 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 <<a class="el" href="yatemgcp_8h-source.html">yatemgcp.h</a>></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"> </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 </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 </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> & </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 </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 </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 </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 </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 </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 </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 </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 </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> &params)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </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 </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 </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 </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> * </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> * </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> * </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 </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> * </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> &address)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </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> &addr)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </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 </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 </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> * </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 </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 </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 </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1MGCPEngine.html#927bc95a3b11c00488399c547921993f">cleanup</a> (bool gracefully=true, const char *text="Shutdown")</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 </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> </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> </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> </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 </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> &msg, const <a class="el" href="classTelEngine_1_1SocketAddr.html">SocketAddr</a> &address)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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 </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> </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> </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 </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 </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 & 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 </td> <td class="paramname"> <em>gateway</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </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> * </td> <td class="paramname"> <em>params</em> = <code>0</code></td><td> </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> </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> </td><td>Optional debug name for this engine </td></tr> <tr><td valign="top"></td><td valign="top"><em>params</em> </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> ) </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 * </td> <td class="paramname"> <em>cmd</em> </td> <td> ) </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> </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>& address </td> <td>(</td> <td class="paramname"> </td> <td> ) </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> ) </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> * </td> <td class="paramname"> <em>trans</em> </td> <td> ) </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> </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> * </td> <td class="paramname"> <em>ep</em> </td> <td> ) </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> </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="Shutdown")" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void cleanup </td> <td>(</td> <td class="paramtype">bool </td> <td class="paramname"> <em>gracefully</em> = <code>true</code>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>text</em> = <code>"Shutdown"</code></td><td> </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> </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> </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 </td> <td class="paramname"> <em>gateway</em> </td> <td> ) </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> </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> * </td> <td class="paramname"> <em>ep</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"> <em>del</em> = <code>false</code>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"> <em>delTrans</em> = <code>false</code></td><td> </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> </td><td>The endpoint to remove </td></tr> <tr><td valign="top"></td><td valign="top"><em>del</em> </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> </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> ) </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 * </td> <td class="paramname"> <em>epId</em> </td> <td> ) </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> </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> * </td> <td class="paramname"> <em>ep</em> </td> <td> ) </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> </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 </td> <td class="paramname"> <em>id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"> <em>outgoing</em></td><td> </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> </td><td>The id of the transaction to find </td></tr> <tr><td valign="top"></td><td valign="top"><em>outgoing</em> </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> ) </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 </td> <td class="paramname"> <em>time</em> = <code><a class="el" href="classTelEngine_1_1Time.html">Time</a>()</code> </td> <td> ) </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> </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> ) </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 &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> & </td> <td class="paramname"> <em>params</em> </td> <td> ) </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> </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 * </td> <td class="paramname"> <em>cmd</em> </td> <td> ) </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> </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> ) </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> ) </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 </td> <td class="paramname"> <em>time</em> = <code><a class="el" href="classTelEngine_1_1Time.html">Time</a>()</code> </td> <td> ) </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> </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> * </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> * </td> <td class="paramname"> <em>msg</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>data</em></td><td> </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> </td><td>Pointer to the transaction that generated the event </td></tr> <tr><td valign="top"></td><td valign="top"><em>msg</em> </td><td>MGCP message of the event, may be NULL </td></tr> <tr><td valign="top"></td><td valign="top"><em>data</em> </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> * </td> <td class="paramname"> <em>event</em> </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. 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> </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> ) </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 &addr)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool receive </td> <td>(</td> <td class="paramtype">unsigned char * </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> & </td> <td class="paramname"> <em>addr</em></td><td> </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> </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> </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> * </td> <td class="paramname"> <em>trans</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"> <em>del</em></td><td> </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> </td><td>The transaction to remove </td></tr> <tr><td valign="top"></td><td valign="top"><em>del</em> </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> ) </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> ) </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> * </td> <td class="paramname"> <em>event</em> </td> <td> ) </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> </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> ) </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> ) </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 &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> * </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> & </td> <td class="paramname"> <em>address</em></td><td> </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> </td><td>The message containig the command </td></tr> <tr><td valign="top"></td><td valign="top"><em>address</em> </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 &msg, const SocketAddr &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> & </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> & </td> <td class="paramname"> <em>address</em></td><td> </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> </td><td>The buffer to send </td></tr> <tr><td valign="top"></td><td valign="top"><em>address</em> </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 <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>