102 lines
29 KiB
HTML
102 lines
29 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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.13"/>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||
<title>uvw: src/uvw/tcp.hpp 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
|
||
 <span id="projectnumber">1.3.0</span>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<!-- end header part -->
|
||
<!-- Generated by Doxygen 1.8.13 -->
|
||
<script type="text/javascript">
|
||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||
</script>
|
||
<script type="text/javascript" src="menudata.js"></script>
|
||
<script type="text/javascript" src="menu.js"></script>
|
||
<script type="text/javascript">
|
||
$(function() {
|
||
initMenu('',true,false,'search.php','Search');
|
||
$(document).ready(function() { init_search(); });
|
||
});
|
||
</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.hpp</div> </div>
|
||
</div><!--header-->
|
||
<div class="contents">
|
||
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <type_traits></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <utility></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include <chrono></span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include <uv.h></span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include "request.hpp"</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include "stream.hpp"</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include "util.hpp"</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> </div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="keyword">namespace </span><a class="code" href="namespaceuvw.html">uvw</a> {</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="keyword">namespace </span>details {</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="keyword">enum class</span> UVTcpFlags: std::underlying_type_t<uv_tcp_flags> {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  IPV6ONLY = UV_TCP_IPV6ONLY</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> };</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classuvw_1_1TcpHandle.html"> 45</a></span> <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><TcpHandle, uv_tcp_t> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">using</span> Time = std::chrono::duration<unsigned int>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">using</span> Bind = details::UVTcpFlags;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <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="l00050"></a><span class="lineno"> 50</span>  <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="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">explicit</span> <a class="code" href="classuvw_1_1TcpHandle.html">TcpHandle</a>(ConstructorAccess ca, std::shared_ptr<Loop> ref, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> f = {})</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  : <a class="code" href="classuvw_1_1StreamHandle.html">StreamHandle</a>{ca, std::move(ref)}, tag{f ? FLAGS : DEFAULT}, flags{f}</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  {}</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classuvw_1_1TcpHandle.html#ac9b1d128b10dbb3be621823f9dae48e3"> 60</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classuvw_1_1TcpHandle.html#ac9b1d128b10dbb3be621823f9dae48e3">init</a>() {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">return</span> (tag == FLAGS)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  ? initialize(&uv_tcp_init_ex, flags)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  : initialize(&uv_tcp_init);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classuvw_1_1TcpHandle.html#aef58761c8fc6404e64b53ca188f899ec"> 74</a></span>  <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1TcpHandle.html#aef58761c8fc6404e64b53ca188f899ec">open</a>(<a class="code" href="namespaceuvw.html#a2df38e5bba10fc959ef37074cf580097">OSSocketHandle</a> socket) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  invoke(&uv_tcp_open, <span class="keyword">get</span>(), socket);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classuvw_1_1TcpHandle.html#a4e494c5cf91a5c223ef8d5ce88262457"> 83</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classuvw_1_1TcpHandle.html#a4e494c5cf91a5c223ef8d5ce88262457">noDelay</a>(<span class="keywordtype">bool</span> value = <span class="keyword">false</span>) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> (0 == uv_tcp_nodelay(<span class="keyword">get</span>(), value));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classuvw_1_1TcpHandle.html#ab1815761f0a6a2a641c9d5f6c297d33c"> 94</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classuvw_1_1TcpHandle.html#ab1815761f0a6a2a641c9d5f6c297d33c">keepAlive</a>(<span class="keywordtype">bool</span> enable = <span class="keyword">false</span>, Time time = Time{0}) {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> (0 == uv_tcp_keepalive(<span class="keyword">get</span>(), enable, time.count()));</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classuvw_1_1TcpHandle.html#a005b4643e2926b090a2585b48c7a387c"> 112</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classuvw_1_1TcpHandle.html#a005b4643e2926b090a2585b48c7a387c">simultaneousAccepts</a>(<span class="keywordtype">bool</span> enable = <span class="keyword">true</span>) {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">return</span> (0 == uv_tcp_simultaneous_accepts(<span class="keyword">get</span>(), enable));</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keyword">template</span><<span class="keyword">typename</span> I = IPv4></div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classuvw_1_1TcpHandle.html#a6f1aaf85110e2f1af6ea562313719163"> 134</a></span>  <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1TcpHandle.html#a6f1aaf85110e2f1af6ea562313719163">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<Bind></a> opts = <a class="code" href="classuvw_1_1Flags.html">Flags<Bind></a>{}) {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">typename</span> details::IpTraits<I>::Type addr;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  details::IpTraits<I>::addrFunc(ip.data(), port, &addr);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  invoke(&uv_tcp_bind, <span class="keyword">get</span>(), reinterpret_cast<const sockaddr *>(&addr), opts);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keyword">template</span><<span class="keyword">typename</span> I = IPv4></div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classuvw_1_1TcpHandle.html#a5bf82b9a34bc9a5c4dc3099d6960c80b"> 157</a></span>  <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1TcpHandle.html#a5bf82b9a34bc9a5c4dc3099d6960c80b">bind</a>(<a class="code" href="structuvw_1_1Addr.html">Addr</a> addr, <a class="code" href="classuvw_1_1Flags.html">Flags<Bind></a> opts = <a class="code" href="classuvw_1_1Flags.html">Flags<Bind></a>{}) {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  bind<I>(addr.<a class="code" href="structuvw_1_1Addr.html#a398a3805b87c8c2b64baf94cdc586fef">ip</a>, addr.<a class="code" href="structuvw_1_1Addr.html#a2069fc52d0ad91f65d76f558b8b7673f">port</a>, opts);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keyword">template</span><<span class="keyword">typename</span> I = IPv4></div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="classuvw_1_1TcpHandle.html#a4394e77b6edebdf38e76241e2f28f56e"> 166</a></span>  <a class="code" href="structuvw_1_1Addr.html">Addr</a> <a class="code" href="classuvw_1_1TcpHandle.html#a4394e77b6edebdf38e76241e2f28f56e">sock</a>() const noexcept {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">return</span> details::address<I>(&uv_tcp_getsockname, <span class="keyword">get</span>());</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keyword">template</span><<span class="keyword">typename</span> I = IPv4></div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classuvw_1_1TcpHandle.html#a0d1a767f0f6da7f32e492485f4adab1a"> 175</a></span>  <a class="code" href="structuvw_1_1Addr.html">Addr</a> <a class="code" href="classuvw_1_1TcpHandle.html#a0d1a767f0f6da7f32e492485f4adab1a">peer</a>() const noexcept {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">return</span> details::address<I>(&uv_tcp_getpeername, <span class="keyword">get</span>());</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keyword">template</span><<span class="keyword">typename</span> I = IPv4></div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classuvw_1_1TcpHandle.html#abb2dcfd605fea355ab3c8a2dde74bb13"> 190</a></span>  <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1TcpHandle.html#abb2dcfd605fea355ab3c8a2dde74bb13">connect</a>(std::string ip, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> port) {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keyword">typename</span> details::IpTraits<I>::Type addr;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  details::IpTraits<I>::addrFunc(ip.data(), port, &addr);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keyword">auto</span> listener = [ptr = shared_from_this()](<span class="keyword">const</span> <span class="keyword">auto</span> &event, <span class="keyword">const</span> <span class="keyword">auto</span> &) {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  ptr->publish(event);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  };</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keyword">auto</span> req = loop().resource<details::ConnectReq>();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  req->once<<a class="code" href="structuvw_1_1ErrorEvent.html">ErrorEvent</a>>(listener);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  req->once<<a class="code" href="structuvw_1_1ConnectEvent.html">ConnectEvent</a>>(listener);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  req->connect(&uv_tcp_connect, <span class="keyword">get</span>(), reinterpret_cast<const sockaddr *>(&addr));</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keyword">template</span><<span class="keyword">typename</span> I = IPv4></div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="classuvw_1_1TcpHandle.html#a696d8ad1f20b5f48d72e47e9452ad8f3"> 214</a></span>  <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1TcpHandle.html#a696d8ad1f20b5f48d72e47e9452ad8f3">connect</a>(<a class="code" href="structuvw_1_1Addr.html">Addr</a> addr) {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  connect<I>(addr.<a class="code" href="structuvw_1_1Addr.html#a398a3805b87c8c2b64baf94cdc586fef">ip</a>, addr.<a class="code" href="structuvw_1_1Addr.html#a2069fc52d0ad91f65d76f558b8b7673f">port</a>);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keyword">enum</span> { DEFAULT, FLAGS } tag;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> flags;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> };</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> }</div><div class="ttc" id="structuvw_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_8hpp_source.html#l00286">util.hpp:286</a></div></div>
|
||
<div class="ttc" id="structuvw_1_1Addr_html_a2069fc52d0ad91f65d76f558b8b7673f"><div class="ttname"><a href="structuvw_1_1Addr.html#a2069fc52d0ad91f65d76f558b8b7673f">uvw::Addr::port</a></div><div class="ttdeci">unsigned int port</div><div class="ttdef"><b>Definition:</b> <a href="util_8hpp_source.html#l00288">util.hpp:288</a></div></div>
|
||
<div class="ttc" id="structuvw_1_1Addr_html_a398a3805b87c8c2b64baf94cdc586fef"><div class="ttname"><a href="structuvw_1_1Addr.html#a398a3805b87c8c2b64baf94cdc586fef">uvw::Addr::ip</a></div><div class="ttdeci">std::string ip</div><div class="ttdef"><b>Definition:</b> <a href="util_8hpp_source.html#l00287">util.hpp:287</a></div></div>
|
||
<div class="ttc" id="classuvw_1_1TcpHandle_html_a6f1aaf85110e2f1af6ea562313719163"><div class="ttname"><a href="classuvw_1_1TcpHandle.html#a6f1aaf85110e2f1af6ea562313719163">uvw::TcpHandle::bind</a></div><div class="ttdeci">void bind(std::string ip, unsigned int port, Flags< Bind > opts=Flags< Bind >{})</div><div class="ttdoc">Binds the handle to an address and port. </div><div class="ttdef"><b>Definition:</b> <a href="tcp_8hpp_source.html#l00134">tcp.hpp:134</a></div></div>
|
||
<div class="ttc" id="classuvw_1_1TcpHandle_html_abb2dcfd605fea355ab3c8a2dde74bb13"><div class="ttname"><a href="classuvw_1_1TcpHandle.html#abb2dcfd605fea355ab3c8a2dde74bb13">uvw::TcpHandle::connect</a></div><div class="ttdeci">void connect(std::string ip, unsigned int port)</div><div class="ttdoc">Establishes an IPv4 or IPv6 TCP connection. </div><div class="ttdef"><b>Definition:</b> <a href="tcp_8hpp_source.html#l00190">tcp.hpp:190</a></div></div>
|
||
<div class="ttc" id="classuvw_1_1TcpHandle_html_a696d8ad1f20b5f48d72e47e9452ad8f3"><div class="ttname"><a href="classuvw_1_1TcpHandle.html#a696d8ad1f20b5f48d72e47e9452ad8f3">uvw::TcpHandle::connect</a></div><div class="ttdeci">void connect(Addr addr)</div><div class="ttdoc">Establishes an IPv4 or IPv6 TCP connection. </div><div class="ttdef"><b>Definition:</b> <a href="tcp_8hpp_source.html#l00214">tcp.hpp:214</a></div></div>
|
||
<div class="ttc" id="classuvw_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_8hpp_source.html#l00077">util.hpp:77</a></div></div>
|
||
<div class="ttc" id="classuvw_1_1TcpHandle_html_a0d1a767f0f6da7f32e492485f4adab1a"><div class="ttname"><a href="classuvw_1_1TcpHandle.html#a0d1a767f0f6da7f32e492485f4adab1a">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 class="ttdef"><b>Definition:</b> <a href="tcp_8hpp_source.html#l00175">tcp.hpp:175</a></div></div>
|
||
<div class="ttc" id="classuvw_1_1TcpHandle_html_a4394e77b6edebdf38e76241e2f28f56e"><div class="ttname"><a href="classuvw_1_1TcpHandle.html#a4394e77b6edebdf38e76241e2f28f56e">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 class="ttdef"><b>Definition:</b> <a href="tcp_8hpp_source.html#l00166">tcp.hpp:166</a></div></div>
|
||
<div class="ttc" id="structuvw_1_1ConnectEvent_html"><div class="ttname"><a href="structuvw_1_1ConnectEvent.html">uvw::ConnectEvent</a></div><div class="ttdoc">ConnectEvent event. </div><div class="ttdef"><b>Definition:</b> <a href="stream_8hpp_source.html#l00023">stream.hpp:23</a></div></div>
|
||
<div class="ttc" id="classuvw_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_8hpp_source.html#l00130">stream.hpp:130</a></div></div>
|
||
<div class="ttc" id="structuvw_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_8hpp_source.html#l00280">util.hpp:280</a></div></div>
|
||
<div class="ttc" id="classuvw_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_8hpp_source.html#l00045">tcp.hpp:45</a></div></div>
|
||
<div class="ttc" id="classuvw_1_1TcpHandle_html_ac9b1d128b10dbb3be621823f9dae48e3"><div class="ttname"><a href="classuvw_1_1TcpHandle.html#ac9b1d128b10dbb3be621823f9dae48e3">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 class="ttdef"><b>Definition:</b> <a href="tcp_8hpp_source.html#l00060">tcp.hpp:60</a></div></div>
|
||
<div class="ttc" id="structuvw_1_1ErrorEvent_html"><div class="ttname"><a href="structuvw_1_1ErrorEvent.html">uvw::ErrorEvent</a></div><div class="ttdoc">The ErrorEvent event. </div><div class="ttdef"><b>Definition:</b> <a href="emitter_8hpp_source.html#l00023">emitter.hpp:23</a></div></div>
|
||
<div class="ttc" id="namespaceuvw_html_a2df38e5bba10fc959ef37074cf580097"><div class="ttname"><a href="namespaceuvw.html#a2df38e5bba10fc959ef37074cf580097">uvw::OSSocketHandle</a></div><div class="ttdeci">details::UVTypeWrapper< uv_os_sock_t > OSSocketHandle</div><div class="ttdef"><b>Definition:</b> <a href="util_8hpp_source.html#l00187">util.hpp:187</a></div></div>
|
||
<div class="ttc" id="classuvw_1_1TcpHandle_html_ab1815761f0a6a2a641c9d5f6c297d33c"><div class="ttname"><a href="classuvw_1_1TcpHandle.html#ab1815761f0a6a2a641c9d5f6c297d33c">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 class="ttdef"><b>Definition:</b> <a href="tcp_8hpp_source.html#l00094">tcp.hpp:94</a></div></div>
|
||
<div class="ttc" id="classuvw_1_1TcpHandle_html_a4e494c5cf91a5c223ef8d5ce88262457"><div class="ttname"><a href="classuvw_1_1TcpHandle.html#a4e494c5cf91a5c223ef8d5ce88262457">uvw::TcpHandle::noDelay</a></div><div class="ttdeci">bool noDelay(bool value=false)</div><div class="ttdoc">Enables/Disables Nagle’s algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="tcp_8hpp_source.html#l00083">tcp.hpp:83</a></div></div>
|
||
<div class="ttc" id="classuvw_1_1TcpHandle_html_a5bf82b9a34bc9a5c4dc3099d6960c80b"><div class="ttname"><a href="classuvw_1_1TcpHandle.html#a5bf82b9a34bc9a5c4dc3099d6960c80b">uvw::TcpHandle::bind</a></div><div class="ttdeci">void bind(Addr addr, Flags< Bind > opts=Flags< Bind >{})</div><div class="ttdoc">Binds the handle to an address and port. </div><div class="ttdef"><b>Definition:</b> <a href="tcp_8hpp_source.html#l00157">tcp.hpp:157</a></div></div>
|
||
<div class="ttc" id="classuvw_1_1TcpHandle_html_a005b4643e2926b090a2585b48c7a387c"><div class="ttname"><a href="classuvw_1_1TcpHandle.html#a005b4643e2926b090a2585b48c7a387c">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 class="ttdef"><b>Definition:</b> <a href="tcp_8hpp_source.html#l00112">tcp.hpp:112</a></div></div>
|
||
<div class="ttc" id="classuvw_1_1TcpHandle_html_aef58761c8fc6404e64b53ca188f899ec"><div class="ttname"><a href="classuvw_1_1TcpHandle.html#aef58761c8fc6404e64b53ca188f899ec">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 class="ttdef"><b>Definition:</b> <a href="tcp_8hpp_source.html#l00074">tcp.hpp:74</a></div></div>
|
||
<div class="ttc" id="structuvw_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_8hpp_source.html#l00272">util.hpp:272</a></div></div>
|
||
<div class="ttc" id="namespaceuvw_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_8hpp_source.html#l00011">async.hpp:11</a></div></div>
|
||
</div><!-- fragment --></div><!-- contents -->
|
||
<!-- start footer part -->
|
||
<hr class="footer"/><address class="footer"><small>
|
||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||
</a> 1.8.13
|
||
</small></address>
|
||
</body>
|
||
</html>
|