<!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 Page</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div class="navpath"><a class="el" href="namespaceTelEngine.html">TelEngine</a>::<a class="el" href="classTelEngine_1_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 <<a class="el" href="yateclass_8h-source.html">yateclass.h</a>></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 </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"> </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"> </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"> </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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> &addr)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_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> * </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> * </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> &addr)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">SOCKET </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 </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> * </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 </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 </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 </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> &addr)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#a4d417a530b193da58665784019cd067">shutdown</a> (bool stopReads, bool stopWrites)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </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 </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> &addr)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1Socket.html#60cb1314a1715f95c43bfd1223aa22bc">getPeerName</a> (struct sockaddr *addr, socklen_t *addrlen)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </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> &addr)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </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 </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> &addr, int flags=0)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </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 </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 </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 </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> &addr, int flags=0)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </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 </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 </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 </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 </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 </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 </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 </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> &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 </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 </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 </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 </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> &sock1, <a class="el" href="classTelEngine_1_1Socket.html">Socket</a> &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 </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 </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 </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 </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> </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 & 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> ) </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 </td> <td class="paramname"> <em>handle</em> </td> <td> ) </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> </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 </td> <td class="paramname"> <em>domain</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>protocol</em> = <code>0</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Constructor 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> </td><td>Communication domain for the socket (protocol family) </td></tr> <tr><td valign="top"></td><td valign="top"><em>type</em> </td><td>Type specification of the socket </td></tr> <tr><td valign="top"></td><td valign="top"><em>protocol</em> </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> ) </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 &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> & </td> <td class="paramname"> <em>addr</em> </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> </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 * </td> <td class="paramname"> <em>addr</em> = <code>0</code>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">socklen_t * </td> <td class="paramname"> <em>addrlen</em> = <code>0</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> 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> </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> </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 * </td> <td class="paramname"> <em>addr</em> = <code>0</code>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">socklen_t * </td> <td class="paramname"> <em>addrlen</em> = <code>0</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> 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> </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> </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 * </td> <td class="paramname"> <em>buffer</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>length</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>flags</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const struct sockaddr * </td> <td class="paramname"> <em>addr</em> = <code>0</code>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">socklen_t </td> <td class="paramname"> <em>adrlen</em> = <code>0</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p> 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> </td><td>Buffer for received data </td></tr> <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>Length of the data in buffer </td></tr> <tr><td valign="top"></td><td valign="top"><em>flags</em> </td><td>Operating system specific bit flags of the operation </td></tr> <tr><td valign="top"></td><td valign="top"><em>addr</em> </td><td>Address of the incoming data, may be NULL </td></tr> <tr><td valign="top"></td><td valign="top"><em>adrlen</em> </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 </td> <td class="paramname"> <em>handle</em> </td> <td> ) </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> </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 &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> & </td> <td class="paramname"> <em>addr</em> </td> <td> ) </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> </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 * </td> <td class="paramname"> <em>addr</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">socklen_t </td> <td class="paramname"> <em>addrlen</em></td><td> </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> </td><td>Address to assign to this socket </td></tr> <tr><td valign="top"></td><td valign="top"><em>addrlen</em> </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> ) </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> ) </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 </td> <td class="paramname"> <em>handle</em> </td> <td> ) </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> </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 </td> <td class="paramname"> <em>retcode</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"> <em>strict</em> = <code>false</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p> 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> </td><td>Operation return code to check, 0 for success </td></tr> <tr><td valign="top"></td><td valign="top"><em>strict</em> </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> ) </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 &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> & </td> <td class="paramname"> <em>addr</em> </td> <td> ) </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> </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 * </td> <td class="paramname"> <em>addr</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">socklen_t </td> <td class="paramname"> <em>addrlen</em></td><td> </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> </td><td>Address to connect to </td></tr> <tr><td valign="top"></td><td valign="top"><em>addrlen</em> </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> ) </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 </td> <td class="paramname"> <em>domain</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>protocol</em> = <code>0</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> 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> </td><td>Communication domain for the socket (protocol family) </td></tr> <tr><td valign="top"></td><td valign="top"><em>type</em> </td><td>Type specification of the socket </td></tr> <tr><td valign="top"></td><td valign="top"><em>protocol</em> </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 &sock1, Socket &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> & </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> & </td> <td class="paramname"> <em>sock2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>domain</em> = <code>AF_UNIX</code></td><td> </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> </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> </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> </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> ) </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 </td> <td class="paramname"> <em>level</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>buffer</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">socklen_t * </td> <td class="paramname"> <em>length</em></td><td> </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> </td><td>Level of the option to set </td></tr> <tr><td valign="top"></td><td valign="top"><em>name</em> </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> </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> </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 &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> & </td> <td class="paramname"> <em>addr</em> </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> </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 * </td> <td class="paramname"> <em>addr</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">socklen_t * </td> <td class="paramname"> <em>addrlen</em></td><td> </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> </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> </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 &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> & </td> <td class="paramname"> <em>addr</em> </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> </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 * </td> <td class="paramname"> <em>addr</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">socklen_t * </td> <td class="paramname"> <em>addrlen</em></td><td> </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> </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> </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> ) </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> * </td> <td class="paramname"> <em>filter</em> </td> <td> ) </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> </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> ) </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 </td> <td class="paramname"> <em>backlog</em> = <code>0</code> </td> <td> ) </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> </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 </td> <td class="paramname"> <em>assoc</em> </td> <td> ) </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> </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 </td> <td class="paramname"> <em>assoc</em> </td> <td> ) </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> </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 * </td> <td class="paramname"> <em>buffer</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>length</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> 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> </td><td>Buffer for data transfer </td></tr> <tr><td valign="top"></td><td valign="top"><em>length</em> </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 * </td> <td class="paramname"> <em>buffer</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>length</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>flags</em> = <code>0</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> 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> </td><td>Buffer for data transfer </td></tr> <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>Length of the buffer </td></tr> <tr><td valign="top"></td><td valign="top"><em>flags</em> </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 &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 * </td> <td class="paramname"> <em>buffer</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </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> & </td> <td class="paramname"> <em>addr</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>flags</em> = <code>0</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> 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> </td><td>Buffer for data transfer </td></tr> <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>Length of the buffer </td></tr> <tr><td valign="top"></td><td valign="top"><em>addr</em> </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> </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 * </td> <td class="paramname"> <em>buffer</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>length</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct sockaddr * </td> <td class="paramname"> <em>addr</em> = <code>0</code>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">socklen_t * </td> <td class="paramname"> <em>adrlen</em> = <code>0</code>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>flags</em> = <code>0</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> 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> </td><td>Buffer for data transfer </td></tr> <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>Length of the buffer </td></tr> <tr><td valign="top"></td><td valign="top"><em>addr</em> </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> </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> </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> * </td> <td class="paramname"> <em>filter</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"> <em>delobj</em> = <code>false</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> 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> </td><td>Pointer to the packet filter to remove from socket </td></tr> <tr><td valign="top"></td><td valign="top"><em>delobj</em> </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 * </td> <td class="paramname"> <em>readok</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool * </td> <td class="paramname"> <em>writeok</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool * </td> <td class="paramname"> <em>except</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int64_t </td> <td class="paramname"> <em>timeout</em></td><td> </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> </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> </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> </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> </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 * </td> <td class="paramname"> <em>readok</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool * </td> <td class="paramname"> <em>writeok</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool * </td> <td class="paramname"> <em>except</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct timeval * </td> <td class="paramname"> <em>timeout</em> = <code>0</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> 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> </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> </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> </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> </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 * </td> <td class="paramname"> <em>buffer</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>length</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>flags</em> = <code>0</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> 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> </td><td>Buffer for data transfer </td></tr> <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>Length of the buffer </td></tr> <tr><td valign="top"></td><td valign="top"><em>flags</em> </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 &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 * </td> <td class="paramname"> <em>buffer</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </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> & </td> <td class="paramname"> <em>addr</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>flags</em> = <code>0</code></td><td> </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> </td><td>Buffer for data transfer </td></tr> <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>Length of the buffer </td></tr> <tr><td valign="top"></td><td valign="top"><em>addr</em> </td><td>Address to send the message to </td></tr> <tr><td valign="top"></td><td valign="top"><em>flags</em> </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 * </td> <td class="paramname"> <em>buffer</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>length</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const struct sockaddr * </td> <td class="paramname"> <em>addr</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">socklen_t </td> <td class="paramname"> <em>adrlen</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>flags</em> = <code>0</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> 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> </td><td>Buffer for data transfer </td></tr> <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>Length of the buffer </td></tr> <tr><td valign="top"></td><td valign="top"><em>addr</em> </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> </td><td>Length of the address structure </td></tr> <tr><td valign="top"></td><td valign="top"><em>flags</em> </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 </td> <td class="paramname"> <em>block</em> = <code>true</code> </td> <td> ) </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> </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=-1)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool setLinger </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"> <em>seconds</em> = <code>-1</code> </td> <td> ) </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> </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 </td> <td class="paramname"> <em>level</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"> <em>value</em> = <code>0</code>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">socklen_t </td> <td class="paramname"> <em>length</em> = <code>0</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> 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> </td><td>Level of the option to set </td></tr> <tr><td valign="top"></td><td valign="top"><em>name</em> </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> </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> </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 </td> <td class="paramname"> <em>reuse</em> = <code>true</code>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"> <em>exclusive</em> = <code>false</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> 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> </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> </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 </td> <td class="paramname"> <em>tos</em> </td> <td> ) </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> </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 </td> <td class="paramname"> <em>stopReads</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"> <em>stopWrites</em></td><td> </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> </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> </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> ) </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> ) </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 &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> & </td> <td class="paramname"> <em>when</em> </td> <td> ) </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> </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> ) </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 * </td> <td class="paramname"> <em>buffer</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>length</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> 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> </td><td>Buffer for data transfer </td></tr> <tr><td valign="top"></td><td valign="top"><em>length</em> </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 <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>