Sophie

Sophie

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

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: Socket 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_1Socket.html">Socket</a>
  </div>
</div>
<div class="contents">
<h1>Socket Class Reference</h1><!-- doxytag: class="TelEngine::Socket" --><!-- doxytag: inherits="TelEngine::Stream" -->A generic socket class.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="yateclass_8h-source.html">yateclass.h</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for Socket:</div>
<div class="dynsection">

<p><center><img src="classTelEngine_1_1Socket.png" usemap="#Socket_map" border="0" alt=""></center>
<map name="Socket_map">
<area href="classTelEngine_1_1Stream.html" alt="Stream" shape="rect" coords="0,0,51,24">
</map>
</div>

<p>
<a href="classTelEngine_1_1Socket-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 Types</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#f11a28b6d71a01ed512f1252b1f14daf">TOS</a> { <b>LowDelay</b> =  IPTOS_LOWDELAY, 
<b>MaxThroughput</b> =  IPTOS_THROUGHPUT, 
<b>MaxReliability</b> =  IPTOS_RELIABILITY, 
<b>MinCost</b> =  IPTOS_MINCOST
 }</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_1Socket.html#82a9f33812cd255070e2516ee2bf8b77">Socket</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#222463d79927d7c5073087a7764bd00e">Socket</a> (SOCKET handle)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#e2deab3571b8aa8a80f0f89c686e8938">Socket</a> (int domain, int type, int protocol=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_1Socket.html#61c0827b74330b5f2c0fa4842dde74d8">~Socket</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_1Socket.html#94e6966d68a042dad91780b03409dbc1">create</a> (int domain, int type, int protocol=0)</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_1Socket.html#191ac6b231961b9586ed2eadae024d6a">terminate</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_1Socket.html#248f692428529a0a9652abf1c0e8a041">attach</a> (SOCKET handle)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">SOCKET&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#0449771b2000458006f2d621b39bde60">detach</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">SOCKET&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#61c8012d8919b21ca7e8b3bf25b8b188">handle</a> () const </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_1Socket.html#2614cbc71a9f1bae1f70930d007ec6c1">canRetry</a> () const </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_1Socket.html#9fa9d50f99098045df2c2ef3b1af8047">valid</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_1Socket.html#9ad8757f04880e136eb83e899ca35fbf">setOption</a> (int level, int name, const void *value=0, socklen_t length=0)</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_1Socket.html#7a0e2388881e43c00c6879e6119e6e16">getOption</a> (int level, int name, void *buffer, socklen_t *length)</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_1Socket.html#1fcca9fb9d420f36291204048a20461d">setTOS</a> (int tos)</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_1Socket.html#cf353bce1608e9d3734b4c12d1ae7b87">setBlocking</a> (bool block=true)</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_1Socket.html#a831caaf8827ad4220553aac79d17c9e">setReuse</a> (bool reuse=true, bool exclusive=false)</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_1Socket.html#c61690c7dfb92ff8e62aabef99994bde">setLinger</a> (int seconds=-1)</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_1Socket.html#046467b70baa49158df2b839d476b319">bind</a> (struct sockaddr *addr, socklen_t addrlen)</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_1Socket.html#6535ae926f65166dc8faae6b994d10a0">bind</a> (const <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_1Socket.html#43f7123b46363c6824b04193ffb74e62">listen</a> (unsigned int backlog=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1Socket.html">Socket</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#9eca6ff3383a0ccbb18f8dd03551c829">accept</a> (struct sockaddr *addr=0, socklen_t *addrlen=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1Socket.html">Socket</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#47cd03e24f8a9eb0488ce9d2054b7baf">accept</a> (<a class="el" href="classTelEngine_1_1SocketAddr.html">SocketAddr</a> &amp;addr)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">SOCKET&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#e5cdad99db7ab7b795cc295d1c07c25d">acceptHandle</a> (struct sockaddr *addr=0, socklen_t *addrlen=0)</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_1Socket.html#a3296d0bedebd2982ca2f02f93f1a19c">canSelect</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1Socket.html">Socket</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#0a60436281432e08532a563a37bbc266">peelOff</a> (unsigned int assoc)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">SOCKET&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#19d0f02def5255dc039deedba54cba62">peelOffHandle</a> (unsigned int assoc)</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_1Socket.html#73f53f77467d13dc4155eafc28bd367f">connect</a> (struct sockaddr *addr, socklen_t addrlen)</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_1Socket.html#fb9f1e57e9a0df314c8b9f60658e27de">connect</a> (const <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_1Socket.html#a4d417a530b193da58665784019cd067">shutdown</a> (bool stopReads, bool stopWrites)</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_1Socket.html#92e4cda1781b63d67a26d2b2419ee03f">getSockName</a> (struct sockaddr *addr, socklen_t *addrlen)</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_1Socket.html#6971c32dbd4d8d0fdd06b9d71e64d44b">getSockName</a> (<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_1Socket.html#60cb1314a1715f95c43bfd1223aa22bc">getPeerName</a> (struct sockaddr *addr, socklen_t *addrlen)</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_1Socket.html#316d2b1b63ce760154594c0814000eda">getPeerName</a> (<a class="el" href="classTelEngine_1_1SocketAddr.html">SocketAddr</a> &amp;addr)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#643e3af5b36596f0afa03a5309056e3a">sendTo</a> (const void *buffer, int length, const struct sockaddr *addr, socklen_t adrlen, int flags=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#75d1a52c686a25571dac70e2b2f4349d">sendTo</a> (const void *buffer, int length, const <a class="el" href="classTelEngine_1_1SocketAddr.html">SocketAddr</a> &amp;addr, int flags=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#5746a39251cd109a34ddf6ff8bf14bf0">send</a> (const void *buffer, int length, int flags=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#ab8efa96798936c2ed4a76470877ec98">writeData</a> (const void *buffer, int length)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#c5948b3d4507e10259e7ec50e77abff8">recvFrom</a> (void *buffer, int length, struct sockaddr *addr=0, socklen_t *adrlen=0, int flags=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#ffda180021f97c17415d6c1f7bb7a51e">recvFrom</a> (void *buffer, int length, <a class="el" href="classTelEngine_1_1SocketAddr.html">SocketAddr</a> &amp;addr, int flags=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#9c24d1fead11856b9d577f7fb1869dc3">recv</a> (void *buffer, int length, int flags=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#4b0012f52b3982d99359a9178e4862b8">readData</a> (void *buffer, int length)</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_1Socket.html#92c173906182cee60b8fe775e858a863">select</a> (bool *readok, bool *writeok, bool *except, struct timeval *timeout=0)</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_1Socket.html#fd13597e5028687b6ab00c3d56e2b7c5">select</a> (bool *readok, bool *writeok, bool *except, int64_t timeout)</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_1Socket.html#1ccad26362f2e26e34837255c0257b1a">installFilter</a> (<a class="el" href="classTelEngine_1_1SocketFilter.html">SocketFilter</a> *filter)</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_1Socket.html#dd645432dca63e95eb099001091fa2e8">removeFilter</a> (<a class="el" href="classTelEngine_1_1SocketFilter.html">SocketFilter</a> *filter, bool delobj=false)</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_1Socket.html#f13013b8fd73be124730ec9f299c234d">clearFilters</a> ()</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_1Socket.html#c7cf24f02cfa3147bf2cbf6434edb9c0">timerTick</a> (const <a class="el" href="classTelEngine_1_1Time.html">Time</a> &amp;when)</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 SOCKET&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#e5a7bff0230c3f147214fb5ba955e8b9">invalidHandle</a> ()</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_1Socket.html#5c8b3c9bb38330a3fa99ce7b82a828d2">socketError</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#ee1c62d2107c906017ee3372864cd240">canSelect</a> (SOCKET handle)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#4b185ee2300444ea5aed3d875c930a79">createPair</a> (<a class="el" href="classTelEngine_1_1Socket.html">Socket</a> &amp;sock1, <a class="el" href="classTelEngine_1_1Socket.html">Socket</a> &amp;sock2, int domain=AF_UNIX)</td></tr>

