You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by gi...@apache.org on 2018/02/06 00:53:55 UTC
[3/4] mesos-site git commit: Updated the website built from mesos
SHA: a79fe26.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/275c1dec/content/api/latest/c++/libprocess_2include_2process_2socket_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/libprocess_2include_2process_2socket_8hpp_source.html b/content/api/latest/c++/libprocess_2include_2process_2socket_8hpp_source.html
index 2056c0a..14a682a 100644
--- a/content/api/latest/c++/libprocess_2include_2process_2socket_8hpp_source.html
+++ b/content/api/latest/c++/libprocess_2include_2process_2socket_8hpp_source.html
@@ -78,422 +78,424 @@
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="future_8hpp.html">process/future.hpp</a>></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> <span class="preprocessor">#include <<a class="code" href="abort_8hpp.html">stout/abort.hpp</a>></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>></span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor"></span><span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#endif // __WINDOWS__</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>></span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>></span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor"></span><span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#endif // __WINDOWS__</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>></span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a> {</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">namespace </span>network {</div>
-<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1network_1_1internal.html"> 39</a></span> <span class="keyword">namespace </span>internal {</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div>
-<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html"> 55</a></span> <span class="keyword">class </span><a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html">SocketImpl</a> : <span class="keyword">public</span> std::enable_shared_from_this<SocketImpl></div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> {</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5"> 64</a></span>  <span class="keyword">enum class</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">Kind</a></div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  {</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5a48798d6fe72649c6d013e60081c38d9a">POLL</a>,</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">#ifdef USE_SSL_SOCKET</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor"></span> SSL</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor"></span> };</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">static</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6ef4668e83adac7bb0ff2b54e1a30ecc">DEFAULT_KIND</a>();</div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<std::shared_ptr<SocketImpl></a>> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a5a00f792b5055241fea9f1fc81b2c4c6">create</a>(</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a303670cfc45c0e1a564fec0532320804">s</a>,</div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#aa4754b1975ff51b35734e8f5941ee319">kind</a> = <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6ef4668e83adac7bb0ff2b54e1a30ecc">DEFAULT_KIND</a>());</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="comment">// TODO(josephw): MESOS-5729: Consider making the CLOEXEC option</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// configurable by the caller of the interface.</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<std::shared_ptr<SocketImpl></a>> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a5a00f792b5055241fea9f1fc81b2c4c6">create</a>(</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="classprocess_1_1network_1_1Address.html#a0c9fa166dbf9c863a6ef68aa8343e3fc">Address::Family</a> family,</div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#aa4754b1975ff51b35734e8f5941ee319">kind</a> = <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6ef4668e83adac7bb0ff2b54e1a30ecc">DEFAULT_KIND</a>());</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div>
-<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6c309d35f5d776af4f9abe1f12367094"> 105</a></span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6c309d35f5d776af4f9abe1f12367094">~SocketImpl</a>()</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  {</div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// Don't close if the socket was released.</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span> (s >= 0) {</div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(<a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(s)) << <span class="stringliteral">"Failed to close socket"</span>;</div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div>
-<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#af0c991d0689192ac03ed3e4bc1d025ec"> 116</a></span>  <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> <span class="keyword">get</span>() <span class="keyword">const</span></div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">return</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a303670cfc45c0e1a564fec0532320804">s</a>;</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="classTry.html">Try<Address></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a2289c8b4a10fae48e88518019c900c5a">address</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="classTry.html">Try<Address></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab378bc6c952d9475a6a047b0a57386b5">peer</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="classTry.html">Try<Address></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a2c9eff7657c4b46be8f19809fcb12822">bind</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1network_1_1Address.html">Address</a>& <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a2289c8b4a10fae48e88518019c900c5a">address</a>);</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>  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a2af1042316d1dd5bd551bc4a2ee69000">listen</a>(<span class="keywordtype">int</span> backlog) = 0;</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">Future<std::shared_ptr<SocketImpl></a>> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a736f79aaed2572670aab9eda08cc4efa">accept</a>() = 0;</div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">Future<Nothing></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a54ff5817c8e53085c47d8df7e6f5ffd9">connect</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1network_1_1Address.html">Address</a>& <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a2289c8b4a10fae48e88518019c900c5a">address</a>) = 0;</div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">Future<size_t></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a081d62bd6c808c7293a863ebefa1964e">recv</a>(<span class="keywordtype">char</span>* data, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>) = 0;</div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">Future<size_t></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#afe37d6fc53fc38545d1878dfb0918d88">send</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* data, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>) = 0;</div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">Future<size_t></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a15c48459535a0a99a2a70ff1fcbb7d59">sendfile</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, off_t offset, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>) = 0;</div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="comment">// TODO(benh): Consider returning Owned<std::string> or</span></div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="comment">// Shared<std::string>, the latter enabling reuse of a pool of</span></div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="comment">// preallocated strings/buffers.</span></div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">Future<std::string></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a081d62bd6c808c7293a863ebefa1964e">recv</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option<ssize_t></a>& <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = <a class="code" href="structNone.html">None</a>());</div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="comment">// TODO(benh): Consider taking Shared<std::string>, the latter</span></div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// enabling reuse of a pool of preallocated strings/buffers.</span></div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">Future<Nothing></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#afe37d6fc53fc38545d1878dfb0918d88">send</a>(<span class="keyword">const</span> std::string& data);</div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div>
-<div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a8ca349b7fea02ca0e9a597ee080887e3"> 190</a></span>  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a8ca349b7fea02ca0e9a597ee080887e3">shutdown</a>(<span class="keywordtype">int</span> how)</div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  {</div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">if</span> (::<a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a8ca349b7fea02ca0e9a597ee080887e3">shutdown</a>(s, how) < 0) {</div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</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> </div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#aa4754b1975ff51b35734e8f5941ee319">kind</a>() <span class="keyword">const</span> = 0;</div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a9c899f4ca922824a0092288d5d6b79b4"> 202</a></span>  <span class="keyword">explicit</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a9c899f4ca922824a0092288d5d6b79b4">SocketImpl</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> _s) : s(_s) { CHECK(s >= 0); }</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div>
-<div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a963ee1a4b21acf7f423b86fd06cdf09a"> 210</a></span>  <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a963ee1a4b21acf7f423b86fd06cdf09a">release</a>()</div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  {</div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> released = <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a303670cfc45c0e1a564fec0532320804">s</a>;</div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  s = -1;</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">return</span> released;</div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
-<div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a593398b46bc29ef1e6b87b2fadbba7d6"> 221</a></span>  <span class="keyword">static</span> std::shared_ptr<T> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a593398b46bc29ef1e6b87b2fadbba7d6">shared</a>(T* t)</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>  std::shared_ptr<T> pointer =</div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  std::dynamic_pointer_cast<T>(CHECK_NOTNULL(t)->shared_from_this());</div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  CHECK(pointer);</div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">return</span> pointer;</div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div>
-<div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a303670cfc45c0e1a564fec0532320804"> 229</a></span>  <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a303670cfc45c0e1a564fec0532320804">s</a>;</div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span> };</div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a> {</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">namespace </span>network {</div>
+<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1network_1_1internal.html"> 40</a></span> <span class="keyword">namespace </span>internal {</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div>
+<div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html"> 56</a></span> <span class="keyword">class </span><a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html">SocketImpl</a> : <span class="keyword">public</span> std::enable_shared_from_this<SocketImpl></div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> {</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5"> 65</a></span>  <span class="keyword">enum class</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">Kind</a></div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  {</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5a48798d6fe72649c6d013e60081c38d9a">POLL</a>,</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#ifdef USE_SSL_SOCKET</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor"></span> SSL</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor"></span> };</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">static</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6ef4668e83adac7bb0ff2b54e1a30ecc">DEFAULT_KIND</a>();</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<std::shared_ptr<SocketImpl></a>> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a5a00f792b5055241fea9f1fc81b2c4c6">create</a>(</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a303670cfc45c0e1a564fec0532320804">s</a>,</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#aa4754b1975ff51b35734e8f5941ee319">kind</a> = <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6ef4668e83adac7bb0ff2b54e1a30ecc">DEFAULT_KIND</a>());</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// TODO(josephw): MESOS-5729: Consider making the CLOEXEC option</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="comment">// configurable by the caller of the interface.</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<std::shared_ptr<SocketImpl></a>> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a5a00f792b5055241fea9f1fc81b2c4c6">create</a>(</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <a class="code" href="classprocess_1_1network_1_1Address.html#a0c9fa166dbf9c863a6ef68aa8343e3fc">Address::Family</a> family,</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#aa4754b1975ff51b35734e8f5941ee319">kind</a> = <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6ef4668e83adac7bb0ff2b54e1a30ecc">DEFAULT_KIND</a>());</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div>
+<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6c309d35f5d776af4f9abe1f12367094"> 106</a></span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6c309d35f5d776af4f9abe1f12367094">~SocketImpl</a>()</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// Don't close if the socket was released.</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span> (s >= 0) {</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(<a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(s)) << <span class="stringliteral">"Failed to close socket"</span>;</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div>
+<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#af0c991d0689192ac03ed3e4bc1d025ec"> 117</a></span>  <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> <span class="keyword">get</span>() <span class="keyword">const</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  {</div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">return</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a303670cfc45c0e1a564fec0532320804">s</a>;</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="classTry.html">Try<Address></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a2289c8b4a10fae48e88518019c900c5a">address</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="classTry.html">Try<Address></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab378bc6c952d9475a6a047b0a57386b5">peer</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="classTry.html">Try<Address></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a2c9eff7657c4b46be8f19809fcb12822">bind</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1network_1_1Address.html">Address</a>& <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a2289c8b4a10fae48e88518019c900c5a">address</a>);</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a2af1042316d1dd5bd551bc4a2ee69000">listen</a>(<span class="keywordtype">int</span> backlog) = 0;</div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">Future<std::shared_ptr<SocketImpl></a>> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a736f79aaed2572670aab9eda08cc4efa">accept</a>() = 0;</div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">Future<Nothing></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a54ff5817c8e53085c47d8df7e6f5ffd9">connect</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1network_1_1Address.html">Address</a>& <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a2289c8b4a10fae48e88518019c900c5a">address</a>) = 0;</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">Future<size_t></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a081d62bd6c808c7293a863ebefa1964e">recv</a>(<span class="keywordtype">char</span>* data, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>) = 0;</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">Future<size_t></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#afe37d6fc53fc38545d1878dfb0918d88">send</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* data, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>) = 0;</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">Future<size_t></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a15c48459535a0a99a2a70ff1fcbb7d59">sendfile</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, off_t offset, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>) = 0;</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="comment">// TODO(benh): Consider returning Owned<std::string> or</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="comment">// Shared<std::string>, the latter enabling reuse of a pool of</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="comment">// preallocated strings/buffers.</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">Future<std::string></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a081d62bd6c808c7293a863ebefa1964e">recv</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option<ssize_t></a>& <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = <a class="code" href="structNone.html">None</a>());</div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// TODO(benh): Consider taking Shared<std::string>, the latter</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">// enabling reuse of a pool of preallocated strings/buffers.</span></div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">Future<Nothing></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#afe37d6fc53fc38545d1878dfb0918d88">send</a>(<span class="keyword">const</span> std::string& data);</div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div>
+<div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a04930363612888ceb04d517061a43f3e"> 191</a></span>  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try<Nothing, SocketError></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a04930363612888ceb04d517061a43f3e">shutdown</a>(<span class="keywordtype">int</span> how)</div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  {</div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">if</span> (::<a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a04930363612888ceb04d517061a43f3e">shutdown</a>(s, how) < 0) {</div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">return</span> <a class="code" href="error_8hpp.html#a176f6fc34ea37d40201853a52a475762">SocketError</a>();</div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</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>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#aa4754b1975ff51b35734e8f5941ee319">kind</a>() <span class="keyword">const</span> = 0;</div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a9c899f4ca922824a0092288d5d6b79b4"> 203</a></span>  <span class="keyword">explicit</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a9c899f4ca922824a0092288d5d6b79b4">SocketImpl</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> _s) : s(_s) { CHECK(s >= 0); }</div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div>
+<div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a963ee1a4b21acf7f423b86fd06cdf09a"> 211</a></span>  <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a963ee1a4b21acf7f423b86fd06cdf09a">release</a>()</div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  {</div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> released = <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a303670cfc45c0e1a564fec0532320804">s</a>;</div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  s = -1;</div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">return</span> released;</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="l00221"></a><span class="lineno"> 221</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a593398b46bc29ef1e6b87b2fadbba7d6"> 222</a></span>  <span class="keyword">static</span> std::shared_ptr<T> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a593398b46bc29ef1e6b87b2fadbba7d6">shared</a>(T* t)</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>  std::shared_ptr<T> pointer =</div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  std::dynamic_pointer_cast<T>(CHECK_NOTNULL(t)->shared_from_this());</div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  CHECK(pointer);</div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">return</span> pointer;</div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div>
+<div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a303670cfc45c0e1a564fec0532320804"> 230</a></span>  <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a303670cfc45c0e1a564fec0532320804">s</a>;</div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span> };</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="keyword">template</span> <<span class="keyword">typename</span> AddressType></div>
-<div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html"> 241</a></span> <span class="keyword">class </span><a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html">Socket</a></div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> {</div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  static_assert(</div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  std::is_convertible<AddressType, network::Address>::value,</div>
-<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="stringliteral">"Requires type convertible to `network::Address`"</span>);</div>
-<div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div>
-<div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a63ec4379f16d4f8dbf39f91b1be74a31"> 257</a></span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<Socket></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a63ec4379f16d4f8dbf39f91b1be74a31">create</a>(</div>
-<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> s,</div>
-<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">SocketImpl::Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a321e42cc71f404ff9a1ae51108c92ef8">kind</a> = <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6ef4668e83adac7bb0ff2b54e1a30ecc">SocketImpl::DEFAULT_KIND</a>())</div>
-<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  {</div>
-<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <a class="code" href="classTry.html">Try<std::shared_ptr<SocketImpl></a>> impl = <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a5a00f792b5055241fea9f1fc81b2c4c6">SocketImpl::create</a>(s, <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a321e42cc71f404ff9a1ae51108c92ef8">kind</a>);</div>
-<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">if</span> (impl.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(impl.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
-<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div>
-<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">return</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a4c6b05834cc8a65c85de7bdb32aac069">Socket</a>(impl.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>());</div>
-<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div>
-<div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div>
-<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">// TODO(josephw): MESOS-5729: Consider making the CLOEXEC option</span></div>
-<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">// configurable by the caller of the interface.</span></div>
-<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<Socket></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a63ec4379f16d4f8dbf39f91b1be74a31">create</a>(<a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">SocketImpl::Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a321e42cc71f404ff9a1ae51108c92ef8">kind</a> = <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6ef4668e83adac7bb0ff2b54e1a30ecc">SocketImpl::DEFAULT_KIND</a>());</div>
-<div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div>
-<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<Socket></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a63ec4379f16d4f8dbf39f91b1be74a31">create</a>(</div>
-<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <a class="code" href="classprocess_1_1network_1_1Address.html#a0c9fa166dbf9c863a6ef68aa8343e3fc">Address::Family</a> family,</div>
-<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">SocketImpl::Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a321e42cc71f404ff9a1ae51108c92ef8">kind</a> = <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6ef4668e83adac7bb0ff2b54e1a30ecc">SocketImpl::DEFAULT_KIND</a>());</div>
-<div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div>
-<div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a321e42cc71f404ff9a1ae51108c92ef8"> 306</a></span>  <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">SocketImpl::Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a321e42cc71f404ff9a1ae51108c92ef8">kind</a>()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="keyword"> </span>{</div>
-<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">return</span> impl->kind();</div>
-<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  }</div>
-<div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div>
-<div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a88163658413e7817b7d6b442b7eb7dd6"> 311</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a88163658413e7817b7d6b442b7eb7dd6">operator==</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html">Socket</a>& that)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="keyword"> </span>{</div>
-<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">return</span> impl == that.impl;</div>
-<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div>
-<div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div>
-<div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a766b71809970711c05029c28b60a0d62"> 316</a></span>  <span class="keyword">operator</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="keyword"> </span>{</div>
-<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">return</span> impl->get();</div>
-<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  }</div>
-<div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div>
-<div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#ae0a90b8a9cbc66e8042905a34652f2db"> 321</a></span>  <a class="code" href="classTry.html">Try<AddressType></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#ae0a90b8a9cbc66e8042905a34652f2db">address</a>()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="keyword"> </span>{</div>
-<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">return</span> convert<AddressType>(impl->address());</div>
-<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div>
-<div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div>
-<div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a78158efb4187b3d5adac7e8b902378c4"> 326</a></span>  <a class="code" href="classTry.html">Try<AddressType></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a78158efb4187b3d5adac7e8b902378c4">peer</a>()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="keyword"> </span>{</div>
-<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">return</span> convert<AddressType>(impl->peer());</div>
-<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  }</div>
-<div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div>
-<div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a9634920f3ca2ed414fab8ad242b67e6c"> 331</a></span>  <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> <span class="keyword">get</span>() <span class="keyword">const</span></div>
-<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  {</div>
-<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">return</span> impl->get();</div>
-<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div>
-<div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div>
-<div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a68eb3de09258bba9066e7c258abe4be8"> 336</a></span>  <a class="code" href="classTry.html">Try<AddressType></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a68eb3de09258bba9066e7c258abe4be8">bind</a>(<span class="keyword">const</span> AddressType& <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#ae0a90b8a9cbc66e8042905a34652f2db">address</a>)</div>
-<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  {</div>
-<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">return</span> convert<AddressType>(impl->bind(address));</div>
-<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  }</div>
-<div class="line"><a name="l00340"></a><span class="lineno"> 340</span> </div>
-<div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a47004344dd24c96f445f86fd5bd11b2c"> 341</a></span>  <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a47004344dd24c96f445f86fd5bd11b2c">listen</a>(<span class="keywordtype">int</span> backlog)</div>
-<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  {</div>
-<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">return</span> impl->listen(backlog);</div>
-<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  }</div>
-<div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div>
-<div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a710758874ebc05acdc9bee369254aa13"> 346</a></span>  <a class="code" href="classprocess_1_1Future.html">Future<Socket></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a710758874ebc05acdc9bee369254aa13">accept</a>()</div>
-<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  {</div>
-<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="comment">// NOTE: We save a reference to the listening socket itself</span></div>
-<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="comment">// (i.e., 'this') so that we don't close the listening socket</span></div>
-<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="comment">// while 'accept' is in flight.</span></div>
-<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  std::shared_ptr<SocketImpl> <span class="keyword">self</span> = impl->shared_from_this();</div>
-<div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div>
-<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">return</span> impl->accept()</div>
-<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="comment">// TODO(benh): Use && for `accepted` here!</span></div>
-<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  .then([<span class="keyword">self</span>](<span class="keyword">const</span> std::shared_ptr<SocketImpl>& accepted) {</div>
-<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">return</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a4c6b05834cc8a65c85de7bdb32aac069">Socket</a>(accepted);</div>
-<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  });</div>
-<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  }</div>
-<div class="line"><a name="l00359"></a><span class="lineno"> 359</span> </div>
-<div class="line"><a name="l00360"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#aa441e29328f4f4416a07689de4040022"> 360</a></span>  <a class="code" href="classprocess_1_1Future.html">Future<Nothing></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#aa441e29328f4f4416a07689de4040022">connect</a>(<span class="keyword">const</span> AddressType& <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#ae0a90b8a9cbc66e8042905a34652f2db">address</a>)</div>
-<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  {</div>
-<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">return</span> impl->connect(address);</div>
-<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  }</div>
-<div class="line"><a name="l00364"></a><span class="lineno"> 364</span> </div>
-<div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#ae81929b2f51bb910ed4ae1504284bffa"> 365</a></span>  <a class="code" href="classprocess_1_1Future.html">Future<size_t></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#ae81929b2f51bb910ed4ae1504284bffa">recv</a>(<span class="keywordtype">char</span>* data, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00366"></a><span class="lineno"> 366</span> <span class="keyword"> </span>{</div>
-<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">return</span> impl->recv(data, size);</div>
-<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  }</div>
-<div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div>
-<div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a78f8be2490ac380984f60f6081a5c8eb"> 370</a></span>  <a class="code" href="classprocess_1_1Future.html">Future<size_t></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a78f8be2490ac380984f60f6081a5c8eb">send</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* data, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00371"></a><span class="lineno"> 371</span> <span class="keyword"> </span>{</div>
-<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">return</span> impl->send(data, size);</div>
-<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  }</div>
-<div class="line"><a name="l00374"></a><span class="lineno"> 374</span> </div>
-<div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a90bb4cd85693572a79192d8f2a044ed2"> 375</a></span>  <a class="code" href="classprocess_1_1Future.html">Future<size_t></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a90bb4cd85693572a79192d8f2a044ed2">sendfile</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, off_t offset, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00376"></a><span class="lineno"> 376</span> <span class="keyword"> </span>{</div>
-<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">return</span> impl->sendfile(fd, offset, size);</div>
-<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  }</div>
-<div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div>
-<div class="line"><a name="l00380"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a83b6acc990b981a818eb2691a44fc6c4"> 380</a></span>  <a class="code" href="classprocess_1_1Future.html">Future<std::string></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a83b6acc990b981a818eb2691a44fc6c4">recv</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option<ssize_t></a>& <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = <a class="code" href="structNone.html">None</a>())</div>
-<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  {</div>
-<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">return</span> impl->recv(<a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>);</div>
-<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  }</div>
-<div class="line"><a name="l00384"></a><span class="lineno"> 384</span> </div>
-<div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a85a9dda04473d40c874189b62efd19bd"> 385</a></span>  <a class="code" href="classprocess_1_1Future.html">Future<Nothing></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a85a9dda04473d40c874189b62efd19bd">send</a>(<span class="keyword">const</span> std::string& data)</div>
-<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  {</div>
-<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">return</span> impl->send(data);</div>
-<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  }</div>
-<div class="line"><a name="l00389"></a><span class="lineno"> 389</span> </div>
-<div class="line"><a name="l00390"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#ac5a52929658fbe1ed19b4b03bdd63904"> 390</a></span>  <span class="keyword">enum class</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#ac5a52929658fbe1ed19b4b03bdd63904">Shutdown</a></div>
-<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  {</div>
-<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  READ,</div>
-<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  WRITE,</div>
-<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  READ_WRITE</div>
-<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  };</div>
-<div class="line"><a name="l00396"></a><span class="lineno"> 396</span> </div>
-<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="comment">// TODO(benh): Replace the default to Shutdown::READ_WRITE or remove</span></div>
-<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="comment">// all together since it's unclear what the default should be.</span></div>
-<div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a8a3d3554e93e4ec1ba3b2e64f7df0725"> 399</a></span>  <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a8a3d3554e93e4ec1ba3b2e64f7df0725">shutdown</a>(<a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#ac5a52929658fbe1ed19b4b03bdd63904">Shutdown</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a8a3d3554e93e4ec1ba3b2e64f7df0725">shutdown</a> = <a class="code" href="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879">Shutdown::READ</a>)</div>
-<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  {</div>
-<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordtype">int</span> how = [&]() {</div>
-<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">switch</span> (<a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a8a3d3554e93e4ec1ba3b2e64f7df0725">shutdown</a>) {</div>
-<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keywordflow">case</span> <a class="code" href="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879">Shutdown::READ</a>: <span class="keywordflow">return</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a337bdc938215c39cd21ddd11106189c6">SHUT_RD</a>;</div>
-<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">case</span> <a class="code" href="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc">Shutdown::WRITE</a>: <span class="keywordflow">return</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ac3d4e32482af3ec2158643d9996d78da">SHUT_WR</a>;</div>
-<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">case</span> Shutdown::READ_WRITE: <span class="keywordflow">return</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abc5dbd13b73a0a66d7fa25364a3f7d77">SHUT_RDWR</a>;</div>
-<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  }</div>
-<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div>
-<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  }();</div>
-<div class="line"><a name="l00409"></a><span class="lineno"> 409</span> </div>
-<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">return</span> impl->shutdown(how);</div>
-<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  }</div>
-<div class="line"><a name="l00412"></a><span class="lineno"> 412</span> </div>
-<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="comment">// Support implicit conversion of any `Socket<AddressType>` to a</span></div>
-<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="comment">// `Socket<network::Address>`.</span></div>
-<div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a044985d2955fb97d2d966a3d2a66dc86"> 415</a></span>  <span class="keyword">operator</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html">Socket<network::Address></a>() <span class="keyword">const</span></div>
-<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  {</div>
-<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">return</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html">Socket<network::Address></a>(impl);</div>
-<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  }</div>
-<div class="line"><a name="l00419"></a><span class="lineno"> 419</span> </div>
-<div class="line"><a name="l00420"></a><span class="lineno"> 420</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="comment">// Necessary to support the implicit conversion operator from any</span></div>
-<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="comment">// `Socket<AddressType>` to `Socket<network::Address>`.</span></div>
-<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
-<div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a4c6b05834cc8a65c85de7bdb32aac069"> 424</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html">Socket</a>;</div>
-<div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div>
-<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keyword">explicit</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a4c6b05834cc8a65c85de7bdb32aac069">Socket</a>(std::shared_ptr<SocketImpl>&& that) : impl(std::move(that)) {}</div>
-<div class="line"><a name="l00427"></a><span class="lineno"> 427</span> </div>
-<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keyword">explicit</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a4c6b05834cc8a65c85de7bdb32aac069">Socket</a>(<span class="keyword">const</span> std::shared_ptr<SocketImpl>& that) : impl(that) {}</div>
-<div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div>
-<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  std::shared_ptr<SocketImpl> impl;</div>
-<div class="line"><a name="l00431"></a><span class="lineno"> 431</span> };</div>
-<div class="line"><a name="l00432"></a><span class="lineno"> 432</span> </div>
-<div class="line"><a name="l00433"></a><span class="lineno"> 433</span> } <span class="comment">// namespace internal {</span></div>
-<div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="keyword">template</span> <<span class="keyword">typename</span> AddressType></div>
+<div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html"> 242</a></span> <span class="keyword">class </span><a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html">Socket</a></div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> {</div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  static_assert(</div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  std::is_convertible<AddressType, network::Address>::value,</div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="stringliteral">"Requires type convertible to `network::Address`"</span>);</div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div>
+<div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a63ec4379f16d4f8dbf39f91b1be74a31"> 258</a></span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<Socket></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a63ec4379f16d4f8dbf39f91b1be74a31">create</a>(</div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> s,</div>
+<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">SocketImpl::Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a321e42cc71f404ff9a1ae51108c92ef8">kind</a> = <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6ef4668e83adac7bb0ff2b54e1a30ecc">SocketImpl::DEFAULT_KIND</a>())</div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  {</div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="classTry.html">Try<std::shared_ptr<SocketImpl></a>> impl = <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a5a00f792b5055241fea9f1fc81b2c4c6">SocketImpl::create</a>(s, <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a321e42cc71f404ff9a1ae51108c92ef8">kind</a>);</div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">if</span> (impl.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(impl.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">return</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a4c6b05834cc8a65c85de7bdb32aac069">Socket</a>(impl.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>());</div>
+<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  }</div>
+<div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">// TODO(josephw): MESOS-5729: Consider making the CLOEXEC option</span></div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="comment">// configurable by the caller of the interface.</span></div>
+<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<Socket></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a63ec4379f16d4f8dbf39f91b1be74a31">create</a>(<a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">SocketImpl::Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a321e42cc71f404ff9a1ae51108c92ef8">kind</a> = <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6ef4668e83adac7bb0ff2b54e1a30ecc">SocketImpl::DEFAULT_KIND</a>());</div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div>
+<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<Socket></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a63ec4379f16d4f8dbf39f91b1be74a31">create</a>(</div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <a class="code" href="classprocess_1_1network_1_1Address.html#a0c9fa166dbf9c863a6ef68aa8343e3fc">Address::Family</a> family,</div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">SocketImpl::Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a321e42cc71f404ff9a1ae51108c92ef8">kind</a> = <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6ef4668e83adac7bb0ff2b54e1a30ecc">SocketImpl::DEFAULT_KIND</a>());</div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div>
+<div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a321e42cc71f404ff9a1ae51108c92ef8"> 307</a></span>  <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">SocketImpl::Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a321e42cc71f404ff9a1ae51108c92ef8">kind</a>()<span class="keyword"> const</span></div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="keyword"> </span>{</div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">return</span> impl->kind();</div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  }</div>
+<div class="line"><a name="l00311"></a><span class="lineno"> 311</span> </div>
+<div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a88163658413e7817b7d6b442b7eb7dd6"> 312</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a88163658413e7817b7d6b442b7eb7dd6">operator==</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html">Socket</a>& that)<span class="keyword"> const</span></div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="keyword"> </span>{</div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">return</span> impl == that.impl;</div>
+<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  }</div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div>
+<div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a766b71809970711c05029c28b60a0d62"> 317</a></span>  <span class="keyword">operator</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>()<span class="keyword"> const</span></div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span> <span class="keyword"> </span>{</div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">return</span> impl->get();</div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  }</div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div>
+<div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#ae0a90b8a9cbc66e8042905a34652f2db"> 322</a></span>  <a class="code" href="classTry.html">Try<AddressType></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#ae0a90b8a9cbc66e8042905a34652f2db">address</a>()<span class="keyword"> const</span></div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span> <span class="keyword"> </span>{</div>
+<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">return</span> convert<AddressType>(impl->address());</div>
+<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  }</div>
+<div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div>
+<div class="line"><a name="l00327"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a78158efb4187b3d5adac7e8b902378c4"> 327</a></span>  <a class="code" href="classTry.html">Try<AddressType></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a78158efb4187b3d5adac7e8b902378c4">peer</a>()<span class="keyword"> const</span></div>
+<div class="line"><a name="l00328"></a><span class="lineno"> 328</span> <span class="keyword"> </span>{</div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">return</span> convert<AddressType>(impl->peer());</div>
+<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  }</div>
+<div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div>
+<div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a9634920f3ca2ed414fab8ad242b67e6c"> 332</a></span>  <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> <span class="keyword">get</span>() <span class="keyword">const</span></div>
+<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  {</div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">return</span> impl->get();</div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  }</div>
+<div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div>
+<div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a68eb3de09258bba9066e7c258abe4be8"> 337</a></span>  <a class="code" href="classTry.html">Try<AddressType></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a68eb3de09258bba9066e7c258abe4be8">bind</a>(<span class="keyword">const</span> AddressType& <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#ae0a90b8a9cbc66e8042905a34652f2db">address</a>)</div>
+<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  {</div>
+<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">return</span> convert<AddressType>(impl->bind(address));</div>
+<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div>
+<div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div>
+<div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a47004344dd24c96f445f86fd5bd11b2c"> 342</a></span>  <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a47004344dd24c96f445f86fd5bd11b2c">listen</a>(<span class="keywordtype">int</span> backlog)</div>
+<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  {</div>
+<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">return</span> impl->listen(backlog);</div>
+<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div>
+<div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div>
+<div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a710758874ebc05acdc9bee369254aa13"> 347</a></span>  <a class="code" href="classprocess_1_1Future.html">Future<Socket></a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a710758874ebc05acdc9bee369254aa13">accept</a>()</div>
+<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  {</div>
+<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="comment">// NOTE: We save a reference to the listening socket itself</span></div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="comment">// (i.e., 'this') so that we don't close the listening socket</span></div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="comment">// while 'accept' is in flight.</span></div>
+<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&
<TRUNCATED>