uvw/tcp_8h_source.html
2020-05-31 16:45:27 +02:00

207 lines
27 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>uvw: src/uvw/tcp.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">uvw
&#160;<span id="projectnumber">2.6.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_98934c98f70735fe3a272005a9eb8736.html">uvw</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">tcp.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef UVW_TCP_INCLUDE_H</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define UVW_TCP_INCLUDE_H</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; </div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160; </div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &lt;chrono&gt;</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &lt;uv.h&gt;</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;request.hpp&quot;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;stream.h&quot;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;util.h&quot;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; </div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; </div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceuvw.html">uvw</a> {</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; </div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; </div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="keyword">namespace </span>details {</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; </div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">enum class</span> UVTCPFlags: std::underlying_type_t&lt;uv_tcp_flags&gt; {</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; IPV6ONLY = UV_TCP_IPV6ONLY</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;};</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; </div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;}</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div>
<div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classuvw_1_1TCPHandle.html"> 46</a></span>&#160;<span class="keyword">class </span><a class="code" href="classuvw_1_1TCPHandle.html">TCPHandle</a> final: <span class="keyword">public</span> <a class="code" href="classuvw_1_1StreamHandle.html">StreamHandle</a>&lt;TCPHandle, uv_tcp_t&gt; {</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">using</span> Time = std::chrono::duration&lt;unsigned int&gt;;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">using</span> Bind = details::UVTCPFlags;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">using</span> <a class="code" href="structuvw_1_1IPv4.html">IPv4</a> = <a class="code" href="structuvw_1_1IPv4.html">uvw::IPv4</a>;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">using</span> <a class="code" href="structuvw_1_1IPv6.html">IPv6</a> = <a class="code" href="structuvw_1_1IPv6.html">uvw::IPv6</a>;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; </div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classuvw_1_1TCPHandle.html">TCPHandle</a>(ConstructorAccess ca, std::shared_ptr&lt;Loop&gt; ref, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> f = {});</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classuvw_1_1TCPHandle.html#a1e4b789c4071720ba05fd89adfcb4e41">init</a>();</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; </div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1TCPHandle.html#a32fc3f653d1d920fffeae485b3237281">open</a>(<a class="code" href="namespaceuvw.html#a2df38e5bba10fc959ef37074cf580097">OSSocketHandle</a> socket);</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; </div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classuvw_1_1TCPHandle.html#a3837999138b3450036f3631b009b2c71">noDelay</a>(<span class="keywordtype">bool</span> value = <span class="keyword">false</span>);</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; </div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classuvw_1_1TCPHandle.html#a37b628dd0ccddf127860e3c7ee5b3c18">keepAlive</a>(<span class="keywordtype">bool</span> enable = <span class="keyword">false</span>, Time time = Time{0});</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classuvw_1_1TCPHandle.html#a5a6615582d687d7405b4b6930598ab5a">simultaneousAccepts</a>(<span class="keywordtype">bool</span> enable = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; </div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1TCPHandle.html#aca5c2a058049bfd064dd75b55c3ab94e">bind</a>(<span class="keyword">const</span> sockaddr &amp;addr, <a class="code" href="classuvw_1_1Flags.html">Flags&lt;Bind&gt;</a> opts = <a class="code" href="classuvw_1_1Flags.html">Flags&lt;Bind&gt;</a>{});</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; </div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> I = IPv4&gt;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1TCPHandle.html#aca5c2a058049bfd064dd75b55c3ab94e">bind</a>(std::string ip, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> port, <a class="code" href="classuvw_1_1Flags.html">Flags&lt;Bind&gt;</a> opts = <a class="code" href="classuvw_1_1Flags.html">Flags&lt;Bind&gt;</a>{});</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; </div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> I = IPv4&gt;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1TCPHandle.html#aca5c2a058049bfd064dd75b55c3ab94e">bind</a>(<a class="code" href="structuvw_1_1Addr.html">Addr</a> addr, <a class="code" href="classuvw_1_1Flags.html">Flags&lt;Bind&gt;</a> opts = <a class="code" href="classuvw_1_1Flags.html">Flags&lt;Bind&gt;</a>{});</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; </div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> I = IPv4&gt;</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="structuvw_1_1Addr.html">Addr</a> <a class="code" href="classuvw_1_1TCPHandle.html#a2c1f12926ca9e108749b33cee9a6bcdf">sock</a>() <span class="keyword">const</span> noexcept;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; </div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> I = IPv4&gt;</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="structuvw_1_1Addr.html">Addr</a> <a class="code" href="classuvw_1_1TCPHandle.html#a495c52e8e0b5210d21c0cdbdc2cf1579">peer</a>() <span class="keyword">const</span> noexcept;</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; </div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1TCPHandle.html#ab6d3dc1999fb93d9fd6f7cc59e0946ef">connect</a>(<span class="keyword">const</span> sockaddr &amp;addr);</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; </div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> I = IPv4&gt;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1TCPHandle.html#ab6d3dc1999fb93d9fd6f7cc59e0946ef">connect</a>(std::string ip, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> port);</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; </div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> I = IPv4&gt;</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1TCPHandle.html#ab6d3dc1999fb93d9fd6f7cc59e0946ef">connect</a>(<a class="code" href="structuvw_1_1Addr.html">Addr</a> addr);</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; </div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1TCPHandle.html#a2f9f427c131fd74d716036b04883926d">closeReset</a>();</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; </div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keyword">enum</span> { DEFAULT, FLAGS } tag;</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> flags;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;};</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; </div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; </div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment">// (extern) explicit instantiations</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; </div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="keyword">extern</span> <span class="keyword">template</span> <span class="keywordtype">void</span> TCPHandle::bind&lt;IPv4&gt;(std::string, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>, <a class="code" href="classuvw_1_1Flags.html">Flags&lt;Bind&gt;</a>);</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="keyword">extern</span> <span class="keyword">template</span> <span class="keywordtype">void</span> TCPHandle::bind&lt;IPv6&gt;(std::string, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>, <a class="code" href="classuvw_1_1Flags.html">Flags&lt;Bind&gt;</a>);</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; </div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="keyword">extern</span> <span class="keyword">template</span> <span class="keywordtype">void</span> TCPHandle::bind&lt;IPv4&gt;(<a class="code" href="structuvw_1_1Addr.html">Addr</a>, <a class="code" href="classuvw_1_1Flags.html">Flags&lt;Bind&gt;</a>);</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="keyword">extern</span> <span class="keyword">template</span> <span class="keywordtype">void</span> TCPHandle::bind&lt;IPv6&gt;(<a class="code" href="structuvw_1_1Addr.html">Addr</a>, <a class="code" href="classuvw_1_1Flags.html">Flags&lt;Bind&gt;</a>);</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; </div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="keyword">extern</span> <span class="keyword">template</span> <a class="code" href="structuvw_1_1Addr.html">Addr</a> TCPHandle::sock&lt;IPv4&gt;() const noexcept;</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;extern template <a class="code" href="structuvw_1_1Addr.html">Addr</a> <a class="code" href="classuvw_1_1TCPHandle.html">TCPHandle</a>::sock&lt;<a class="code" href="structuvw_1_1IPv6.html">IPv6</a>&gt;() const noexcept;</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; </div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;extern template <a class="code" href="structuvw_1_1Addr.html">Addr</a> <a class="code" href="classuvw_1_1TCPHandle.html">TCPHandle</a>::peer&lt;<a class="code" href="structuvw_1_1IPv4.html">IPv4</a>&gt;() const noexcept;</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;extern template <a class="code" href="structuvw_1_1Addr.html">Addr</a> <a class="code" href="classuvw_1_1TCPHandle.html">TCPHandle</a>::peer&lt;<a class="code" href="structuvw_1_1IPv6.html">IPv6</a>&gt;() const noexcept;</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; </div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;extern template <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1TCPHandle.html">TCPHandle</a>::connect&lt;<a class="code" href="structuvw_1_1IPv4.html">IPv4</a>&gt;(std::<span class="keywordtype">string</span>, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>);</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;extern template <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1TCPHandle.html">TCPHandle</a>::connect&lt;<a class="code" href="structuvw_1_1IPv6.html">IPv6</a>&gt;(std::<span class="keywordtype">string</span>, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>);</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; </div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;extern template <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1TCPHandle.html">TCPHandle</a>::connect&lt;<a class="code" href="structuvw_1_1IPv4.html">IPv4</a>&gt;(<a class="code" href="structuvw_1_1Addr.html">Addr</a> addr);</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;extern template <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1TCPHandle.html">TCPHandle</a>::connect&lt;<a class="code" href="structuvw_1_1IPv6.html">IPv6</a>&gt;(<a class="code" href="structuvw_1_1Addr.html">Addr</a> addr);</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; </div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; </div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;}</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; </div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; </div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="preprocessor">#ifndef UVW_AS_LIB</span></div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="preprocessor">#include &quot;tcp.cpp&quot;</span></div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; </div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="preprocessor">#endif // UVW_TCP_INCLUDE_H</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassuvw_1_1StreamHandle_html"><div class="ttname"><a href="classuvw_1_1StreamHandle.html">uvw::StreamHandle</a></div><div class="ttdoc">The StreamHandle handle.</div><div class="ttdef"><b>Definition:</b> <a href="stream_8h_source.html#l00128">stream.h:128</a></div></div>
<div class="ttc" id="aclassuvw_1_1TCPHandle_html_a2f9f427c131fd74d716036b04883926d"><div class="ttname"><a href="classuvw_1_1TCPHandle.html#a2f9f427c131fd74d716036b04883926d">uvw::TCPHandle::closeReset</a></div><div class="ttdeci">void closeReset()</div><div class="ttdoc">Resets a TCP connection by sending a RST packet.</div></div>
<div class="ttc" id="anamespaceuvw_html"><div class="ttname"><a href="namespaceuvw.html">uvw</a></div><div class="ttdoc">uvw default namespace.</div><div class="ttdef"><b>Definition:</b> <a href="async_8h_source.html#l00010">async.h:10</a></div></div>
<div class="ttc" id="aclassuvw_1_1TCPHandle_html"><div class="ttname"><a href="classuvw_1_1TCPHandle.html">uvw::TCPHandle</a></div><div class="ttdoc">The TCPHandle handle.</div><div class="ttdef"><b>Definition:</b> <a href="tcp_8h_source.html#l00046">tcp.h:46</a></div></div>
<div class="ttc" id="aclassuvw_1_1TCPHandle_html_aca5c2a058049bfd064dd75b55c3ab94e"><div class="ttname"><a href="classuvw_1_1TCPHandle.html#aca5c2a058049bfd064dd75b55c3ab94e">uvw::TCPHandle::bind</a></div><div class="ttdeci">void bind(const sockaddr &amp;addr, Flags&lt; Bind &gt; opts=Flags&lt; Bind &gt;{})</div><div class="ttdoc">Binds the handle to an address and port.</div></div>
<div class="ttc" id="aclassuvw_1_1TCPHandle_html_a5a6615582d687d7405b4b6930598ab5a"><div class="ttname"><a href="classuvw_1_1TCPHandle.html#a5a6615582d687d7405b4b6930598ab5a">uvw::TCPHandle::simultaneousAccepts</a></div><div class="ttdeci">bool simultaneousAccepts(bool enable=true)</div><div class="ttdoc">Enables/Disables simultaneous asynchronous accept requests.</div></div>
<div class="ttc" id="aclassuvw_1_1TCPHandle_html_ab6d3dc1999fb93d9fd6f7cc59e0946ef"><div class="ttname"><a href="classuvw_1_1TCPHandle.html#ab6d3dc1999fb93d9fd6f7cc59e0946ef">uvw::TCPHandle::connect</a></div><div class="ttdeci">void connect(const sockaddr &amp;addr)</div><div class="ttdoc">Establishes an IPv4 or IPv6 TCP connection.</div></div>
<div class="ttc" id="aclassuvw_1_1TCPHandle_html_a2c1f12926ca9e108749b33cee9a6bcdf"><div class="ttname"><a href="classuvw_1_1TCPHandle.html#a2c1f12926ca9e108749b33cee9a6bcdf">uvw::TCPHandle::sock</a></div><div class="ttdeci">Addr sock() const noexcept</div><div class="ttdoc">Gets the current address to which the handle is bound.</div></div>
<div class="ttc" id="aclassuvw_1_1TCPHandle_html_a495c52e8e0b5210d21c0cdbdc2cf1579"><div class="ttname"><a href="classuvw_1_1TCPHandle.html#a495c52e8e0b5210d21c0cdbdc2cf1579">uvw::TCPHandle::peer</a></div><div class="ttdeci">Addr peer() const noexcept</div><div class="ttdoc">Gets the address of the peer connected to the handle.</div></div>
<div class="ttc" id="aclassuvw_1_1TCPHandle_html_a3837999138b3450036f3631b009b2c71"><div class="ttname"><a href="classuvw_1_1TCPHandle.html#a3837999138b3450036f3631b009b2c71">uvw::TCPHandle::noDelay</a></div><div class="ttdeci">bool noDelay(bool value=false)</div><div class="ttdoc">Enables/Disables Nagles algorithm.</div></div>
<div class="ttc" id="astructuvw_1_1IPv4_html"><div class="ttname"><a href="structuvw_1_1IPv4.html">uvw::IPv4</a></div><div class="ttdoc">The IPv4 tag.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00307">util.h:307</a></div></div>
<div class="ttc" id="aclassuvw_1_1Flags_html"><div class="ttname"><a href="classuvw_1_1Flags.html">uvw::Flags</a></div><div class="ttdoc">Utility class to handle flags.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00082">util.h:82</a></div></div>
<div class="ttc" id="astructuvw_1_1Addr_html"><div class="ttname"><a href="structuvw_1_1Addr.html">uvw::Addr</a></div><div class="ttdoc">Address representation.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00321">util.h:321</a></div></div>
<div class="ttc" id="aclassuvw_1_1TCPHandle_html_a1e4b789c4071720ba05fd89adfcb4e41"><div class="ttname"><a href="classuvw_1_1TCPHandle.html#a1e4b789c4071720ba05fd89adfcb4e41">uvw::TCPHandle::init</a></div><div class="ttdeci">bool init()</div><div class="ttdoc">Initializes the handle. No socket is created as of yet.</div></div>
<div class="ttc" id="aclassuvw_1_1TCPHandle_html_a32fc3f653d1d920fffeae485b3237281"><div class="ttname"><a href="classuvw_1_1TCPHandle.html#a32fc3f653d1d920fffeae485b3237281">uvw::TCPHandle::open</a></div><div class="ttdeci">void open(OSSocketHandle socket)</div><div class="ttdoc">Opens an existing file descriptor or SOCKET as a TCP handle.</div></div>
<div class="ttc" id="anamespaceuvw_html_a2df38e5bba10fc959ef37074cf580097"><div class="ttname"><a href="namespaceuvw.html#a2df38e5bba10fc959ef37074cf580097">uvw::OSSocketHandle</a></div><div class="ttdeci">details::UVTypeWrapper&lt; uv_os_sock_t &gt; OSSocketHandle</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00190">util.h:190</a></div></div>
<div class="ttc" id="aclassuvw_1_1TCPHandle_html_a37b628dd0ccddf127860e3c7ee5b3c18"><div class="ttname"><a href="classuvw_1_1TCPHandle.html#a37b628dd0ccddf127860e3c7ee5b3c18">uvw::TCPHandle::keepAlive</a></div><div class="ttdeci">bool keepAlive(bool enable=false, Time time=Time{0})</div><div class="ttdoc">Enables/Disables TCP keep-alive.</div></div>
<div class="ttc" id="astructuvw_1_1IPv6_html"><div class="ttname"><a href="structuvw_1_1IPv6.html">uvw::IPv6</a></div><div class="ttdoc">The IPv6 tag.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00315">util.h:315</a></div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>