<tr><td colspan="2"><br><h2>Protected Member Functions</h2></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_1Socket.html#1a1260c84598b210ae5423cf35150dbd">copyError</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_1Socket.html#8394ee4c5b08b786775444803ee51be5">checkError</a> (int retcode, bool strict=false)</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_1Socket.html#ac3452e0c089a4bf2d248d277cac4aec">applyFilters</a> (void *buffer, int length, int flags, const struct sockaddr *addr=0, socklen_t adrlen=0)</td></tr>

<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="96a989507ed36d2bb288c1d7ed960963"></a><!-- doxytag: member="TelEngine::Socket::m_handle" ref="96a989507ed36d2bb288c1d7ed960963" args="" -->
SOCKET&nbsp;</td><td class="memItemRight" valign="bottom"><b>m_handle</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="eeffe6fd8995f2ee3c6ebc1b8783fd6d"></a><!-- doxytag: member="TelEngine::Socket::m_filters" ref="eeffe6fd8995f2ee3c6ebc1b8783fd6d" args="" -->
<a class="el" href="classTelEngine_1_1ObjList.html">ObjList</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>m_filters</b></td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
A generic socket class. 
<p>
This class encapsulates a system dependent socket in a system independent abstraction <hr><h2>Member Enumeration Documentation</h2>
<a class="anchor" name="f11a28b6d71a01ed512f1252b1f14daf"></a><!-- doxytag: member="TelEngine::Socket::TOS" ref="f11a28b6d71a01ed512f1252b1f14daf" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classTelEngine_1_1Socket.html#f11a28b6d71a01ed512f1252b1f14daf">TOS</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Types of service 
</div>
</div><p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="82a9f33812cd255070e2516ee2bf8b77"></a><!-- doxytag: member="TelEngine::Socket::Socket" ref="82a9f33812cd255070e2516ee2bf8b77" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1Socket.html">Socket</a>           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Default constructor, creates an invalid socket 
</div>
</div><p>
<a class="anchor" name="222463d79927d7c5073087a7764bd00e"></a><!-- doxytag: member="TelEngine::Socket::Socket" ref="222463d79927d7c5073087a7764bd00e" args="(SOCKET handle)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1Socket.html">Socket</a>           </td>
          <td>(</td>
          <td class="paramtype">SOCKET&nbsp;</td>
          <td class="paramname"> <em>handle</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Constructor from an existing handle <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>Operating system handle to an existing socket </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="e2deab3571b8aa8a80f0f89c686e8938"></a><!-- doxytag: member="TelEngine::Socket::Socket" ref="e2deab3571b8aa8a80f0f89c686e8938" args="(int domain, int type, int protocol=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1Socket.html">Socket</a>           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>domain</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>protocol</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 that also creates the socket handle <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>domain</em>&nbsp;</td><td>Communication domain for the socket (protocol family) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>Type specification of the socket </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>protocol</em>&nbsp;</td><td>Specific protocol for the domain, 0 to use default </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="61c0827b74330b5f2c0fa4842dde74d8"></a><!-- doxytag: member="TelEngine::Socket::~Socket" ref="61c0827b74330b5f2c0fa4842dde74d8" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual ~<a class="el" href="classTelEngine_1_1Socket.html">Socket</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 - closes the handle if still open 
</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="47cd03e24f8a9eb0488ce9d2054b7baf"></a><!-- doxytag: member="TelEngine::Socket::accept" ref="47cd03e24f8a9eb0488ce9d2054b7baf" args="(SocketAddr &amp;addr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1Socket.html">Socket</a>* accept           </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;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create a new socket for an incoming connection attempt on a listening 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>addr</em>&nbsp;</td><td>Address to fill in with the address of the incoming connection </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Open socket to the new connection or NULL on failure </dd></dl>

</div>
</div><p>
<a class="anchor" name="9eca6ff3383a0ccbb18f8dd03551c829"></a><!-- doxytag: member="TelEngine::Socket::accept" ref="9eca6ff3383a0ccbb18f8dd03551c829" args="(struct sockaddr *addr=0, socklen_t *addrlen=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1Socket.html">Socket</a>* accept           </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>addr</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t *&nbsp;</td>
          <td class="paramname"> <em>addrlen</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>
Create a new socket for an incoming connection attempt on a listening 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>addr</em>&nbsp;</td><td>Address to fill in with the address of the incoming connection </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addrlen</em>&nbsp;</td><td>Length of the address structure on input, length of address data on return </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Open socket to the new connection or NULL on failure </dd></dl>

</div>
</div><p>
<a class="anchor" name="e5cdad99db7ab7b795cc295d1c07c25d"></a><!-- doxytag: member="TelEngine::Socket::acceptHandle" ref="e5cdad99db7ab7b795cc295d1c07c25d" args="(struct sockaddr *addr=0, socklen_t *addrlen=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">SOCKET acceptHandle           </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>addr</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t *&nbsp;</td>
          <td class="paramname"> <em>addrlen</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>
Create a new socket for an incoming connection attempt on a listening 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>addr</em>&nbsp;</td><td>Address to fill in with the address of the incoming connection </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addrlen</em>&nbsp;</td><td>Length of the address structure on input, length of address data on return </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Operating system handle to the new connection or <a class="el" href="classTelEngine_1_1Socket.html#e5a7bff0230c3f147214fb5ba955e8b9">invalidHandle()</a> on failure </dd></dl>

</div>
</div><p>
<a class="anchor" name="ac3452e0c089a4bf2d248d277cac4aec"></a><!-- doxytag: member="TelEngine::Socket::applyFilters" ref="ac3452e0c089a4bf2d248d277cac4aec" args="(void *buffer, int length, int flags, const struct sockaddr *addr=0, socklen_t adrlen=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool applyFilters           </td>
          <td>(</td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>addr</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>adrlen</em> = <code>0</code></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>
Apply installed filters to a received block of data <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 for received data </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>Length of the data in buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>Operating system specific bit flags of the operation </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>Address of the incoming data, may be NULL </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>adrlen</em>&nbsp;</td><td>Length of the valid data in address structure </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if one of the filters claimed the data </dd></dl>

</div>
</div><p>
<a class="anchor" name="248f692428529a0a9652abf1c0e8a041"></a><!-- doxytag: member="TelEngine::Socket::attach" ref="248f692428529a0a9652abf1c0e8a041" args="(SOCKET handle)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void attach           </td>
          <td>(</td>
          <td class="paramtype">SOCKET&nbsp;</td>
          <td class="paramname"> <em>handle</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Attach an existing handle to the socket, closes any existing first <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>Operating system handle to an existing socket </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="6535ae926f65166dc8faae6b994d10a0"></a><!-- doxytag: member="TelEngine::Socket::bind" ref="6535ae926f65166dc8faae6b994d10a0" args="(const SocketAddr &amp;addr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool bind           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1SocketAddr.html">SocketAddr</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>addr</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Associates the socket with a local address <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>Address to assign to this socket </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation was successfull, false if an error occured </dd></dl>

<p>References <a class="el" href="yateclass_8h-source.html#l03870">SocketAddr::address()</a>, <a class="el" href="yateclass_8h-source.html#l04381">Socket::bind()</a>, and <a class="el" href="yateclass_8h-source.html#l03877">SocketAddr::length()</a>.</p>

<p>Referenced by <a class="el" href="yateclass_8h-source.html#l04381">Socket::bind()</a>.</p>

</div>
</div><p>
<a class="anchor" name="046467b70baa49158df2b839d476b319"></a><!-- doxytag: member="TelEngine::Socket::bind" ref="046467b70baa49158df2b839d476b319" args="(struct sockaddr *addr, socklen_t addrlen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool bind           </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>addrlen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Associates the socket with a local address <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>Address to assign to this socket </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addrlen</em>&nbsp;</td><td>Length of the address structure </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation was successfull, false if an error occured </dd></dl>

</div>
</div><p>
<a class="anchor" name="2614cbc71a9f1bae1f70930d007ec6c1"></a><!-- doxytag: member="TelEngine::Socket::canRetry" ref="2614cbc71a9f1bae1f70930d007ec6c1" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool canRetry           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check if the last error code indicates a retryable condition <dl class="return" compact><dt><b>Returns:</b></dt><dd>True if error was temporary and operation should be retried </dd></dl>

<p>Reimplemented from <a class="el" href="classTelEngine_1_1Stream.html#2614cbc71a9f1bae1f70930d007ec6c1">Stream</a>.</p>

</div>
</div><p>
<a class="anchor" name="a3296d0bedebd2982ca2f02f93f1a19c"></a><!-- doxytag: member="TelEngine::Socket::canSelect" ref="a3296d0bedebd2982ca2f02f93f1a19c" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool canSelect           </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 socket object can be used in a select <dl class="return" compact><dt><b>Returns:</b></dt><dd>True if this socket can be safely used in select </dd></dl>

<p>References <a class="el" href="yateclass_8h-source.html#l04425">Socket::canSelect()</a>.</p>

<p>Referenced by <a class="el" href="yateclass_8h-source.html#l04425">Socket::canSelect()</a>.</p>

</div>
</div><p>
<a class="anchor" name="ee1c62d2107c906017ee3372864cd240"></a><!-- doxytag: member="TelEngine::Socket::canSelect" ref="ee1c62d2107c906017ee3372864cd240" args="(SOCKET handle)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static bool canSelect           </td>
          <td>(</td>
          <td class="paramtype">SOCKET&nbsp;</td>
          <td class="paramname"> <em>handle</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check if a socket handle can be used in select <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>The socket handle to check </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the socket handle can be safely used in select </dd></dl>

</div>
</div><p>
<a class="anchor" name="8394ee4c5b08b786775444803ee51be5"></a><!-- doxytag: member="TelEngine::Socket::checkError" ref="8394ee4c5b08b786775444803ee51be5" args="(int retcode, bool strict=false)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool checkError           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>retcode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>strict</em> = <code>false</code></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>
Copy the last error code from the operating system if an error occured, clear if not <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>retcode</em>&nbsp;</td><td>Operation return code to check, 0 for success </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>strict</em>&nbsp;</td><td>True to consider errors only return codes of <a class="el" href="classTelEngine_1_1Socket.html#5c8b3c9bb38330a3fa99ce7b82a828d2">socketError()</a> </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation succeeded (retcode == 0), false otherwise </dd></dl>

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

<p>
Removes and destroys all packet filters 
</div>
</div><p>
<a class="anchor" name="fb9f1e57e9a0df314c8b9f60658e27de"></a><!-- doxytag: member="TelEngine::Socket::connect" ref="fb9f1e57e9a0df314c8b9f60658e27de" args="(const SocketAddr &amp;addr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool connect           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1SocketAddr.html">SocketAddr</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>addr</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Connects the socket to a remote address <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td><a class="el" href="classTelEngine_1_1Socket.html" title="A generic socket class.">Socket</a> address to connect to </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation was successfull, false if an error occured </dd></dl>

<p>References <a class="el" href="yateclass_8h-source.html#l03870">SocketAddr::address()</a>, <a class="el" href="yateclass_8h-source.html#l04455">Socket::connect()</a>, and <a class="el" href="yateclass_8h-source.html#l03877">SocketAddr::length()</a>.</p>

<p>Referenced by <a class="el" href="yateclass_8h-source.html#l04455">Socket::connect()</a>.</p>

</div>
</div><p>
<a class="anchor" name="73f53f77467d13dc4155eafc28bd367f"></a><!-- doxytag: member="TelEngine::Socket::connect" ref="73f53f77467d13dc4155eafc28bd367f" args="(struct sockaddr *addr, socklen_t addrlen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool connect           </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>addrlen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Connects the socket to a remote address <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>Address to connect to </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addrlen</em>&nbsp;</td><td>Length of the address structure </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation was successfull, false if an error occured </dd></dl>

</div>
</div><p>
<a class="anchor" name="1a1260c84598b210ae5423cf35150dbd"></a><!-- doxytag: member="TelEngine::Socket::copyError" ref="1a1260c84598b210ae5423cf35150dbd" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void copyError           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy the last error code from the operating system 
</div>
</div><p>
<a class="anchor" name="94e6966d68a042dad91780b03409dbc1"></a><!-- doxytag: member="TelEngine::Socket::create" ref="94e6966d68a042dad91780b03409dbc1" args="(int domain, int type, int protocol=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool create           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>domain</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>protocol</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>
Creates a new socket handle, <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>domain</em>&nbsp;</td><td>Communication domain for the socket (protocol family) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>Type specification of the socket </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>protocol</em>&nbsp;</td><td>Specific protocol for the domain, 0 to use default </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if socket was created, false if an error occured </dd></dl>

</div>
</div><p>
<a class="anchor" name="4b185ee2300444ea5aed3d875c930a79"></a><!-- doxytag: member="TelEngine::Socket::createPair" ref="4b185ee2300444ea5aed3d875c930a79" args="(Socket &amp;sock1, Socket &amp;sock2, int domain=AF_UNIX)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static bool createPair           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTelEngine_1_1Socket.html">Socket</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>sock1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classTelEngine_1_1Socket.html">Socket</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>sock2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>domain</em> = <code>AF_UNIX</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create a pair of bidirectionally connected sockets <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>sock1</em>&nbsp;</td><td>Reference to first <a class="el" href="classTelEngine_1_1Socket.html" title="A generic socket class.">Socket</a> to be paired </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sock2</em>&nbsp;</td><td>Reference to second <a class="el" href="classTelEngine_1_1Socket.html" title="A generic socket class.">Socket</a> to be paired </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>domain</em>&nbsp;</td><td>Communication domain for the sockets (protocol family) </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True is the stream pair was created successfully </dd></dl>

</div>
</div><p>
<a class="anchor" name="0449771b2000458006f2d621b39bde60"></a><!-- doxytag: member="TelEngine::Socket::detach" ref="0449771b2000458006f2d621b39bde60" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">SOCKET detach           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Detaches the object from the socket handle <dl class="return" compact><dt><b>Returns:</b></dt><dd>The handle previously owned by this object </dd></dl>

</div>
</div><p>
<a class="anchor" name="7a0e2388881e43c00c6879e6119e6e16"></a><!-- doxytag: member="TelEngine::Socket::getOption" ref="7a0e2388881e43c00c6879e6119e6e16" args="(int level, int name, void *buffer, socklen_t *length)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool getOption           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>level</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t *&nbsp;</td>
          <td class="paramname"> <em>length</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get socket options <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>level</em>&nbsp;</td><td>Level of the option to set </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td><a class="el" href="classTelEngine_1_1Socket.html" title="A generic socket class.">Socket</a> option for which the value is to be set </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>Pointer to a buffer to return the value for the requested option </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>Pointer to size of the supplied buffer, will be filled on return </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation was successfull, false if an error occured </dd></dl>

</div>
</div><p>
<a class="anchor" name="316d2b1b63ce760154594c0814000eda"></a><!-- doxytag: member="TelEngine::Socket::getPeerName" ref="316d2b1b63ce760154594c0814000eda" args="(SocketAddr &amp;addr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool getPeerName           </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;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Retrive the address of the remote socket of a connection <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>Address to fill in with the address of the remote socket </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation was successfull, false if an error occured </dd></dl>

</div>
</div><p>
<a class="anchor" name="60cb1314a1715f95c43bfd1223aa22bc"></a><!-- doxytag: member="TelEngine::Socket::getPeerName" ref="60cb1314a1715f95c43bfd1223aa22bc" args="(struct sockaddr *addr, socklen_t *addrlen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool getPeerName           </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t *&nbsp;</td>
          <td class="paramname"> <em>addrlen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Retrive the address of the remote socket of a connection <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>Address to fill in with the address of the remote socket </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addrlen</em>&nbsp;</td><td>Length of the address structure on input, length of address data on return </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation was successfull, false if an error occured </dd></dl>

</div>
</div><p>
<a class="anchor" name="6971c32dbd4d8d0fdd06b9d71e64d44b"></a><!-- doxytag: member="TelEngine::Socket::getSockName" ref="6971c32dbd4d8d0fdd06b9d71e64d44b" args="(SocketAddr &amp;addr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool getSockName           </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;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Retrive the address of the local socket of a connection <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>Address to fill in with the address of the local socket </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation was successfull, false if an error occured </dd></dl>

</div>
</div><p>
<a class="anchor" name="92e4cda1781b63d67a26d2b2419ee03f"></a><!-- doxytag: member="TelEngine::Socket::getSockName" ref="92e4cda1781b63d67a26d2b2419ee03f" args="(struct sockaddr *addr, socklen_t *addrlen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool getSockName           </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t *&nbsp;</td>
          <td class="paramname"> <em>addrlen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Retrive the address of the local socket of a connection <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>Address to fill in with the address of the local socket </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addrlen</em>&nbsp;</td><td>Length of the address structure on input, length of address data on return </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation was successfull, false if an error occured </dd></dl>

</div>
</div><p>
<a class="anchor" name="61c8012d8919b21ca7e8b3bf25b8b188"></a><!-- doxytag: member="TelEngine::Socket::handle" ref="61c8012d8919b21ca7e8b3bf25b8b188" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">SOCKET handle           </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 operating system handle to the socket <dl class="return" compact><dt><b>Returns:</b></dt><dd><a class="el" href="classTelEngine_1_1Socket.html" title="A generic socket class.">Socket</a> handle </dd></dl>

</div>
</div><p>
<a class="anchor" name="1ccad26362f2e26e34837255c0257b1a"></a><!-- doxytag: member="TelEngine::Socket::installFilter" ref="1ccad26362f2e26e34837255c0257b1a" args="(SocketFilter *filter)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool installFilter           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTelEngine_1_1SocketFilter.html">SocketFilter</a> *&nbsp;</td>
          <td class="paramname"> <em>filter</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Install a new packet filter in 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>filter</em>&nbsp;</td><td>Pointer to the packet filter to install </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the filter was installed </dd></dl>

</div>
</div><p>
<a class="anchor" name="e5a7bff0230c3f147214fb5ba955e8b9"></a><!-- doxytag: member="TelEngine::Socket::invalidHandle" ref="e5a7bff0230c3f147214fb5ba955e8b9" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static SOCKET invalidHandle           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the operating system specific handle value for an invalid socket <dl class="return" compact><dt><b>Returns:</b></dt><dd>Handle value for an invalid socket </dd></dl>

</div>
</div><p>
<a class="anchor" name="43f7123b46363c6824b04193ffb74e62"></a><!-- doxytag: member="TelEngine::Socket::listen" ref="43f7123b46363c6824b04193ffb74e62" args="(unsigned int backlog=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool listen           </td>
          <td>(</td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>backlog</em> = <code>0</code>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Start listening for incoming connections on 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>backlog</em>&nbsp;</td><td>Maximum length of the queue of pending connections, 0 for system maximum </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation was successfull, false if an error occured </dd></dl>

</div>
</div><p>
<a class="anchor" name="0a60436281432e08532a563a37bbc266"></a><!-- doxytag: member="TelEngine::Socket::peelOff" ref="0a60436281432e08532a563a37bbc266" args="(unsigned int assoc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1Socket.html">Socket</a>* peelOff           </td>
          <td>(</td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>assoc</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create a new socket by peeling off an association from a SCTP 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>assoc</em>&nbsp;</td><td>Identifier of the association to peel off </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Open socket to the association or NULL on failure </dd></dl>

</div>
</div><p>
<a class="anchor" name="19d0f02def5255dc039deedba54cba62"></a><!-- doxytag: member="TelEngine::Socket::peelOffHandle" ref="19d0f02def5255dc039deedba54cba62" args="(unsigned int assoc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">SOCKET peelOffHandle           </td>
          <td>(</td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>assoc</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create a new socket by peeling off an association from a SCTP 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>assoc</em>&nbsp;</td><td>Identifier of the association to peel off </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Operating system handle to the association or <a class="el" href="classTelEngine_1_1Socket.html#e5a7bff0230c3f147214fb5ba955e8b9">invalidHandle()</a> on failure </dd></dl>

</div>
</div><p>
<a class="anchor" name="4b0012f52b3982d99359a9178e4862b8"></a><!-- doxytag: member="TelEngine::Socket::readData" ref="4b0012f52b3982d99359a9178e4862b8" args="(void *buffer, int length)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int readData           </td>
          <td>(</td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>length</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>
Receive data from a connected stream 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>buffer</em>&nbsp;</td><td>Buffer for data transfer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>Length of the buffer </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Number of bytes transferred, <a class="el" href="classTelEngine_1_1Socket.html#5c8b3c9bb38330a3fa99ce7b82a828d2">socketError()</a> if an error occurred </dd></dl>

<p>Implements <a class="el" href="classTelEngine_1_1Stream.html#0c1156011c87f6b700d076b1baad8dc6">Stream</a>.</p>

</div>
</div><p>
<a class="anchor" name="9c24d1fead11856b9d577f7fb1869dc3"></a><!-- doxytag: member="TelEngine::Socket::recv" ref="9c24d1fead11856b9d577f7fb1869dc3" args="(void *buffer, int length, int flags=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int recv           </td>
          <td>(</td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>flags</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>
Receive a message from a connected 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>buffer</em>&nbsp;</td><td>Buffer for data transfer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>Length of the buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>Operating system specific bit flags that change the behaviour </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Number of bytes transferred, <a class="el" href="classTelEngine_1_1Socket.html#5c8b3c9bb38330a3fa99ce7b82a828d2">socketError()</a> if an error occurred </dd></dl>

</div>
</div><p>
<a class="anchor" name="ffda180021f97c17415d6c1f7bb7a51e"></a><!-- doxytag: member="TelEngine::Socket::recvFrom" ref="ffda180021f97c17415d6c1f7bb7a51e" args="(void *buffer, int length, SocketAddr &amp;addr, int flags=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int recvFrom           </td>
          <td>(</td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>length</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>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>flags</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>
Receive a message from a connected or unconnected 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>buffer</em>&nbsp;</td><td>Buffer for data transfer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>Length of the buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>Address to fill in with the address of the incoming data </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>Operating system specific bit flags that change the behaviour </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Number of bytes transferred, <a class="el" href="classTelEngine_1_1Socket.html#5c8b3c9bb38330a3fa99ce7b82a828d2">socketError()</a> if an error occurred </dd></dl>

</div>
</div><p>
<a class="anchor" name="c5948b3d4507e10259e7ec50e77abff8"></a><!-- doxytag: member="TelEngine::Socket::recvFrom" ref="c5948b3d4507e10259e7ec50e77abff8" args="(void *buffer, int length, struct sockaddr *addr=0, socklen_t *adrlen=0, int flags=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int recvFrom           </td>
          <td>(</td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>addr</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t *&nbsp;</td>
          <td class="paramname"> <em>adrlen</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>flags</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>
Receive a message from a connected or unconnected 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>buffer</em>&nbsp;</td><td>Buffer for data transfer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>Length of the buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>Address to fill in with the address of the incoming data </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>adrlen</em>&nbsp;</td><td>Length of the address structure on input, length of address data on return </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>Operating system specific bit flags that change the behaviour </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Number of bytes transferred, <a class="el" href="classTelEngine_1_1Socket.html#5c8b3c9bb38330a3fa99ce7b82a828d2">socketError()</a> if an error occurred </dd></dl>

</div>
</div><p>
<a class="anchor" name="dd645432dca63e95eb099001091fa2e8"></a><!-- doxytag: member="TelEngine::Socket::removeFilter" ref="dd645432dca63e95eb099001091fa2e8" args="(SocketFilter *filter, bool delobj=false)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void removeFilter           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTelEngine_1_1SocketFilter.html">SocketFilter</a> *&nbsp;</td>
          <td class="paramname"> <em>filter</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>delobj</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>
Removes a packet filter and optionally destroys 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>filter</em>&nbsp;</td><td>Pointer to the packet filter to remove from socket </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>delobj</em>&nbsp;</td><td>Set to true to also delete the filter </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="fd13597e5028687b6ab00c3d56e2b7c5"></a><!-- doxytag: member="TelEngine::Socket::select" ref="fd13597e5028687b6ab00c3d56e2b7c5" args="(bool *readok, bool *writeok, bool *except, int64_t timeout)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool select           </td>
          <td>(</td>
          <td class="paramtype">bool *&nbsp;</td>
          <td class="paramname"> <em>readok</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool *&nbsp;</td>
          <td class="paramname"> <em>writeok</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool *&nbsp;</td>
          <td class="paramname"> <em>except</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int64_t&nbsp;</td>
          <td class="paramname"> <em>timeout</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Determines the availability to perform synchronous I/O of 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>readok</em>&nbsp;</td><td>Address of a boolean variable to fill with readability status </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>writeok</em>&nbsp;</td><td>Address of a boolean variable to fill with writeability status </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>except</em>&nbsp;</td><td>Address of a boolean variable to fill with exceptions status </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>Maximum time until the method returns, -1 for blocking </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation was successfull, false if an error occured </dd></dl>

</div>
</div><p>
<a class="anchor" name="92c173906182cee60b8fe775e858a863"></a><!-- doxytag: member="TelEngine::Socket::select" ref="92c173906182cee60b8fe775e858a863" args="(bool *readok, bool *writeok, bool *except, struct timeval *timeout=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool select           </td>
          <td>(</td>
          <td class="paramtype">bool *&nbsp;</td>
          <td class="paramname"> <em>readok</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool *&nbsp;</td>
          <td class="paramname"> <em>writeok</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool *&nbsp;</td>
          <td class="paramname"> <em>except</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct timeval *&nbsp;</td>
          <td class="paramname"> <em>timeout</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>
Determines the availability to perform synchronous I/O of 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>readok</em>&nbsp;</td><td>Address of a boolean variable to fill with readability status </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>writeok</em>&nbsp;</td><td>Address of a boolean variable to fill with writeability status </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>except</em>&nbsp;</td><td>Address of a boolean variable to fill with exceptions status </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>Maximum time until the method returns, NULL for blocking </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation was successfull, false if an error occured </dd></dl>

</div>
</div><p>
<a class="anchor" name="5746a39251cd109a34ddf6ff8bf14bf0"></a><!-- doxytag: member="TelEngine::Socket::send" ref="5746a39251cd109a34ddf6ff8bf14bf0" args="(const void *buffer, int length, int flags=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int send           </td>
          <td>(</td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>flags</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>
Send a message over a connected 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>buffer</em>&nbsp;</td><td>Buffer for data transfer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>Length of the buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>Operating system specific bit flags that change the behaviour </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Number of bytes transferred, <a class="el" href="classTelEngine_1_1Socket.html#5c8b3c9bb38330a3fa99ce7b82a828d2">socketError()</a> if an error occurred </dd></dl>

</div>
</div><p>
<a class="anchor" name="75d1a52c686a25571dac70e2b2f4349d"></a><!-- doxytag: member="TelEngine::Socket::sendTo" ref="75d1a52c686a25571dac70e2b2f4349d" args="(const void *buffer, int length, const SocketAddr &amp;addr, int flags=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int sendTo           </td>
          <td>(</td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>length</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>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>flags</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Send a message over a connected or unconnected 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>buffer</em>&nbsp;</td><td>Buffer for data transfer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>Length of the buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>Address to send the message to </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>Operating system specific bit flags that change the behaviour </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Number of bytes transferred, <a class="el" href="classTelEngine_1_1Socket.html#5c8b3c9bb38330a3fa99ce7b82a828d2">socketError()</a> if an error occurred </dd></dl>

<p>References <a class="el" href="yateclass_8h-source.html#l03870">SocketAddr::address()</a>, <a class="el" href="yateclass_8h-source.html#l03877">SocketAddr::length()</a>, and <a class="el" href="yateclass_8h-source.html#l04515">Socket::sendTo()</a>.</p>

<p>Referenced by <a class="el" href="yateclass_8h-source.html#l04515">Socket::sendTo()</a>.</p>

</div>
</div><p>
<a class="anchor" name="643e3af5b36596f0afa03a5309056e3a"></a><!-- doxytag: member="TelEngine::Socket::sendTo" ref="643e3af5b36596f0afa03a5309056e3a" args="(const void *buffer, int length, const struct sockaddr *addr, socklen_t adrlen, int flags=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int sendTo           </td>
          <td>(</td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>adrlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>flags</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>
Send a message over a connected or unconnected 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>buffer</em>&nbsp;</td><td>Buffer for data transfer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>Length of the buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>Address to send the message to, if NULL will behave like <a class="el" href="classTelEngine_1_1Socket.html#5746a39251cd109a34ddf6ff8bf14bf0">send()</a> </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>adrlen</em>&nbsp;</td><td>Length of the address structure </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>Operating system specific bit flags that change the behaviour </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Number of bytes transferred, <a class="el" href="classTelEngine_1_1Socket.html#5c8b3c9bb38330a3fa99ce7b82a828d2">socketError()</a> if an error occurred </dd></dl>

</div>
</div><p>
<a class="anchor" name="cf353bce1608e9d3734b4c12d1ae7b87"></a><!-- doxytag: member="TelEngine::Socket::setBlocking" ref="cf353bce1608e9d3734b4c12d1ae7b87" args="(bool block=true)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool setBlocking           </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>block</em> = <code>true</code>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set the blocking or non-blocking operation mode of 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>block</em>&nbsp;</td><td>True if I/O operations should block, false for non-blocking </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation was successfull, false if an error occured </dd></dl>

<p>Reimplemented from <a class="el" href="classTelEngine_1_1Stream.html#cf353bce1608e9d3734b4c12d1ae7b87">Stream</a>.</p>

</div>
</div><p>
<a class="anchor" name="c61690c7dfb92ff8e62aabef99994bde"></a><!-- doxytag: member="TelEngine::Socket::setLinger" ref="c61690c7dfb92ff8e62aabef99994bde" args="(int seconds=&#45;1)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool setLinger           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>seconds</em> = <code>-1</code>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set the way closing a socket is handled <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>seconds</em>&nbsp;</td><td>How much to block waiting for socket to close, negative to no wait (close in background), zero to reset connection </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation was successfull, false if an error occured </dd></dl>

</div>
</div><p>
<a class="anchor" name="9ad8757f04880e136eb83e899ca35fbf"></a><!-- doxytag: member="TelEngine::Socket::setOption" ref="9ad8757f04880e136eb83e899ca35fbf" args="(int level, int name, const void *value=0, socklen_t length=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool setOption           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>level</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>value</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>length</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>
Set socket options <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>level</em>&nbsp;</td><td>Level of the option to set </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td><a class="el" href="classTelEngine_1_1Socket.html" title="A generic socket class.">Socket</a> option for which the value is to be set </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>Pointer to a buffer holding the value for the requested option </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>Size of the supplied buffer </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation was successfull, false if an error occured </dd></dl>

</div>
</div><p>
<a class="anchor" name="a831caaf8827ad4220553aac79d17c9e"></a><!-- doxytag: member="TelEngine::Socket::setReuse" ref="a831caaf8827ad4220553aac79d17c9e" args="(bool reuse=true, bool exclusive=false)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool setReuse           </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>reuse</em> = <code>true</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>exclusive</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>
Set the local address+port reuse flag of the socket. This method should be called before <a class="el" href="classTelEngine_1_1Socket.html#046467b70baa49158df2b839d476b319">bind()</a> or it will have no effect. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>reuse</em>&nbsp;</td><td>True if other sockets may listen on same address+port </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>exclusive</em>&nbsp;</td><td>Grant exclusive access to the address </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation was successfull, false if an error occured </dd></dl>

</div>
</div><p>
<a class="anchor" name="1fcca9fb9d420f36291204048a20461d"></a><!-- doxytag: member="TelEngine::Socket::setTOS" ref="1fcca9fb9d420f36291204048a20461d" args="(int tos)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool setTOS           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>tos</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set the Type of Service on the IP level of this 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>tos</em>&nbsp;</td><td>New TOS bits to set </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation was successfull, false if an error occured </dd></dl>

</div>
</div><p>
<a class="anchor" name="a4d417a530b193da58665784019cd067"></a><!-- doxytag: member="TelEngine::Socket::shutdown" ref="a4d417a530b193da58665784019cd067" args="(bool stopReads, bool stopWrites)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool shutdown           </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>stopReads</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>stopWrites</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Shut down one or both directions of a full-duplex 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>stopReads</em>&nbsp;</td><td>Request to shut down the read side of the socket </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>stopWrites</em>&nbsp;</td><td>Request to shut down the write side of the socket </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation was successfull, false if an error occured </dd></dl>

</div>
</div><p>
<a class="anchor" name="5c8b3c9bb38330a3fa99ce7b82a828d2"></a><!-- doxytag: member="TelEngine::Socket::socketError" ref="5c8b3c9bb38330a3fa99ce7b82a828d2" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int socketError           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the operating system specific return value of a failed operation <dl class="return" compact><dt><b>Returns:</b></dt><dd>Return value of a failed socket operation </dd></dl>

</div>
</div><p>
<a class="anchor" name="191ac6b231961b9586ed2eadae024d6a"></a><!-- doxytag: member="TelEngine::Socket::terminate" ref="191ac6b231961b9586ed2eadae024d6a" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool terminate           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Closes the socket handle, terminates the connection <dl class="return" compact><dt><b>Returns:</b></dt><dd>True if socket was (already) closed, false if an error occured </dd></dl>

<p>Implements <a class="el" href="classTelEngine_1_1Stream.html#75ac47e7166b2005e2f8c306b5bb05ea">Stream</a>.</p>

</div>
</div><p>
<a class="anchor" name="c7cf24f02cfa3147bf2cbf6434edb9c0"></a><!-- doxytag: member="TelEngine::Socket::timerTick" ref="c7cf24f02cfa3147bf2cbf6434edb9c0" args="(const Time &amp;when)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void timerTick           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1Time.html">Time</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>when</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Run whatever actions required on idle thread runs. The default implementation calls <a class="el" href="classTelEngine_1_1SocketFilter.html#c7cf24f02cfa3147bf2cbf6434edb9c0">SocketFilter::timerTick()</a> for all installed filters. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>when</em>&nbsp;</td><td><a class="el" href="classTelEngine_1_1Time.html" title="A time holding class.">Time</a> when the idle run started </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="9fa9d50f99098045df2c2ef3b1af8047"></a><!-- doxytag: member="TelEngine::Socket::valid" ref="9fa9d50f99098045df2c2ef3b1af8047" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool valid           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check if this socket is valid <dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the handle is valid, false if it's invalid </dd></dl>

<p>Implements <a class="el" href="classTelEngine_1_1Stream.html#d9248394f673632ebda5b9c455e464f2">Stream</a>.</p>

</div>
</div><p>
<a class="anchor" name="ab8efa96798936c2ed4a76470877ec98"></a><!-- doxytag: member="TelEngine::Socket::writeData" ref="ab8efa96798936c2ed4a76470877ec98" args="(const void *buffer, int length)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int writeData           </td>
          <td>(</td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>length</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>
Write data to a connected stream 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>buffer</em>&nbsp;</td><td>Buffer for data transfer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>Length of the buffer </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Number of bytes transferred, <a class="el" href="classTelEngine_1_1Socket.html#5c8b3c9bb38330a3fa99ce7b82a828d2">socketError()</a> if an error occurred </dd></dl>

<p>Implements <a class="el" href="classTelEngine_1_1Stream.html#88415446fd03ca1954f4561f29c82ff1">Stream</a>.</p>

</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="yateclass_8h-source.html">yateclass.h</a></ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun Dec 7 21:36:11 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>