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/05/23 22:00:01 UTC

[01/13] mesos-site git commit: Updated the website built from mesos SHA: 21305ab.

Repository: mesos-site
Updated Branches:
  refs/heads/asf-site 2803e196f -> 0a0aa73e9


http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/windows_2write_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2write_8hpp.html b/content/api/latest/c++/windows_2write_8hpp.html
index a3aebc7..d5fee69 100644
--- a/content/api/latest/c++/windows_2write_8hpp.html
+++ b/content/api/latest/c++/windows_2write_8hpp.html
@@ -59,6 +59,7 @@
 <code>#include &lt;<a class="el" href="try_8hpp_source.html">stout/try.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="unreachable_8hpp_source.html">stout/unreachable.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp_source.html">stout/windows.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="overlapped_8hpp_source.html">stout/internal/windows/overlapped.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="int__fd_8hpp_source.html">stout/os/int_fd.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="stout_2include_2stout_2os_2socket_8hpp_source.html">stout/os/socket.hpp</a>&gt;</code><br />
 </div>
@@ -71,6 +72,8 @@ Namespaces</h2></td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
 Functions</h2></td></tr>
+<tr class="memitem:a1af52685ba3e8fe8676af86cd16a1eb8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classResult.html">Result</a>&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#a1af52685ba3e8fe8676af86cd16a1eb8">os::write_async</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, const void *data, size_t size, OVERLAPPED *overlapped)</td></tr>
+<tr class="separator:a1af52685ba3e8fe8676af86cd16a1eb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a73da9d49515dfff761c4887c3d6032c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">os::write</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, const void *data, size_t size)</td></tr>
 <tr class="separator:a73da9d49515dfff761c4887c3d6032c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/windows_2write_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2write_8hpp_source.html b/content/api/latest/c++/windows_2write_8hpp_source.html
index 9093a59..2e4ae15 100644
--- a/content/api/latest/c++/windows_2write_8hpp_source.html
+++ b/content/api/latest/c++/windows_2write_8hpp_source.html
@@ -52,19 +52,30 @@
 <div class="title">write.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="windows_2write_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">/
 /</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div cla
 ss="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_WRITE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_WRITE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line">
 <a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2os_2socket_8hpp.html">stout/os/socket.hpp</a>&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a n
 ame="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">   26</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> <a class="code" href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">write</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, <span class="keyword">const</span> <span class="keywordtype">void</span>* data, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>)</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;  CHECK_LE(size, INT_MAX);</d
 iv><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;  <span class="keywordflow">switch</span> (fd.type()) {</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;      DWORD bytes;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;      <span class="comment">// TODO(andschwa): Handle overlapped I/O.</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;      <span class="keyword">const</span> BOOL result =</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;        ::WriteFile(f
 d, data, static_cast&lt;DWORD&gt;(size), &amp;bytes, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;      <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;        <span class="keywordflow">return</span> -1; <span class="comment">// Indicates an error, but we can&#39;t return a `WindowsError`.</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;      }</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a><span class="keyword">&gt;</span>(bytes);</div><div class="line"
 ><a name="l00041"></a><span class="lineno">   41</span>&#160;    }</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;      <a class="code" href="namespacenet.html#aa0a46766b4aca53ea50e1921567ddb40">return ::send</a>(fd, (<span class="keyword">const</span> <span class="keywordtype">char</span>*)data, static_cast&lt;int&gt;(size), 0);</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    }</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;  }</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;  <a class="co
 de" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;}</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_WINDOWS_WRITE_HPP__</span></div><div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a894c4d58faeee7675b9e7e8244de1386"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a></div><div class="ttdeci">SSIZE_T ssize_t</div
 ><div class="ttdef"><b>Definition:</b> windows.hpp:186</div></div>
+<a href="windows_2write_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">/
 /</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div cla
 ss="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_WRITE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_WRITE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line">
 <a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="overlapped_8hpp.html">stout/internal/windows/overlapped.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2os_2socket_8hpp.html">stout/os/sock
 et.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment">// Asynchronous write on a overlapped int_fd. Returns `Error` on fatal errors,</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">// `None()` on a successful pending IO operation or number of bytes written on</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">// a successful IO operation that finished immediately.</span></div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href=
 "namespaceos.html#a1af52685ba3e8fe8676af86cd16a1eb8">   31</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classResult.html">Result&lt;size_t&gt;</a> <a class="code" href="namespaceos.html#a1af52685ba3e8fe8676af86cd16a1eb8">write_async</a>(</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;    <span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd,</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">void</span>* data,</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;    <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>,</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    OVERLAPPED* overlapped)</div><div class=
 "line"><a name="l00036"></a><span class="lineno">   36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;  CHECK_LE(size, UINT_MAX);</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;  <span class="keywordflow">switch</span> (fd.type()) {</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;      DWORD bytes;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">bool</span> success =</div><div class="line"><a name="l00043"></a><spa
 n class="lineno">   43</span>&#160;        ::WriteFile(fd, data, static_cast&lt;DWORD&gt;(size), &amp;bytes, overlapped);</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;      <a class="code" href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">return ::internal::windows::process_async_io_result</a>(success, bytes);</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    }</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;      static_assert(</div><div class="line"><a name="l00049"></a><span class="lineno">   49</s
 pan>&#160;          std::is_same&lt;OVERLAPPED, WSAOVERLAPPED&gt;::value,</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;          <span class="stringliteral">&quot;Expected `WSAOVERLAPPED` to be of type `OVERLAPPED`.&quot;</span>);</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;      <span class="comment">// Note that it&#39;s okay to allocate this on the stack, since the WinSock</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;      <span class="comment">// providers must copy the WSABUF to their internal buffers. See</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;      <span class="comment">// https://msdn.microsoft.com/en-us/library/windows/desktop/ms741688(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div><div class="line"><a name="
 l00055"></a><span class="lineno">   55</span>&#160;      WSABUF buf = {</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;        <span class="keyword">static_cast&lt;</span>u_long<span class="keyword">&gt;</span>(<a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>),</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;        static_cast&lt;char*&gt;(const_cast&lt;void*&gt;(data))</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;      };</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;      DWORD bytes;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">int</span> result =</div><div class="line"><a name="l00062"></a><span class="linen
 o">   62</span>&#160;        ::WSASend(fd, &amp;buf, 1, &amp;bytes, 0, overlapped, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;      <a class="code" href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">return ::internal::windows::process_async_io_result</a>(result == 0, bytes);</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    }</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  }</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;}</div><
 div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">   72</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> <a class="code" href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">write</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, <span class="keyword">const</span> <span class="keywordtype">void</span>* data, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>)</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;{</div><d
 iv class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;  CHECK_LE(size, INT_MAX);</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;  <span class="keywordflow">switch</span> (fd.type()) {</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;      <span class="comment">// Handle non-overlapped case. We just use the regular `WriteFile` since</span></div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;      <span class="comment">// seekable overlapped files require an offset, which we don&#39;t track.</span></div><div class=
 "line"><a name="l00080"></a><span class="lineno">   80</span>&#160;      <span class="keywordflow">if</span> (!fd.is_overlapped()) {</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        DWORD bytes;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;        <span class="keyword">const</span> BOOL result =</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;          ::WriteFile(fd, data, static_cast&lt;DWORD&gt;(size), &amp;bytes, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;          <span class="comment">// Indicates an error, but we can&#39;t return a `WindowsError`.</span></div
 ><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;          <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;        }</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a><span class="keyword">&gt;</span>(bytes);</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;      }</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;      <span class="comment">// Asynchronous handle, we can use the `write_async` function</sp
 an></div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;      <span class="comment">// and then wait on the overlapped object for a synchronous write.</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;      <a class="code" href="classTry.html">Try&lt;OVERLAPPED&gt;</a> overlapped_ =</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;        <a class="code" href="namespaceinternal_1_1windows.html#a388bd9a30ab487f5d035e542187e379a">::internal::windows::init_overlapped_for_sync_io</a>();</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;      <span class="keywordflow">if</span> (overlapped_.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        <sp
 an class="keywordflow">return</span> -1;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;      }</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;      OVERLAPPED overlapped = overlapped_.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;      <a class="code" href="classResult.html">Result&lt;size_t&gt;</a> result = <a class="code" href="namespaceos.html#a1af52685ba3e8fe8676af86cd16a1eb8">write_async</a>(fd, data, size, &amp;overlapped);</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;      <span class="keywordflow">if</span> (result.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a
 3d">isError</a>()) {</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;      }</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;      <span class="keywordflow">if</span> (result.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;        <span class="keywordflow">return</span> result.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>();</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;      }</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><
 span class="lineno">  113</span>&#160;      <span class="comment">// IO is pending, so wait for the overlapped object.</span></div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;      DWORD bytes;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;      <span class="keyword">const</span> BOOL wait_success =</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        ::GetOverlappedResult(fd, &amp;overlapped, &amp;bytes, TRUE);</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;      <span class="keywordflow">if</span> (wait_success == FALSE) {</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      }</div><div c
 lass="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a><span class="keyword">&gt;</span>(bytes);</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    }</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;      <a class="code" href="namespacenet.html#aa0a46766b4aca53ea50e1921567ddb40">return ::send</a>(fd, (<span class="keyword">const</span> <span c
 lass="keywordtype">char</span>*)data, static_cast&lt;int&gt;(size), 0);</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    }</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  }</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;}</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div cla
 ss="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_WINDOWS_WRITE_HPP__</span></div><div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a894c4d58faeee7675b9e7e8244de1386"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a></div><div class="ttdeci">SSIZE_T ssize_t</div><div class="ttdef"><b>Definition:</b> windows.hpp:186</div></div>
 <div class="ttc" id="namespaceos_1_1stat_html_a7a116891923bc8b5d8c50f78da8657be"><div class="ttname"><a href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat::size</a></div><div class="ttdeci">Try&lt; Bytes &gt; size(const std::string &amp;path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:119</div></div>
-<div class="ttc" id="namespaceos_html_a73da9d49515dfff761c4887c3d6032c0"><div class="ttname"><a href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">os::write</a></div><div class="ttdeci">ssize_t write(const int_fd &amp;fd, const void *data, size_t size)</div><div class="ttdef"><b>Definition:</b> write.hpp:26</div></div>
+<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T &amp; get()&amp;</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
+<div class="ttc" id="namespaceos_html_a73da9d49515dfff761c4887c3d6032c0"><div class="ttname"><a href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">os::write</a></div><div class="ttdeci">ssize_t write(const int_fd &amp;fd, const void *data, size_t size)</div><div class="ttdef"><b>Definition:</b> write.hpp:72</div></div>
+<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
+<div class="ttc" id="overlapped_8hpp_html"><div class="ttname"><a href="overlapped_8hpp.html">overlapped.hpp</a></div></div>
+<div class="ttc" id="namespaceinternal_1_1windows_html_a388bd9a30ab487f5d035e542187e379a"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a388bd9a30ab487f5d035e542187e379a">internal::windows::init_overlapped_for_sync_io</a></div><div class="ttdeci">Try&lt; OVERLAPPED &gt; init_overlapped_for_sync_io()</div><div class="ttdef"><b>Definition:</b> overlapped.hpp:30</div></div>
+<div class="ttc" id="namespaceinternal_1_1windows_html_a4ed4d1bae6b01fb85f8e6fad0b10599d"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">internal::windows::process_async_io_result</a></div><div class="ttdeci">Result&lt; size_t &gt; process_async_io_result(bool successful_return_code, size_t bytes_transfered)</div><div class="ttdef"><b>Definition:</b> overlapped.hpp:71</div></div>
 <div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
 <div class="ttc" id="stout_2include_2stout_2os_2socket_8hpp_html"><div class="ttname"><a href="stout_2include_2stout_2os_2socket_8hpp.html">socket.hpp</a></div></div>
 <div class="ttc" id="classos_1_1WindowsFD_html_ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa"><div class="ttname"><a href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">os::WindowsFD::Type::SOCKET</a></div></div>
 <div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">windows.hpp</a></div></div>
+<div class="ttc" id="classResult_html"><div class="ttname"><a href="classResult.html">Result</a></div><div class="ttdef"><b>Definition:</b> check.hpp:30</div></div>
 <div class="ttc" id="namespacenet_html_aa0a46766b4aca53ea50e1921567ddb40"><div class="ttname"><a href="namespacenet.html#aa0a46766b4aca53ea50e1921567ddb40">net::send</a></div><div class="ttdeci">ssize_t send(const int_fd &amp;fd, const void *buf, size_t len, int flags)</div><div class="ttdef"><b>Definition:</b> socket.hpp:159</div></div>
+<div class="ttc" id="namespaceos_html_a1af52685ba3e8fe8676af86cd16a1eb8"><div class="ttname"><a href="namespaceos.html#a1af52685ba3e8fe8676af86cd16a1eb8">os::write_async</a></div><div class="ttdeci">Result&lt; size_t &gt; write_async(const int_fd &amp;fd, const void *data, size_t size, OVERLAPPED *overlapped)</div><div class="ttdef"><b>Definition:</b> write.hpp:31</div></div>
 <div class="ttc" id="nothing_8hpp_html"><div class="ttname"><a href="nothing_8hpp.html">nothing.hpp</a></div></div>
+<div class="ttc" id="classResult_html_aedf79f3b14dcda5791b84a64ada4d412"><div class="ttname"><a href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">Result::get</a></div><div class="ttdeci">const T &amp; get() const </div><div class="ttdef"><b>Definition:</b> result.hpp:115</div></div>
 <div class="ttc" id="unreachable_8hpp_html_a0bc63b24b654ca433be7b97a3edde132"><div class="ttname"><a href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a></div><div class="ttdeci">#define UNREACHABLE()</div><div class="ttdef"><b>Definition:</b> unreachable.hpp:22</div></div>
+<div class="ttc" id="classTry_html_a0b98f95163b8a38daafd1651b043a276"><div class="ttname"><a href="classTry.html#a0b98f95163b8a38daafd1651b043a276">Try::isError</a></div><div class="ttdeci">bool isError() const </div><div class="ttdef"><b>Definition:</b> try.hpp:71</div></div>
 <div class="ttc" id="try_8hpp_html"><div class="ttname"><a href="try_8hpp.html">try.hpp</a></div></div>
 <div class="ttc" id="int__fd_8hpp_html"><div class="ttname"><a href="int__fd_8hpp.html">int_fd.hpp</a></div></div>
 <div class="ttc" id="classos_1_1WindowsFD_html_ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f"><div class="ttname"><a href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">os::WindowsFD::Type::HANDLE</a></div></div>
+<div class="ttc" id="classResult_html_a85eaa52037223d71092e65701c166562"><div class="ttname"><a href="classResult.html#a85eaa52037223d71092e65701c166562">Result::isSome</a></div><div class="ttdeci">bool isSome() const </div><div class="ttdef"><b>Definition:</b> result.hpp:111</div></div>
+<div class="ttc" id="classResult_html_aeca16ad17d299ad885c9b46c83b12a3d"><div class="ttname"><a href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">Result::isError</a></div><div class="ttdeci">bool isError() const </div><div class="ttdef"><b>Definition:</b> result.hpp:113</div></div>
 <div class="ttc" id="int__fd_8hpp_html_aea4dbda01c90455f158ffa9b924c2f07"><div class="ttname"><a href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a></div><div class="ttdeci">int int_fd</div><div class="ttdef"><b>Definition:</b> int_fd.hpp:35</div></div>
 <div class="ttc" id="unreachable_8hpp_html"><div class="ttname"><a href="unreachable_8hpp.html">unreachable.hpp</a></div></div>
 </div><!-- fragment --></div><!-- contents -->

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/write_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/write_8hpp_source.html b/content/api/latest/c++/write_8hpp_source.html
index a073e3c..4662d44 100644
--- a/content/api/latest/c++/write_8hpp_source.html
+++ b/content/api/latest/c++/write_8hpp_source.html
@@ -58,7 +58,7 @@
 <div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
 <div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a55fad1c3746e1b8a6a00c10998e91d91"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a55fad1c3746e1b8a6a00c10998e91d91">S_IRGRP</a></div><div class="ttdeci">const mode_t S_IRGRP</div><div class="ttdef"><b>Definition:</b> windows.hpp:313</div></div>
 <div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T &amp; get()&amp;</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
-<div class="ttc" id="namespaceos_html_a73da9d49515dfff761c4887c3d6032c0"><div class="ttname"><a href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">os::write</a></div><div class="ttdeci">ssize_t write(const int_fd &amp;fd, const void *data, size_t size)</div><div class="ttdef"><b>Definition:</b> write.hpp:26</div></div>
+<div class="ttc" id="namespaceos_html_a73da9d49515dfff761c4887c3d6032c0"><div class="ttname"><a href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">os::write</a></div><div class="ttdeci">ssize_t write(const int_fd &amp;fd, const void *data, size_t size)</div><div class="ttdef"><b>Definition:</b> write.hpp:72</div></div>
 <div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
 <div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_aead39710af2622ee9b0d412f62e90aa5"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#aead39710af2622ee9b0d412f62e90aa5">S_IWUSR</a></div><div class="ttdeci">const mode_t S_IWUSR</div><div class="ttdef"><b>Definition:</b> windows.hpp:306</div></div>
 <div class="ttc" id="namespaceos_html_aaf5d5468adc1b85cf9bb7126e70807ca"><div class="ttname"><a href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca">os::open</a></div><div class="ttdeci">Try&lt; int_fd &gt; open(const std::string &amp;path, int oflag, mode_t mode=0)</div><div class="ttdef"><b>Definition:</b> open.hpp:35</div></div>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/sitemap.xml
----------------------------------------------------------------------
diff --git a/content/sitemap.xml b/content/sitemap.xml
index 9a3184d..e16e3a3 100644
--- a/content/sitemap.xml
+++ b/content/sitemap.xml
@@ -3749,6 +3749,10 @@
     <lastmod>2018-05-23T00:00:00+00:00</lastmod>
   </url>
   <url>
+    <loc>http://mesos.apache.org/api/latest/c++/overlapped_8hpp.html</loc>
+    <lastmod>2018-05-23T00:00:00+00:00</lastmod>
+  </url>
+  <url>
     <loc>http://mesos.apache.org/api/latest/c++/classprocess_1_1MockFilter-members.html</loc>
     <lastmod>2018-05-23T00:00:00+00:00</lastmod>
   </url>
@@ -14001,6 +14005,10 @@
     <lastmod>2018-05-23T00:00:00+00:00</lastmod>
   </url>
   <url>
+    <loc>http://mesos.apache.org/api/latest/c++/overlapped_8hpp_source.html</loc>
+    <lastmod>2018-05-23T00:00:00+00:00</lastmod>
+  </url>
+  <url>
     <loc>http://mesos.apache.org/api/latest/c++/classJvm_1_1StaticVariable-members.html</loc>
     <lastmod>2018-05-23T00:00:00+00:00</lastmod>
   </url>


[05/13] mesos-site git commit: Updated the website built from mesos SHA: 21305ab.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/subprocess__posix_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/subprocess__posix_8hpp_source.html b/content/api/latest/c++/subprocess__posix_8hpp_source.html
index 71e6cdb..aef6d20 100644
--- a/content/api/latest/c++/subprocess__posix_8hpp_source.html
+++ b/content/api/latest/c++/subprocess__posix_8hpp_source.html
@@ -52,10 +52,11 @@
 <div class="title">subprocess_posix.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="subprocess__posix_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//     http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comm
 ent">//</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><di
 v class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_POSIX_SUBPROCESS_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_POSIX_SUBPROCESS_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#ifdef __linux__</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;sys/prctl.h&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#endif // __linux__</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div><div class="line"><a name="l00020"></
 a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;glog/logging.h&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2check_8hpp.html">stout/check.hpp</a>&gt;
 </span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="exit_8hpp.html">stout/exit.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="hashset_8hpp.html">stout/hashset.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div clas
 s="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="none_8hpp.html">stout/none.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="os_8hpp.html">stout/os.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00038"></a><span clas
 s="lineno">   38</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="close_8hpp.html">stout/os/close.hpp</a>&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2os_2environment_8hpp.html">stout/os/environment.hpp</a>&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="fcntl_8hpp.html">stout/os/fcntl.hpp</a>&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#include &lt;<a
  class="code" href="signals_8hpp.html">stout/os/signals.hpp</a>&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="strerror_8hpp.html">stout/os/strerror.hpp</a>&gt;</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> close(std::initializer_list&lt;
 int_fd&gt; fds);</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> close(</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <span class="keyword">const</span> <a class="code" href="namespaceprocess.html#afc6611c4913642642277b44447a16e55">Subprocess::IO::InputFileDescriptors</a>&amp; stdinfds,</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="keyword">const</span> <a class="code" href="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af">Subprocess::IO::OutputFileDescriptors</a>&amp; stdoutfds,</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <span class="keyword">const</span> <a class="
 code" href="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af">Subprocess::IO::OutputFileDescriptors</a>&amp; stderrfds);</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1internal.html#af2f19b6f367cddc0c8283560a9cd9215">   58</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> <a class="code" href="namespaceprocess_1_1internal.html#af2f19b6f367cddc0c8283560a9cd9215">defaultClone</a>(<span class="keyword">const</span> lambda::function&lt;<span class="keywordtype">int</span>()&gt;&amp; func)</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;{</div><div class="line"><a name="l00060"></a><span class="lineno">  
  60</span>&#160;  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid = ::fork();</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="keywordflow">if</span> (pid == -1) {</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pid == 0) {</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <span class="comment">// Child.</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    ::exit(func());</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABL
 E</a>();</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="comment">// Parent.</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    <span class="keywordflow">return</span> pid;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;  }</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;}</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="comment">// This function will invoke `os::cloexec` on all specified file</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<s
 pan class="comment">// descriptors that are valid (i.e., not `None` and &gt;= 0).</span></div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1internal.html#a345a534b82b79bf20333fb6faef43e93">   76</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess_1_1internal.html#a345a534b82b79bf20333fb6faef43e93">cloexec</a>(</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">InputFileDescriptors</a>&amp; stdinfds,</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>&amp; stdoutfds,</div><div class="line"><a name=
 "l00079"></a><span class="lineno">   79</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>&amp; stderrfds)</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;{</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  <a class="code" href="classhashset.html">hashset&lt;int&gt;</a> fds = {</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a>,</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#ab812da47364d793d9ec0471d3dc8c1bc">write</a>.<a class="code" href="classOption.html#abbbed1bc42634fa9092160b16be6ca7e">getOrElse
 </a>(-1),</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#abbbed1bc42634fa9092160b16be6ca7e">getOrElse</a>(-1),</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>,</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#abbbed1bc42634fa9092160b16be6ca7e">getOrElse</a>(-1),</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    stderrfds.<a class="code" href=
 "structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a></div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  };</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  <span class="keywordflow">foreach</span> (<span class="keywordtype">int</span> fd, fds) {</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <span class="keywordflow">if</span> (fd &gt;= 0) {</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;      <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess_1_1internal.html#a345a534b82b79bf20333fb6faef43e93">cloexec</a> = <a class="code" href="namespaceos.html#a7d71bda07a41304403b0e13aa47f0764">os::cloexec</a>(fd);</div><div class="line"><a name="l00093"></a><span cla
 ss="lineno">   93</span>&#160;      <span class="keywordflow">if</span> (cloexec.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(cloexec.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;      }</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    }</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  }</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"
 ><a name="l00100"></a><span class="lineno">  100</span>&#160;}</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;<span class="comment">// The main entry of the child process.</span></div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;<span class="comment">// NOTE: This function has to be async signal safe.</span></div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009cafe0aad">  106</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009caf
 e0aad">childMain</a>(</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="keywordtype">char</span>** argv,</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="keywordtype">char</span>** envp,</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">InputFileDescriptors</a>&amp; stdinfds,</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>&amp; stdoutfds,</div><div class="li
 ne"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>&amp; stderrfds,</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="keywordtype">bool</span> blocking,</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="keywordtype">int</span> pipes[2],</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="keyword">const</span> std::vector&lt;Subprocess::ChildHook&gt;&amp; child_hooks)</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;{</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;  <span class="comment">// Close parent&#39;s end of the pipes.</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span
 >&#160;  <span class="keywordflow">if</span> (stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#ab812da47364d793d9ec0471d3dc8c1bc">write</a>.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    ::close(stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#ab812da47364d793d9ec0471d3dc8c1bc">write</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  }</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  <span class="keywordflow">if</span> (stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#a4e3bf8416d952
 46f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    ::close(stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  }</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  <span class="keywordflow">if</span> (stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    ::close(stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c
 631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;  }</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;  <span class="comment">// Currently we will block the child&#39;s execution of the new process</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  <span class="comment">// until all the parent hooks (if any) have executed.</span></div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  <span class="keywordflow">if</span> (blocking) {</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    ::close(pipes[1]);</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  }</div><div class="line"><
 a name="l00133"></a><span class="lineno">  133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  <span class="comment">// Redirect I/O for stdin/stdout/stderr.</span></div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;  <span class="keywordflow">while</span> (::<a class="code" href="namespaceos.html#a54f3320a4d6f88c14f80f5247aa879b9">dup2</a>(stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a>, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a>) == -1 &amp;&amp; errno == EINTR);</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  <span class="keywordflow">while</span> (::<a class="code" href="namespaceos.html#a54f3320a4d6f88c14f80f5247aa879b9">dup2</a>(stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1
 IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a>) == -1 &amp;&amp; errno == EINTR);</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  <span class="keywordflow">while</span> (::<a class="code" href="namespaceos.html#a54f3320a4d6f88c14f80f5247aa879b9">dup2</a>(stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a>) == -1 &amp;&amp; errno == EINTR);</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  <span class="comment">// Close the copies. We need to make sure that we do 
 not close the</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  <span class="comment">// file descriptor assigned to stdin/stdout/stderr in case the</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  <span class="comment">// parent has closed stdin/stdout/stderr when calling this</span></div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  <span class="comment">// function (in that case, a dup&#39;ed file descriptor may have the</span></div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="comment">// same file descriptor number as stdin/stdout/stderr).</span></div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;  <span class="comment">// We also need to ensure that we don&#39;t &quot
 ;double close&quot; any file</span></div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;  <span class="comment">// descriptors in the case where one of stdinfds.read,</span></div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;  <span class="comment">// stdoutfds.write, or stdoutfds.write are equal.</span></div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;  <span class="keywordflow">if</span> (stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a> &amp;&amp;</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;      stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a> !=
  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a> &amp;&amp;</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;      stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a>) {</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    ::close(stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a>);</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;  }</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;  <span class="keywordflow">if</span> (stdoutfds.<a class="code" href="structprocess_1_1Subproc
 ess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a> &amp;&amp;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;      stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a> &amp;&amp;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;      stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a> &amp;&amp;</div><div class="line"><a name="l
 00156"></a><span class="lineno">  156</span>&#160;      stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a>) {</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    ::close(stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>);</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;  }</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;  <span class="keywordflow">if</span> (stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8h
 pp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a> &amp;&amp;</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;      stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a> &amp;&amp;</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;      stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a> &amp;&amp;</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;      stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a
 5dabb8e3008efd61ce42478f260b54ac">write</a> != stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a> &amp;&amp;</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;      stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>) {</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    ::close(stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>);</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;  }</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;</div><div class
 ="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;  <span class="keywordflow">if</span> (blocking) {</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    <span class="comment">// Do a blocking read on the pipe until the parent signals us to</span></div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    <span class="comment">// continue.</span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    <span class="keywordtype">char</span> dummy;</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> length;</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    <span class="keywordflow">while</span> ((length = ::<a class="code" href="namespacemesos_1_1internal_1_1credentials.html#a137c93d60149
 616181a10e9f39986f7f">read</a>(pipes[0], &amp;dummy, <span class="keyword">sizeof</span>(dummy))) == -1 &amp;&amp;</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;          errno == EINTR);</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <span class="keywordflow">if</span> (length != <span class="keyword">sizeof</span>(dummy)) {</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;      <a class="code" href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a>(<span class="stringliteral">&quot;Failed to synchronize with parent&quot;</span>);</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    }</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#1
 60;    <span class="comment">// Now close the pipe as we don&#39;t need it anymore.</span></div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    ::close(pipes[0]);</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;  }</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;  <span class="comment">// Run the child hooks.</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1ChildHook.html">Subprocess::ChildHook</a>&amp; hook, child_hooks) {</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> callback = hook();</div><div class="line"><a name="l00186"></a
 ><span class="lineno">  186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    <span class="comment">// If the callback failed, we should abort execution.</span></div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    <span class="keywordflow">if</span> (callback.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;      <a class="code" href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a>(<span class="stringliteral">&quot;Failed to execute Subprocess::ChildHook: &quot;</span> + callback.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    }</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  }</div><div class="line"><a name="
 l00192"></a><span class="lineno">  192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;  <a class="code" href="namespaceos.html#aebc3586b2be0d2b9093ccfbf25dfcde8">os::execvpe</a>(path.c_str(), argv, envp);</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  <a class="code" href="exit_8hpp.html#a637cd32ee4af0a5a1d1aea8a0d7f7564">SAFE_EXIT</a>(</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;      errno, <span class="stringliteral">&quot;Failed to os::execvpe on path &#39;%s&#39;: %d&quot;</span>, path.c_str(), errno);</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;}</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;</div><div class="line
 "><a name="l00200"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1internal.html#afe2c3a3ffdd0ee6fda82e198ece80a37">  200</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;pid_t&gt;</a> <a class="code" href="namespaceprocess_1_1internal.html#afe2c3a3ffdd0ee6fda82e198ece80a37">cloneChild</a>(</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    std::vector&lt;std::string&gt; argv,</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">
 environment</a>,</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;lambda::function&lt;</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;        <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>(<span class="keyword">const</span> lambda::function&lt;<span class="keywordtype">int</span>()&gt;&amp;)&gt;&gt;&amp; _clone,</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    <span class="keyword">const</span> std::vector&lt;Subprocess::ParentHook&gt;&amp; parent_hooks,</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;    <span class="keyword">const</span> std::vector&lt;Subprocess::ChildHook&gt;&amp; child_hooks,</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;  
   <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">InputFileDescriptors</a> stdinfds,</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a> stdoutfds,</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a> stderrfds)</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;{</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;  <span class="comment">// The real arguments that will be passed to &#39;os::execvpe&#39;. We need</span></div><div class="line"><a name="l00213"></a><span class="lineno">  213</
 span>&#160;  <span class="comment">// to construct them here before doing the clone as it might not be</span></div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;  <span class="comment">// async signal safe to perform the memory allocation.</span></div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;  <span class="keywordtype">char</span>** _argv = <span class="keyword">new</span> <span class="keywordtype">char</span>*[argv.size() + 1];</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; argv.size(); i++) {</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    _argv[i] = (<span class="keywordtype">char</span>*) argv[i].c_str();</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;  }</div><div class="line"><a name="l00219"></a><span class
 ="lineno">  219</span>&#160;  _argv[argv.size()] = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;  <span class="comment">// Like above, we need to construct the environment that we&#39;ll pass</span></div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;  <span class="comment">// to &#39;os::execvpe&#39; as it might not be async-safe to perform the</span></div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;  <span class="comment">// memory allocations.</span></div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;  <span class="keywordtype">char</span>** envp = <a class="code" href="namespaceos_1_1raw.html#aad2bd3acb3ca09c75a1a1db58075f9f4">os::raw::environment</a>();</div><div class="line"><a name="l00225"></a><span class="lineno">  225</s
 pan>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>.isSome()) {</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    <span class="comment">// NOTE: We add 1 to the size for a `nullptr` terminator.</span></div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    envp = <span class="keyword">new</span> <span class="keywordtype">char</span>*[<a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>-&gt;size() + 1];</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    <span class="keywordtype">size_t</span> <a class="code" href="namespacerouting_1_1link.html#a264
 86cdba01ef1c80706b1e07e8a6d3f">index</a> = 0;</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    <a class="code" href="foreach_8hpp.html#a66900b166526abe66464d6597536b111">foreachpair</a> (</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;        <span class="keyword">const</span> std::string&amp; key,</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;        <span class="keyword">const</span> std::string&amp; value, <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>.get()) {</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;      std::string entry = key + <span class="stringliteral">&quot;=&quot;</span> + value;</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;      envp[<a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d
 3f">index</a>] = <span class="keyword">new</span> <span class="keywordtype">char</span>[entry.size() + 1];</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;      strncpy(envp[index], entry.c_str(), entry.size() + 1);</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;      ++<a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a>;</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;    }</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;    envp[<a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a>] = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;  }</div><div class="line"><a name="l00242"></a><span class="lineno">  
 242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;  <span class="comment">// Determine the function to clone the child process. If the user</span></div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;  <span class="comment">// does not specify the clone function, we will use the default.</span></div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;  lambda::function&lt;pid_t(const lambda::function&lt;int()&gt;&amp;)&gt; <a class="code" href="namespacens.html#a98bf4d9e11d546326250997a6493f835">clone</a> =</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    (_clone.isSome() ? _clone.get() : <a class="code" href="namespaceprocess_1_1internal.html#af2f19b6f367cddc0c8283560a9cd9215">defaultClone</a>);</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno
 ">  248</span>&#160;  <span class="comment">// Currently we will block the child&#39;s execution of the new process</span></div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  <span class="comment">// until all the `parent_hooks` (if any) have executed.</span></div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;  std::array&lt;int, 2&gt; pipes;</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">bool</span> blocking = !parent_hooks.empty();</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;  <span class="keywordflow">if</span> (blocking) {</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    <span class="comment">// We assume this should not fail under reasonable conditions so we<
 /span></div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    <span class="comment">// use CHECK.</span></div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    <a class="code" href="classTry.html">Try&lt;std::array&lt;int, 2&gt;</a>&gt; <a class="code" href="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51">pipe</a> = <a class="code" href="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51">os::pipe</a>();</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    <a class="code" href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(pipe);</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;    pipes = pipe.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00260"></a><span 
 class="lineno">  260</span>&#160;  }</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;  <span class="comment">// Now, clone the child process.</span></div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid = <a class="code" href="namespacens.html#a98bf4d9e11d546326250997a6493f835">clone</a>(<a class="code" href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">lambda::bind</a>(</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;      &amp;<a class="code" href="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009cafe0aad">childMain</a>,</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;      path,</div><div class="line"><a name="l
 00266"></a><span class="lineno">  266</span>&#160;      _argv,</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;      envp,</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;      stdinfds,</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;      stdoutfds,</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;      stderrfds,</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;      blocking,</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;      pipes.data(),</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;      child_hooks));</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;  <span class="keyword">delete</span>[] _argv;</div><div class="lin
 e"><a name="l00276"></a><span class="lineno">  276</span>&#160;</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;  <span class="comment">// Need to delete &#39;envp&#39; if we had environment variables passed to</span></div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;  <span class="comment">// us and we needed to allocate the space.</span></div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>.isSome()) {</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    CHECK_NE(<a class="code" href="namespaceos_1_1raw.html#aad2bd3acb3ca09c75a1a1db58075f9f4">os::raw::environment</a>(), envp);</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;</div><div class="line"><a name="l00282"></a
 ><span class="lineno">  282</span>&#160;    <span class="comment">// We ignore the last &#39;envp&#39; entry since it is nullptr.</span></div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> <a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a> = 0; <a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a> &lt; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>-&gt;size(); <a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a>++) {</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;      <span class="keyword">delete</span>[] envp[<a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a>];</div><div class="line"><a name="
 l00285"></a><span class="lineno">  285</span>&#160;    }</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    <span class="keyword">delete</span>[] envp;</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;  }</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;  <span class="keywordflow">if</span> (pid == -1) {</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;    <span class="comment">// Save the errno as &#39;close&#39; below might overwrite it.</span></div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;    <a class="code" href="classErrnoError.html">ErrnoError</a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1
 bd5d9870441236727">error</a>(<span class="stringliteral">&quot;Failed to clone&quot;</span>);</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;    internal::close(stdinfds, stdoutfds, stderrfds);</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;    <span class="keywordflow">if</span> (blocking) {</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;      <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(pipes[0]);</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;      <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(pipes[1]);</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;    }</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160
 ;</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;  }</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;  <span class="comment">// Close the child-ends of the file descriptors that are created by</span></div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;  <span class="comment">// this function.</span></div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;  internal::close({stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a>, stdoutfds.<a class
 ="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>, stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>});</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;  <span class="keywordflow">if</span> (blocking) {</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(pipes[0]);</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    <span class="comment">// Run the parent hooks.</span></div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    <span class="
 keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1ParentHook.html">Subprocess::ParentHook</a>&amp; hook, parent_hooks) {</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;      <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> parentSetup = hook.<a class="code" href="structprocess_1_1Subprocess_1_1ParentHook.html#aaf9ff141314d619cd65cd8ec9320fb7d">parent_setup</a>(pid);</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;      <span class="comment">// If the hook callback fails, we shouldn&#39;t proceed with the</span></div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;      <span class="comment">// execution and hence the child process should be killed.</span></div><div class="line"><a name="l00316"></a><span class="lineno">  316
 </span>&#160;      <span class="keywordflow">if</span> (parentSetup.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;        LOG(WARNING)</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;          &lt;&lt; <span class="stringliteral">&quot;Failed to execute Subprocess::ParentHook in parent for child &#39;&quot;</span></div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;          &lt;&lt; pid &lt;&lt; <span class="stringliteral">&quot;&#39;: &quot;</span> &lt;&lt; parentSetup.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>();</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;        <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfd
 c">os::close</a>(pipes[1]);</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;        <span class="comment">// Ensure the child is killed.</span></div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;        <a class="code" href="namespacecgroups.html#ab75e1e2d1be63eec907bf12306a7c8a7">::kill</a>(pid, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a1c2b5693161bbc9d516ef5d16c7b54f5">SIGKILL</a>);</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;            <span class="stringliteral">&quot;Failed to execute Subprocess::Pa
 rentHook in parent for child &#39;&quot;</span> +</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;            <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(pid) + <span class="stringliteral">&quot;&#39;: &quot;</span> + parentSetup.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;      }</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;    }</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    <span class="comment">// Now that we&#39;ve executed the parent hooks, we can signal the child to</span></div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;    <span class="comment">// continue by writing to the pipe.</s
 pan></div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;    <span class="keywordtype">char</span> dummy;</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> length;</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;    <span class="keywordflow">while</span> ((length = ::<a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a66ff2d5af4db53227f787281c0765d8d">write</a>(pipes[1], &amp;dummy, <span class="keyword">sizeof</span>(dummy))) == -1 &amp;&amp;</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;           errno == EINTR);</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;    <a class="code" href="
 namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(pipes[1]);</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;    <span class="keywordflow">if</span> (length != <span class="keyword">sizeof</span>(dummy)) {</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;      <span class="comment">// Ensure the child is killed.</span></div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;      <a class="code" href="namespacecgroups.html#ab75e1e2d1be63eec907bf12306a7c8a7">::kill</a>(pid, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a1c2b5693161bbc9d516ef5d16c7b54f5">SIGKILL</a>);</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;      <span class="keywordflow">re
 turn</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">&quot;Failed to synchronize child process&quot;</span>);</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;    }</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;  }</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;  <span class="keywordflow">return</span> pid;</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;}</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;}  <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;}  <span class="comment">// namespace process {</span></div><div class
 ="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;<span class="preprocessor">#endif // __PROCESS_POSIX_SUBPROCESS_HPP__</span></div><div class="ttc" id="namespaceos_html_a54f3320a4d6f88c14f80f5247aa879b9"><div class="ttname"><a href="namespaceos.html#a54f3320a4d6f88c14f80f5247aa879b9">os::dup2</a></div><div class="ttdeci">Try&lt; Nothing &gt; dup2(int oldFd, int newFd)</div><div class="ttdef"><b>Definition:</b> os.hpp:428</div></div>
+<a href="subprocess__posix_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//     http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comm
 ent">//</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><di
 v class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_POSIX_SUBPROCESS_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_POSIX_SUBPROCESS_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#ifdef __linux__</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;sys/prctl.h&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#endif // __linux__</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div><div class="line"><a name="l00020"></
 a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;glog/logging.h&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2check_8hpp.html">stout/check.hpp</a>&gt;
 </span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="exit_8hpp.html">stout/exit.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="hashset_8hpp.html">stout/hashset.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div clas
 s="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="none_8hpp.html">stout/none.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="os_8hpp.html">stout/os.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00038"></a><span clas
 s="lineno">   38</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="close_8hpp.html">stout/os/close.hpp</a>&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2os_2environment_8hpp.html">stout/os/environment.hpp</a>&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="fcntl_8hpp.html">stout/os/fcntl.hpp</a>&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#include &lt;<a
  class="code" href="signals_8hpp.html">stout/os/signals.hpp</a>&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="strerror_8hpp.html">stout/os/strerror.hpp</a>&gt;</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> close(std::initializer_list&lt;
 int_fd&gt; fds);</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> close(</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <span class="keyword">const</span> <a class="code" href="namespaceprocess.html#afc6611c4913642642277b44447a16e55">Subprocess::IO::InputFileDescriptors</a>&amp; stdinfds,</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="keyword">const</span> <a class="code" href="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af">Subprocess::IO::OutputFileDescriptors</a>&amp; stdoutfds,</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <span class="keyword">const</span> <a class="
 code" href="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af">Subprocess::IO::OutputFileDescriptors</a>&amp; stderrfds);</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1internal.html#af2f19b6f367cddc0c8283560a9cd9215">   58</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> <a class="code" href="namespaceprocess_1_1internal.html#af2f19b6f367cddc0c8283560a9cd9215">defaultClone</a>(<span class="keyword">const</span> lambda::function&lt;<span class="keywordtype">int</span>()&gt;&amp; func)</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;{</div><div class="line"><a name="l00060"></a><span class="lineno">  
  60</span>&#160;  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid = ::fork();</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="keywordflow">if</span> (pid == -1) {</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pid == 0) {</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <span class="comment">// Child.</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    ::exit(func());</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABL
 E</a>();</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="comment">// Parent.</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    <span class="keywordflow">return</span> pid;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;  }</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;}</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="comment">// This function will invoke `os::cloexec` on all specified file</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<s
 pan class="comment">// descriptors that are valid (i.e., not `None` and &gt;= 0).</span></div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1internal.html#a345a534b82b79bf20333fb6faef43e93">   76</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess_1_1internal.html#a345a534b82b79bf20333fb6faef43e93">cloexec</a>(</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">InputFileDescriptors</a>&amp; stdinfds,</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>&amp; stdoutfds,</div><div class="line"><a name=
 "l00079"></a><span class="lineno">   79</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>&amp; stderrfds)</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;{</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  <a class="code" href="classhashset.html">hashset&lt;int&gt;</a> fds = {</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a>,</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#ab812da47364d793d9ec0471d3dc8c1bc">write</a>.<a class="code" href="classOption.html#abbbed1bc42634fa9092160b16be6ca7e">getOrElse
 </a>(-1),</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#abbbed1bc42634fa9092160b16be6ca7e">getOrElse</a>(-1),</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>,</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#abbbed1bc42634fa9092160b16be6ca7e">getOrElse</a>(-1),</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    stderrfds.<a class="code" href=
 "structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a></div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  };</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  <span class="keywordflow">foreach</span> (<span class="keywordtype">int</span> fd, fds) {</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <span class="keywordflow">if</span> (fd &gt;= 0) {</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;      <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess_1_1internal.html#a345a534b82b79bf20333fb6faef43e93">cloexec</a> = <a class="code" href="namespaceos.html#a7d71bda07a41304403b0e13aa47f0764">os::cloexec</a>(fd);</div><div class="line"><a name="l00093"></a><span cla
 ss="lineno">   93</span>&#160;      <span class="keywordflow">if</span> (cloexec.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(cloexec.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;      }</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    }</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  }</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"
 ><a name="l00100"></a><span class="lineno">  100</span>&#160;}</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;<span class="comment">// The main entry of the child process.</span></div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;<span class="comment">// NOTE: This function has to be async signal safe.</span></div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009cafe0aad">  106</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009caf
 e0aad">childMain</a>(</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="keywordtype">char</span>** argv,</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="keywordtype">char</span>** envp,</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">InputFileDescriptors</a>&amp; stdinfds,</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>&amp; stdoutfds,</div><div class="li
 ne"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>&amp; stderrfds,</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="keywordtype">bool</span> blocking,</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="keywordtype">int</span> pipes[2],</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="keyword">const</span> std::vector&lt;Subprocess::ChildHook&gt;&amp; child_hooks)</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;{</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;  <span class="comment">// Close parent&#39;s end of the pipes.</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span
 >&#160;  <span class="keywordflow">if</span> (stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#ab812da47364d793d9ec0471d3dc8c1bc">write</a>.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    ::close(stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#ab812da47364d793d9ec0471d3dc8c1bc">write</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  }</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  <span class="keywordflow">if</span> (stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#a4e3bf8416d952
 46f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    ::close(stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  }</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  <span class="keywordflow">if</span> (stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    ::close(stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c
 631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;  }</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;  <span class="comment">// Currently we will block the child&#39;s execution of the new process</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  <span class="comment">// until all the parent hooks (if any) have executed.</span></div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  <span class="keywordflow">if</span> (blocking) {</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    ::close(pipes[1]);</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  }</div><div class="line"><
 a name="l00133"></a><span class="lineno">  133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  <span class="comment">// Redirect I/O for stdin/stdout/stderr.</span></div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;  <span class="keywordflow">while</span> (::<a class="code" href="namespaceos.html#a54f3320a4d6f88c14f80f5247aa879b9">dup2</a>(stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a>, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a>) == -1 &amp;&amp; errno == EINTR);</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  <span class="keywordflow">while</span> (::<a class="code" href="namespaceos.html#a54f3320a4d6f88c14f80f5247aa879b9">dup2</a>(stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1
 IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a>) == -1 &amp;&amp; errno == EINTR);</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  <span class="keywordflow">while</span> (::<a class="code" href="namespaceos.html#a54f3320a4d6f88c14f80f5247aa879b9">dup2</a>(stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a>) == -1 &amp;&amp; errno == EINTR);</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  <span class="comment">// Close the copies. We need to make sure that we do 
 not close the</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  <span class="comment">// file descriptor assigned to stdin/stdout/stderr in case the</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  <span class="comment">// parent has closed stdin/stdout/stderr when calling this</span></div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  <span class="comment">// function (in that case, a dup&#39;ed file descriptor may have the</span></div><div class="line"><a name="l00143"></a><span clas

<TRUNCATED>

[02/13] mesos-site git commit: Updated the website built from mesos SHA: 21305ab.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/windows_2shell_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2shell_8hpp_source.html b/content/api/latest/c++/windows_2shell_8hpp_source.html
index 989166a..a0f9559 100644
--- a/content/api/latest/c++/windows_2shell_8hpp_source.html
+++ b/content/api/latest/c++/windows_2shell_8hpp_source.html
@@ -52,8 +52,9 @@
 <div class="title">shell.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="windows_2shell_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">/
 /</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div cla
 ss="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_SHELL_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_SHELL_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;process.h&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;stdarg.h&gt;</span> <span class="comment">// For va_list, va_start, etc.</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00020"
 ></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>&gt;</span></d
 iv><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="none_8hpp.html">stout/none.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="os_8hpp.html">stout/os.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span></div><d
 iv class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="pipe_8hpp.html">stout/os/pipe.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="inherit_8hpp.html">stout/internal/windows/inherit.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="keyword">namespace </span><a class="code" href="n
 amespaceinternal.html">internal</a> {</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="keyword">namespace </span>windows {</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">// Retrieves system environment in a `std::map`, ignoring</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">// the current process&#39;s environment variables.</span></div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#a8fc9ccf78565ac55f90070486d385227">   43</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classOption.html">Option&lt;std::map&lt;std::wstring, std::wstring&gt;</a>&gt; <a class="code" href="namespaceinternal_1_1windows.html#a8fc9ccf78565ac55f90070486d385227">get
 _system_env</a>()</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;{</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;  std::map&lt;std::wstring, std::wstring&gt; system_env;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;  <span class="keywordtype">wchar_t</span>* env_entry = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;  <span class="comment">// Get the system environment.</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;  <span class="comment">// The third parameter (bool) tells the function *not* to inherit</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;  <span class="comment">// variables from the current process.</span></div><div class
 ="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;  <span class="keywordflow">if</span> (!::CreateEnvironmentBlock((LPVOID*)&amp;env_entry, <span class="keyword">nullptr</span>, FALSE)) {</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  }</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;  <span class="comment">// Save the environment block in order to destroy it later.</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;  <span class="keywordtype">wchar_t</span>* env_block = env_entry;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l0
 0058"></a><span class="lineno">   58</span>&#160;  <span class="keywordflow">while</span> (*env_entry != L<span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    <span class="comment">// Each environment block contains the environment variables as follows:</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    <span class="comment">// Var1=Value1\0</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    <span class="comment">// Var2=Value2\0</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    <span class="comment">// Var3=Value3\0</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    <span class="comment">// ...</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <span class="comment">// VarN=ValueN\0\0</sp
 an></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <span class="comment">// The name of an environment variable cannot include an equal sign (=).</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    <span class="comment">// Construct a string from the pointer up to the first &#39;\0&#39;,</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="comment">// e.g. &quot;Var1=Value1\0&quot;, then split into name and value.</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    std::wstring entry(env_entry);</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    std::wstring::size_type separator = entry.find(L<span class="stringliteral">&quot;=&quot;</span>);</div><div class="line"><a name="l00071"></a><spa
 n class="lineno">   71</span>&#160;    std::wstring var_name(entry.substr(0, separator));</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    std::wstring varVal(entry.substr(separator + 1));</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    <span class="comment">// Mesos variables are upper case. Convert system variables to</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    <span class="comment">// match the name provided by the scheduler in case of a collision.</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    <span class="comment">// This is safe because Windows environment variables are case insensitive.</span></div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <a class="code" href="namespacemesos_1_1inte
 rnal_1_1recordio.html#a5fcab68176c462aaeed909f304c91bdf">std::transform</a>(</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;        var_name.begin(), var_name.end(), var_name.begin(), ::towupper);</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <span class="comment">// The system environment has priority.</span></div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    system_env.insert_or_assign(var_name.data(), varVal.data());</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    <span class="comment">// Advance the pointer the length of the entry string plus the &#39;\0&#39;.</span></div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    env_entry +=
  entry.length() + 1;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  }</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  ::DestroyEnvironmentBlock(env_block);</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;  <span class="keywordflow">return</span> system_env;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;}</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="comment">// Creates a null-terminated array of null-terminated strings that will be</span></div><div class="line
 "><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="comment">// passed to `CreateProcessW` as the `lpEnvironment` argument, as described by</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="comment">// MSDN[1]. This array needs to be sorted in alphabetical order, but the `map`</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="comment">// already takes care of that. Note that this function explicitly handles</span></div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;<span class="comment">// UTF-16 environments, so it must be used in conjunction with the</span></div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;<span class="comment">// `CREATE_UNICODE_ENVIRONMENT` flag.</span></div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<span class="comment">//</span></div><
 div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="comment">// NOTE: This function will add the system&#39;s environment variables into</span></div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="comment">// the returned string. These variables take precedence over the provided</span></div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;<span class="comment">// `env` and are generally necessary in order to launch things on Windows.</span></div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="comment">// [1] https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx</span></div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#a7b6974
 b9ba88dd5d9658c40268147581">  105</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classOption.html">Option&lt;std::wstring&gt;</a> <a class="code" href="namespaceinternal_1_1windows.html#a7b6974b9ba88dd5d9658c40268147581">create_process_env</a>(</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; env)</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;{</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;  <span class="keywordflow">if</span> (env.isNone() || (env.isSome() &amp;&amp; env.get().size() == 0)) {</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00110"></
 a><span class="lineno">  110</span>&#160;  }</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  <a class="code" href="classOption.html">Option&lt;std::map&lt;std::wstring, std::wstring&gt;</a>&gt; system_env = <a class="code" href="namespaceinternal_1_1windows.html#a8fc9ccf78565ac55f90070486d385227">get_system_env</a>();</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;  <span class="comment">// The system environment must be non-empty.</span></div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;  <span class="comment">// No subprocesses will be able to launch if the system environment is blank.</span></div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  CHECK(system_env.<a class="code" hre
 f="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>() &amp;&amp; system_env.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>().size() &gt; 0);</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;  std::map&lt;std::wstring, std::wstring&gt; combined_env;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  <span class="comment">// Populate the combined environment first with the system environment.</span></div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  <a class="code" href="foreach_8hpp.html#a66900b166526abe66464d6597536b111">foreachpair</a> (<span class="keyword">const</span> std::wstring&amp; key,</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span
 >&#160;               <span class="keyword">const</span> std::wstring&amp; value,</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;               system_env.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>()) {</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    combined_env[key] = value;</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  }</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  <span class="comment">// Now override with the supplied environment.</span></div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;  <a class="code" href="foreach_8hpp.html#a66900b166526abe66464d6597536b111">foreachpair</a> (<span class="keyword">const</span> std::string&amp; key,</div><div class="line"><a name="l00129"
 ></a><span class="lineno">  129</span>&#160;               <span class="keyword">const</span> std::string&amp; value,</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;               env.get()) {</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    combined_env[wide_stringify(key)] = wide_stringify(value);</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  }</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  std::wstring env_string;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;  <a class="code" href="foreach_8hpp.html#a66900b166526abe66464d6597536b111">foreachpair</a> (<span class="keyword">const</span> std::wstring&amp; key,</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;               <span cl
 ass="keyword">const</span> std::wstring&amp; value,</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;               combined_env) {</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    env_string += key + L<span class="charliteral">&#39;=&#39;</span> + value + L<span class="charliteral">&#39;\0&#39;</span>;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  }</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  <span class="comment">// Append final null terminating character.</span></div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  env_string.push_back(L<span class="charliteral">&#39;\0&#39;</span>);</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="keywordflow">return</span> env_string;
 </div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;}</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;<span class="comment">// Concatenates multiple command-line arguments and escapes the values.</span></div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;<span class="comment">// NOTE: This is necessary even when using Windows APIs that &quot;appear&quot;</span></div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;<span class="comment">// to take arguments as a list, because those APIs will themselves</span></div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;<span class="comment">// concatenate command-line arguments *without* escaping them.</span></div><div cla
 ss="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;<span class="comment">// This function escapes arguments with the following rules:</span></div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;<span class="comment">//   1) Any argument with a space, tab, newline, vertical tab,</span></div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;<span class="comment">//      or double-quote must be surrounded in double-quotes.</span></div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;<span class="comment">//   2) Backslashes at the very end of an argument must be escaped.</span></div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;<span class="comment">//   3) Backslashes that precede a double-quote must be escaped.</span></div><div class="
 line"><a name="l00157"></a><span class="lineno">  157</span>&#160;<span class="comment">//      The double-quote must also be escaped.</span></div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;<span class="comment">// NOTE: The below algorithm is adapted from Daniel Colascione&#39;s public domain</span></div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;<span class="comment">// algorithm for quoting command line arguments on Windows for `CreateProcess`.</span></div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;<span class="comment">// https://blogs.msdn.microsoft.com/twistylittlepassagesallalike/2011/04/23/everyone-quotes-command-line-arguments-the-wrong-way/</sp
 an></div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="comment">// NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#a80d683d0925b1bfbff4bea3a5aa2e9b9">  164</a></span>&#160;<span class="keyword">inline</span> std::wstring <a class="code" href="namespaceinternal_1_1windows.html#a80d683d0925b1bfbff4bea3a5aa2e9b9">stringify_args</a>(<span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; argv)</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;{</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;  std::wstring command;</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;  <span class="keywordflow">for</span> (<span class="keyword">auto</span> argit = argv.cbegin(); argit != argv.cend(); ++argit) {</div><div class="line"><a na
 me="l00168"></a><span class="lineno">  168</span>&#160;    std::wstring arg = wide_stringify(*argit);</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    <span class="comment">// Don&#39;t quote empty arguments or those without troublesome characters.</span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    <span class="keywordflow">if</span> (!arg.empty() &amp;&amp; arg.find_first_of(L<span class="stringliteral">&quot; \t\n\v\&quot;&quot;</span>) == arg.npos) {</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;      command.append(arg);</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;      <span class="comment">// Beginning double quotation mark.</span></div><div class="line"><a name="l00174"></a><span class="lineno">
   174</span>&#160;      command.push_back(L<span class="charliteral">&#39;&quot;&#39;</span>);</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = arg.cbegin(); it != arg.cend(); ++it) {</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;        <span class="comment">// Count existent backslashes in argument.</span></div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;        <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> backslashes = 0;</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;        <span class="keywordflow">while</span> (it != arg.cend() &amp;&amp; *it == L<span class="charliteral">&#39;\\&#39;</span>) {</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;          ++it;</div><div class="line"><a name=
 "l00180"></a><span class="lineno">  180</span>&#160;          ++backslashes;</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;        }</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;        <span class="keywordflow">if</span> (it == arg.cend()) {</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;          <span class="comment">// Escape all backslashes, but let the terminating double quotation</span></div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;          <span class="comment">// mark we add below be interpreted as a metacharacter.</span></div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;          command.append(backslashes * 2, L<span class="charliteral">&#39;\\&#39;</span>);</div><div class="line"><a name="l00187"></a><span cla
 ss="lineno">  187</span>&#160;          <span class="keywordflow">break</span>;</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;        } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*it == L<span class="charliteral">&#39;&quot;&#39;</span>) {</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;          <span class="comment">// Escape all backslashes and the following double quotation mark.</span></div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;          command.append(backslashes * 2 + 1, L<span class="charliteral">&#39;\\&#39;</span>);</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;          command.push_back(*it);</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00193"></a><span class="lineno">  193<
 /span>&#160;          <span class="comment">// Backslashes aren&#39;t special here.</span></div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;          command.append(backslashes, L<span class="charliteral">&#39;\\&#39;</span>);</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;          command.push_back(*it);</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;        }</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;      }</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;      <span class="comment">// Terminating double quotation mark.</span></div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;      command.push_back(L<span class="charliteral">&#39;&quot;&#39;</span>);</div><div class="line"><a name="l00
 201"></a><span class="lineno">  201</span>&#160;    }</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    <span class="comment">// Space separate arguments (but don&#39;t append at end).</span></div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    <span class="keywordflow">if</span> (argit != argv.cend() - 1) {</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;      command.push_back(L<span class="charliteral">&#39; &#39;</span>);</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    }</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;  }</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;  <span class="comment">// Append final null terminating character.</span></div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;  command.push_back(L<span class="charlitera
 l">&#39;\0&#39;</span>);</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;  <span class="keywordflow">return</span> command;</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;}</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="structinternal_1_1windows_1_1ProcessData.html">  213</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structinternal_1_1windows_1_1ProcessData.html">ProcessData</a> {</div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="structinternal_1_1windows_1_1ProcessData.html#a96c76121644bd430e9ca67cf57636c0d">  214</a></span>&#160;  <a class="code" href="classSharedHandle.html">SharedHandle</a> <a class="code" href="structinternal_1_1windows_1_1
 ProcessData.html#a96c76121644bd430e9ca67cf57636c0d">process_handle</a>;</div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="structinternal_1_1windows_1_1ProcessData.html#a7160cf48fc6e70d9390233b246b93bee">  215</a></span>&#160;  <a class="code" href="classSharedHandle.html">SharedHandle</a> <a class="code" href="structinternal_1_1windows_1_1ProcessData.html#a7160cf48fc6e70d9390233b246b93bee">thread_handle</a>;</div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="structinternal_1_1windows_1_1ProcessData.html#a65a4a4aba5450087363bfffdb30eea25">  216</a></span>&#160;  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> <a class="code" href="structinternal_1_1windows_1_1ProcessData.html#a65a4a4aba5450087363bfffdb30eea25">pid</a>;</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;};</div><div class="line"><a name="l00218">
 </a><span class="lineno">  218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;<span class="comment">// Provides an interface for creating a child process on Windows.</span></div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;<span class="comment">// The `command` argument is given for compatibility, and is ignored. This is</span></div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;<span class="comment">// because the `CreateProcess` will use `argv[0]` as the command to be executed,</span></div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;<span class="comment">// and will perform a `PATH` lookup. If `command` were to be used instead,</span></div><
 div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;<span class="comment">// `CreateProcess` would require an absolute path.</span></div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;<span class="comment">// If `create_suspended` is `true`, the process will not be started, and the</span></div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;<span class="comment">// caller must use `ResumeThread` to start the process.</span></div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;<span class="comment">// The caller can specify explicit `stdin`, `stdout`, and `stderr` handles,</span></div><div class="line"><a name="l00231"></a><span class="lineno">
   231</span>&#160;<span class="comment">// in that order, for the process via the `pipes` argument.</span></div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;<span class="comment">// NOTE: If `pipes` are specified, they will be temporarily set to</span></div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;<span class="comment">// inheritable, and then set to uninheritable. This is a side effect</span></div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;<span class="comment">// on each `HANDLE`.</span></div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;<span class="comment">// The return value is a `ProcessData` struct, with the proces
 s and thread</span></div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;<span class="comment">// handles each saved in a `SharedHandle`, ensuring they are closed when struct</span></div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;<span class="comment">// goes out of scope.</span></div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#aaaa193083fd4f24a2e92e57ee8a8319f">  240</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;ProcessData&gt;</a> <a class="code" href="namespaceinternal_1_1windows.html#aaaa193083fd4f24a2e92e57ee8a8319f">create_process</a>(</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;    <span class="keyword">const</span> std::string&amp; command,</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;    <span class="keyword">const
 </span> std::vector&lt;std::string&gt;&amp; argv,</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>,</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">bool</span> create_suspended = <span class="keyword">false</span>,</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::array&lt;int_fd, 3&gt;&gt;&amp; pipes = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;{</div><div class="line"><a name="l0
 0247"></a><span class="lineno">  247</span>&#160;  <span class="comment">// TODO(andschwa): Assert that `command` and `argv[0]` are the same.</span></div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;  <span class="keyword">const</span> std::wstring arg_string = <a class="code" href="namespaceinternal_1_1windows.html#a80d683d0925b1bfbff4bea3a5aa2e9b9">stringify_args</a>(argv);</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  std::vector&lt;wchar_t&gt; arg_buffer(arg_string.begin(), arg_string.end());</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;  arg_buffer.push_back(L<span class="charliteral">&#39;\0&#39;</span>);</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;  <span class="comment">// Create the process with a Unicode environment.</span></div><div class="lin
 e"><a name="l00253"></a><span class="lineno">  253</span>&#160;  DWORD creation_flags = CREATE_UNICODE_ENVIRONMENT;</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;  <span class="keywordflow">if</span> (create_suspended) {</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    creation_flags |= CREATE_SUSPENDED;</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;  }</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;  <span class="comment">// Construct the environment that will be passed to `::CreateProcessW`.</span></div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;  <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::wstring&gt;</a> env_string = <a class="code" href="namespaceinternal_1_1windows.html
 #a7b6974b9ba88dd5d9658c40268147581">create_process_env</a>(<a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>);</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;  std::vector&lt;wchar_t&gt; env_buffer;</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;  <span class="keywordflow">if</span> (env_string.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    <span class="comment">// This string contains the necessary null characters.</span></div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    env_buffer.assign(env_string.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>().begin(), env_string.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>().
 end());</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;  }</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;  <span class="keywordtype">wchar_t</span>* process_env = env_buffer.empty() ? <span class="keyword">nullptr</span> : env_buffer.data();</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;  PROCESS_INFORMATION process_info = {};</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;  STARTUPINFOW startup_info = {};</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;  startup_info.cb = <span class="keyword">sizeof</span>(STARTUPINFOW);</div><div class="line"><a name="l00
 272"></a><span class="lineno">  272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;  <span class="comment">// Hook up the stdin/out/err pipes and use the `STARTF_USESTDHANDLES`</span></div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;  <span class="comment">// flag to instruct the child to use them [1].</span></div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;  <span class="comment">// A more user-friendly example can be found in [2].</span></div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;  <span class="comment">// [1] https://msdn.microsoft.com/en-us/library/windows/desktop/ms686331(v=vs.85).aspx</span></div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;  <span class="comment">// [2] http
 s://msdn.microsoft.com/en-us/library/windows/desktop/ms682499(v=vs.85).aspx</span></div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;  <span class="keywordflow">if</span> (pipes.isSome()) {</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    <span class="comment">// Each of these handles must be inheritable.</span></div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;    <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, pipes.get()) {</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;      <span class="keyword">const</span> <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> inherit = <a class="code" href="namespaceinternal_1_1windows.html#a9dc48dc50b21cb8cee5237630460c4bd">set_inherit</a>(fd, <span class="keyword">true</span>
 );</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;      <span class="keywordflow">if</span> (inherit.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(inherit.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;      }</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;    }</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;    startup_info.dwFlags |= STARTF_USESTDHANDLES;</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;    startup_info.hS
 tdInput = std::get&lt;0&gt;(pipes.get());</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;    startup_info.hStdOutput = std::get&lt;1&gt;(pipes.get());</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;    startup_info.hStdError = std::get&lt;2&gt;(pipes.get());</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;  }</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;  <span class="keyword">const</span> BOOL result = ::CreateProcessW(</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;      <span class="comment">// This is replaced by the first token of `arg_buffer` string.</span></div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;      static_cast&lt;LPCWSTR&gt;(<span class="keyword">nullptr</span>),</div><d
 iv class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;      static_cast&lt;LPWSTR&gt;(arg_buffer.data()),</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;      static_cast&lt;LPSECURITY_ATTRIBUTES&gt;(<span class="keyword">nullptr</span>),</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;      <span class="keyword">static_cast&lt;</span>LPSECURITY_ATTRIBUTES<span class="keyword">&gt;</span>(<span class="keyword">nullptr</span>),</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;      TRUE, <span class="comment">// Inherit parent process handles (such as those in `pipes`).</span></div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;      creation_flags,</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;      static_cast&lt;LPVOID&gt;(process_env),</div><div class="line"><a name="l00303"></a><span cla
 ss="lineno">  303</span>&#160;      <span class="keyword">static_cast&lt;</span>LPCWSTR<span class="keyword">&gt;</span>(<span class="keyword">nullptr</span>), <span class="comment">// Inherit working directory.</span></div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;      &amp;startup_info,</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;      &amp;process_info);</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;  <span class="comment">// NOTE: The MSDN documentation for `CreateProcess` states that it</span></div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;  <span class="comment">// returns before the process has &quot;finished initialization,&quot; but is</span></div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;  <span class="commen
 t">// not clear on precisely what initialization entails. It would seem</span></div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;  <span class="comment">// that this does not affect inherited handles, as it stands to</span></div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;  <span class="comment">// reason that the system call to `CreateProcess` causes inheritable</span></div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;  <span class="comment">// handles to become inherited, and not some &quot;initialization&quot; of the</span></div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;  <span class="comment">// child process. However, if an inheritance race condition</span></div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;  <span class="comment">// manifests, this assumption should be re-evaluated.</span></div><div class="line"
 ><a name="l00315"></a><span class="lineno">  315</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;  <span class="keywordflow">if</span> (pipes.isSome()) {</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;    <span class="comment">// These handles should no longer be inheritable. This prevents other child</span></div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;    <span class="comment">// processes from accidentally inheriting the wrong handles.</span></div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;    <span class="comment">//</span></div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;    <span class="comment">// NOTE: This is explicit, and does not take into account the</span></div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;    <span class="comment">// previous inherita
 nce semantics of each `HANDLE`. It is assumed</span></div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;    <span class="comment">// that users of this function send non-inheritable handles.</span></div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;    <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, pipes.get()) {</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;      <span class="keyword">const</span> <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> inherit = <a class="code" href="namespaceinternal_1_1windows.html#a9dc48dc50b21cb8cee5237630460c4bd">set_inherit</a>(fd, <span class="keyword">false</span>);</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;      <span class="keywordflow">if</span> (inherit.<a class="code" h
 ref="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(inherit.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;      }</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;    }</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;  }</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;  <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classWindows
 Error.html">WindowsError</a>(</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;        <span class="stringliteral">&quot;Failed to call `CreateProcess`: &quot;</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(arg_string));</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;  }</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="structinternal_1_1windows_1_1ProcessData.html">ProcessData</a>{<a class="code" href="classSharedHandle.html">SharedHandle</a>{process_info.hProcess, ::CloseHandle},</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;                     <a class="code" href="classSharedHandle.html">SharedHandle</a>{process_info.hThread, ::CloseHandle},</div
 ><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;                     <span class="keyword">static_cast&lt;</span><a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a><span class="keyword">&gt;</span>(process_info.dwProcessId)};</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;}</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;} <span class="comment">// namespace windows {</span></div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;<span class="keyword">namespace </span><a class="code" href="na
 mespaceos.html">os</a> {</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;<span class="keyword">namespace </span>Shell {</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;<span class="comment">// Canonical constants used as platform-dependent args to `exec` calls.</span></div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;<span class="comment">// `name` is the command name, `arg0` is the first argument received</span></div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;<span class="comment">// by the callee, usually the command name and `arg1` is the second</span></div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;<span class="comment">// command argument received by the callee.</span></div><div class="line"><a name="l00351"></a><span class="
 lineno">  351</span>&#160;constexpr <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a> = <span class="stringliteral">&quot;cmd.exe&quot;</span>;</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;constexpr <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespaceos_1_1Shell.html#adeacb41dacfa03ad5ceebd9a53582997">arg0</a> = <span class="stringliteral">&quot;cmd.exe&quot;</span>;</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;constexpr <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespaceos_1_1Shell.html#a44f50f66f2a231de974b53c9f4384ba5">arg1</a> = <span class="stringliteral">&quot;/c&quot;</span>;</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;</div><div class="line"><
 a name="l00355"></a><span class="lineno">  355</span>&#160;} <span class="comment">// namespace Shell {</span></div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;<span class="comment">// Runs a shell command (with `cmd.exe`) with optional arguments.</span></div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;<span class="comment">// This assumes that a successful execution will result in the exit</span></div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;<span class="comment">// code for the command to be `0`; in this case, the contents of the</span></div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;<span class="comment">// `Try` will be the contents of `stdout`.<
 /span></div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;<span class="comment">// If the exit code is non-zero, we will return an appropriate error</span></div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;<span class="comment">// message; but *not* `stderr`.</span></div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;<span class="comment">// If the caller needs to examine the contents of `stderr` it should</span></div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;<span class="comment">// be redirected to `stdout` (using, e.g., `2&gt;&amp;1 || exit /b 0` in the</span></div><div class="line"><a name="l00368"></a><span class="lineno">
   368</span>&#160;<span class="comment">// command string). The `|| exit /b 0` is required to obtain a success</span></div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;<span class="comment">// exit code in case of errors, and still obtain `stderr`, as piped to</span></div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;<span class="comment">// `stdout`.</span></div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span>... T&gt;</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;<a class="code" href="classTry.html">Try&lt;std::string&gt;</a> <a class="code" href="namespaceos.html#a0d86320d7799ea761599bc356c02a4fa">shell</a>(<span class="keyword">const</span> std::string&amp; fmt, <span class="keyword">const</span> T&amp;... t)</div><div class="line"><a name="l00373"></a><span class="lineno
 ">  373</span>&#160;{</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;  <span class="keyword">using</span> std::array;</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;  <span class="keyword">using</span> std::string;</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;  <span class="keyword">using</span> std::vector;</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;  <span class="keyword">const</span> <a class="code" href="classTry.html">Try&lt;string&gt;</a> command = <a class="code" href="namespacestrings_1_1internal.html#a870e2db270d980f83de20525ec414d2a">strings::internal::format</a>(fmt, t...);</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;  <span class="keywordflow">if</span> (command.<a class="code" href="classTry.html#a0b98
 f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(command.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;  }</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;  <span class="comment">// This function is intended to pass the arguments to the default</span></div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;  <span class="comment">// shell, so we first add the arguments `cmd.exe cmd.exe /c`,</span></div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;  <span class="comment">// followed by the command and arguments given.
 </span></div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;  vector&lt;string&gt; args = {<a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">os::Shell::name</a>, <a class="code" href="namespaceos_1_1Shell.html#adeacb41dacfa03ad5ceebd9a53582997">os::Shell::arg0</a>, <a class="code" href="namespaceos_1_1Shell.html#a44f50f66f2a231de974b53c9f4384ba5">os::Shell::arg1</a>};</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;  { <span class="comment">// Minimize the lifetime of the system allocated buffer.</span></div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;    <span class="comment">//</span></div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;    <span class="comment">// NOTE: This API returns a pointer to an array of `wchar_t*`,</span></div><d
 iv class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;    <span class="comment">// similar to `argv`. Each pointer to a null-terminated Unicode</span></div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;    <span class="comment">// string represents an individual argument found on the command</span></div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;    <span class="comment">// line. We use this because we cannot just split on whitespace.</span></div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;    <span class="keywordtype">int</span> argc;</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;    <span class="keyword">const</span> std::unique_ptr&lt;wchar_t*, decltype(&amp;::LocalFree)&gt; argv(</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;      ::CommandLineToArgvW(wide_stringify(command.<a class="c
 ode" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()).data(), &amp;argc),</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;      &amp;::LocalFree);</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;    <span class="keywordflow">if</span> (argv == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;    }</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; argc; ++i) {</div><div class="line"><a name="l00403"></a><span class="lineno">  40
 3</span>&#160;      args.push_back(<a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(std::wstring(argv.get()[i])));</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;    }</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;  }</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;  <span class="comment">// This function is intended to return only the `stdout` of the</span></div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;  <span class="comment">// command; but since we have to redirect all of `stdin`, `stdout`,</span></div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;  <span class="comment">// `stderr` if we want to redirect any one of them, we redirect</span></div><div class="line"><a name="l00410"></a><
 span class="lineno">  410</span>&#160;  <span class="comment">// `stdin` and `stderr` to `NUL`, and `stdout` to a pipe.</span></div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;  <a class="code" href="classTry.html">Try&lt;int_fd&gt;</a> stdin_ = <a class="code" href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca">os::open</a>(<a class="code" href="namespaceos.html#a8d90278daa51c4fe9fcb9e54757187b5">os::DEV_NULL</a>, O_RDONLY);</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;  <span class="keywordflow">if</span> (stdin_.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(stdin_.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00414"></
 a><span class="lineno">  414</span>&#160;  }</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;  <a class="code" href="classTry.html">Try&lt;array&lt;int_fd, 2&gt;</a>&gt; stdout_ = <a class="code" href="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51">os::pipe</a>();</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;  <span class="keywordflow">if</span> (stdout_.isError()) {</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(stdout_.error());</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;  }</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;  <a class="code"
  href="classTry.html">Try&lt;int_fd&gt;</a> stderr_ = <a class="code" href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca">os::open</a>(<a class="code" href="namespaceos.html#a8d90278daa51c4fe9fcb9e54757187b5">os::DEV_NULL</a>, O_WRONLY);</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;  <span class="keywordflow">if</span> (stderr_.isError()) {</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(stderr_.error());</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;  }</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;  <span class="comment">// Ensure the file descriptors are closed when we leave this scope.</span></div><div class="line"><a name="l00427"></a><span class="lineno
 ">  427</span>&#160;  <span class="keyword">struct </span>Closer</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;  {</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;    vector&lt;int_fd&gt; fds;</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;    ~Closer()</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;    {</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;      <span class="keywordflow">foreach</span> (<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, fds) {</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;        <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(fd);</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;      }</div><div class="line"><a name="l00435
 "></a><span class="lineno">  435</span>&#160;    }</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;  } closer = {{stdin_.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(), stdout_.get()[0], stderr_.get()}};</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;  array&lt;int_fd, 3&gt; pipes = {stdin_.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(), stdout_.get()[1], stderr_.get()};</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;  <span class="keyword">using namespace </span>::<a class="code" href="namespaceinternal_1_1windows.html">internal::windows</a>;</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;</div><div class="lin
 e"><a name="l00442"></a><span class="lineno">  442</span>&#160;  <a class="code" href="classTry.html">Try&lt;ProcessData&gt;</a> process_data =</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;    <a class="code" href="namespaceinternal_1_1windows.html#aaaa193083fd4f24a2e92e57ee8a8319f">create_process</a>(args.front(), args, <a class="code" href="structNone.html">None</a>(), <span class="keyword">false</span>, pipes);</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;  <span class="keywordflow">if</span> (process_data.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(process_data.<a class="code" href="classTry.html#aec4a11dd
 d3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;  }</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;  <span class="comment">// Close the child end of the stdout pipe and then read until EOF.</span></div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;  <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(stdout_.get()[1]);</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;  <span class="keywordtype">string</span> out;</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;  <a class="code" href="classResult.html">Result&lt;string&gt;</a> part = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00453"></a><span class="lineno">  453</spa
 n>&#160;  <span class="keywordflow">do</span> {</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;    part = <a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">os::read</a>(stdout_.get()[0], 1024);</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;    <span class="keywordflow">if</span> (part.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;      out += part.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>();</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;    }</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;  } <span class="keywordflow">while</span> (part.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>());</div><div class="line"><a na
 me="l00459"></a><span class="lineno">  459</span>&#160;</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;  <span class="comment">// Wait for the process synchronously.</span></div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;  ::WaitForSingleObject(process_data-&gt;process_handle.get_handle(), INFINITE);</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;  DWORD <a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a>;</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;  <span class="keywordflow">if</span> (!::GetExitCodeProcess(</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;        process_data-&gt;process_handle.get_handle(), &amp;<a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4
 ">status</a>)) {</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">&quot;Failed to `GetExitCodeProcess`: &quot;</span> + command.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;  }</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;  <span class="keywordflow">if</span> (status == 0) {</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;    <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;  }</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;</div><div class="lin
 e"><a name="l00473"></a><span class="lineno">  473</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;    <span class="stringliteral">&quot;Failed to execute &#39;&quot;</span> + command.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() +</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;    <span class="stringliteral">&quot;&#39;; the command was either &quot;</span></div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;    <span class="stringliteral">&quot;not found or exited with a non-zero exit status: &quot;</span> +</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;    <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(status));</div><div class="line"><a name="l00478"></a><span class
 ="lineno">  478</span>&#160;}</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span>... T&gt;</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespaceos.html#a4b727e301623549c37cdfcd8c553a2c7">execlp</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a>, T... t) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;</div
 ><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;<span class="comment">// Executes a command by calling &quot;&lt;command&gt; &lt;arguments...&gt;&quot;, and</span></div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;<span class="comment">// returns after the command has been completed. Returns the process exit</span></div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;<span class="comment">// code on success and `None` on error.</span></div><div class="line"><a name="l00488"></a><span class="lineno"><a class="line" href="namespaceos.html#abedec07e6e468b54920d3b921a49eb36">  488</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classOption.html">Option&lt;int&gt;</a> <a class="code" href="namespaceos.html#abedec07e6e468b54920d3b921a49eb36">spawn</a>(</div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;    <span class="keyword">const</span
 > std::string&amp; command,</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;    <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; arguments,</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a> = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;{</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;  <span class="keyword">using namespace </span>::<a class="code" href="namespaceinternal_1_1windows.html">internal::windows</a>;</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;</div><div class="line"><a 
 name="l00495"></a><span class="lineno">  495</span>&#160;  <a class="code" href="classTry.html">Try&lt;ProcessData&gt;</a> process_data =</div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;    <a class="code" href="namespaceinternal_1_1windows.html#aaaa193083fd4f24a2e92e57ee8a8319f">create_process</a>(command, arguments, <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>);</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;  <span class="keywordflow">if</span> (process_data.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;    LOG(WARNING) &lt;&lt; process_data.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>();</div><div cla
 ss="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;  }</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;  <span class="comment">// Wait for the process synchronously.</span></div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;  ::WaitForSingleObject(process_data-&gt;process_handle.get_handle(), INFINITE);</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;  DWORD <a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a>;</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#16
 0;  <span class="keywordflow">if</span> (!::GetExitCodeProcess(</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;        process_data-&gt;process_handle.get_handle(), &amp;<a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a>)) {</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;    LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Failed to `GetExitCodeProcess`: &quot;</span> &lt;&lt; command;</div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;  }</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;  <span class="comment">// Return the child exit code.</span>
 </div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(<a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a>);</div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;}</div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;<span class="comment">// Executes a command by calling &quot;cmd /c &lt;command&gt;&quot;, and returns</span></div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;<span class="comment">// after the command has been completed. Returns the process exit</span></div><div class="line"><a name="l00520"></a>
 <span class="lineno">  520</span>&#160;<span class="comment">// code on success and `None` on error.</span></div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;<span class="comment">// Note: Be cautious about shell injection</span></div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;<span class="comment">// (https://en.wikipedia.org/wiki/Code_injection#Shell_injection)</span></div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;<span class="comment">// when using this method and use proper validation and sanitization</span></div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;<span class="comment">// on the `command`. For this reason in general `os::spawn` is</span></div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;<s
 pan class="comment">// preferred if a shell is not required.</span></div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;<span class="keyword">inline</span> <a class="code" href="classOption.html">Option&lt;int&gt;</a> <a class="code" href="namespaceos.html#a75eb48541200e89e498d3d324ffc3089">system</a>(<span class="keyword">const</span> std::string&amp; command)</div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;{</div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a18f614e5bdf40984c33888a5fa9599ca">os::spawn</a>(<a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">Shell::name</a>, {<a class="code" href="namespaceos_1_1Shell.html#adeacb41dacfa03ad5ceebd9a53582997">Shell::arg0</a>, <a class="code" href="namespaceos_1_1Shell.html#a44f50f66f2a231de974b53c9f4384ba5">Shell::arg1</a>, com
 mand});</div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;}</div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;</div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;</div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;<span class="comment">// In order to emulate the semantics of `execvp`, `os::spawn` waits for the new</span></div><div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;<span class="comment">// process to exit, and returns its error code, which is propogated back to the</span></div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;<span class="comment">// parent via `exit` here.</span></div><div class="line"><a name="l00536"></a><span class="lineno"><a class="line" href="namespaceos.html#a1de77f208d0bc72cf79e7eb9a6b487c7">  536</a></span>&#160;<span class="keyword">inline</span> <span class="key
 wordtype">int</span> <a class="code" href="namespaceos.html#a1de77f208d0bc72cf79e7eb9a6b487c7">execvp</a>(</div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;    <span class="keyword">const</span> std::string&amp; command,</div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;    <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; argv)</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;{</div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;  exit(<a class="code" href="namespaceos.html#a18f614e5bdf40984c33888a5fa9599ca">os::spawn</a>(command, argv).getOrElse(-1));</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;}</div><div class="line"><a name="l00543"></a><span class="lineno">  543
 </span>&#160;</div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;</div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;<span class="comment">// NOTE: This function can accept `Argv` and `Envp` constructs through their</span></div><div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;<span class="comment">// explicit type conversions, but unlike the POSIX implementations, it cannot</span></div><div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;<span class="comment">// accept the raw forms.</span></div><div class="line"><a name="l00548"></a><span class="lineno"><a class="line" href="namespaceos.html#aebc3586b2be0d2b9093ccfbf25dfcde8">  548</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespaceos.html#aebc3586b2be0d2b9093ccfbf25dfcde8">execvpe</a>(</div><div class="line"><a name="l00549"></a><span class="linen
 o">  549</span>&#160;    <span class="keyword">const</span> std::string&amp; command,</div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;    <span c

<TRUNCATED>

[13/13] mesos-site git commit: Updated the website built from mesos SHA: 21305ab.

Posted by gi...@apache.org.
Updated the website built from mesos SHA: 21305ab.


Project: http://git-wip-us.apache.org/repos/asf/mesos-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos-site/commit/0a0aa73e
Tree: http://git-wip-us.apache.org/repos/asf/mesos-site/tree/0a0aa73e
Diff: http://git-wip-us.apache.org/repos/asf/mesos-site/diff/0a0aa73e

Branch: refs/heads/asf-site
Commit: 0a0aa73e99efe078ac2f5b515cabf7424911d4f6
Parents: 2803e19
Author: jenkins <bu...@apache.org>
Authored: Wed May 23 21:59:52 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Wed May 23 21:59:52 2018 +0000

----------------------------------------------------------------------
 ...ude_2stout_2os_2posix_2read_8hpp_source.html |   2 +-
 ...2include_2stout_2os_2windows_2read_8hpp.html |   3 +
 ...e_2stout_2os_2windows_2read_8hpp_source.html |  15 +-
 ...t_2include_2stout_2protobuf_8hpp_source.html |   2 +-
 content/api/latest/c++/Nodes.xml                |  53 +++-
 content/api/latest/c++/Tokens.xml               | 142 +++++++++-
 .../c++/classos_1_1WindowsFD-members.html       |  57 ++--
 .../api/latest/c++/classos_1_1WindowsFD.html    |  61 ++++-
 content/api/latest/c++/decoder_8hpp_source.html |   4 +-
 .../dir_3bd05d674f9d85fce6785660a08f69c2.html   |   2 +
 .../latest/c++/docker__archive_8hpp_source.html |   2 +-
 content/api/latest/c++/fd_8hpp_source.html      |  37 +--
 content/api/latest/c++/files.html               |   7 +-
 content/api/latest/c++/functions_c.html         |   6 +-
 content/api/latest/c++/functions_func_i.html    |   5 +-
 content/api/latest/c++/functions_func_p.html    |   2 +-
 content/api/latest/c++/functions_func_r.html    |   4 +-
 content/api/latest/c++/functions_func_s.html    |   2 +-
 content/api/latest/c++/functions_func_t.html    |   2 +-
 content/api/latest/c++/functions_i.html         |   7 +-
 content/api/latest/c++/functions_m.html         |   4 +-
 content/api/latest/c++/functions_p.html         |   2 +-
 content/api/latest/c++/functions_r.html         |   2 +-
 content/api/latest/c++/functions_s.html         |   8 +-
 content/api/latest/c++/functions_t.html         |   8 +-
 content/api/latest/c++/functions_u.html         |   6 +-
 content/api/latest/c++/functions_w.html         |   2 +-
 content/api/latest/c++/globals_u.html           |   6 +-
 content/api/latest/c++/index.hhc                |  22 +-
 content/api/latest/c++/index.hhk                | 260 +++++++++++--------
 content/api/latest/c++/index.hhp                |   2 +
 .../c++/namespaceinternal_1_1windows.html       |  61 +++++
 .../api/latest/c++/namespacemembers_func_i.html |   3 +
 .../api/latest/c++/namespacemembers_func_p.html |  11 +-
 .../api/latest/c++/namespacemembers_func_r.html |   5 +-
 .../api/latest/c++/namespacemembers_func_s.html |  13 +-
 .../api/latest/c++/namespacemembers_func_w.html |   5 +-
 content/api/latest/c++/namespacemembers_i.html  |   9 +-
 content/api/latest/c++/namespacemembers_m.html  |   2 +-
 content/api/latest/c++/namespacemembers_p.html  |  11 +-
 content/api/latest/c++/namespacemembers_r.html  |   5 +-
 content/api/latest/c++/namespacemembers_s.html  |   7 +-
 content/api/latest/c++/namespacemembers_w.html  |   9 +-
 content/api/latest/c++/namespaceos.html         | 224 ++++++++++++++--
 content/api/latest/c++/overlapped_8hpp.html     |  88 +++++++
 .../api/latest/c++/overlapped_8hpp_source.html  |  76 ++++++
 content/api/latest/c++/posix_2pipe_8hpp.html    |   4 +-
 .../api/latest/c++/posix_2pipe_8hpp_source.html |   4 +-
 .../c++/subprocess__posix_8hpp_source.html      |   4 +-
 .../latest/c++/windows_2dup_8hpp_source.html    |   2 +-
 .../latest/c++/windows_2open_8hpp_source.html   |   4 +-
 content/api/latest/c++/windows_2pipe_8hpp.html  |   8 +-
 .../latest/c++/windows_2pipe_8hpp_source.html   |  10 +-
 .../api/latest/c++/windows_2sendfile_8hpp.html  |   4 +
 .../c++/windows_2sendfile_8hpp_source.html      |  18 +-
 .../latest/c++/windows_2shell_8hpp_source.html  |   4 +-
 content/api/latest/c++/windows_2write_8hpp.html |   3 +
 .../latest/c++/windows_2write_8hpp_source.html  |  15 +-
 content/api/latest/c++/write_8hpp_source.html   |   2 +-
 content/sitemap.xml                             |   8 +
 60 files changed, 1076 insertions(+), 280 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2posix_2read_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2posix_2read_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2posix_2read_8hpp_source.html
index 7127f6b..0435588 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2posix_2read_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2posix_2read_8hpp_source.html
@@ -53,7 +53,7 @@
 </div><!--header-->
 <div class="contents">
 <a href="3rdparty_2stout_2include_2stout_2os_2posix_2read_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</
 span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno
 ">   12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_POSIX_READ_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_POSIX_READ_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;errno.h&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="keyword">namespace </span><a class="c
 ode" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment">// Compatibility function. On POSIX, this function is trivial, but on Windows,</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment">// we have to check whether the file descriptor is a socket or a file to read</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment">// from it.</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<a class="code" href="namespaceos.html#a7e99bac0fb06315c051358c7916fe692">using ::read</a>;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;} <span class="comment">// n
 amespace os {</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_POSIX_READ_HPP__</span></div><div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
-<div class="ttc" id="namespaceos_html_a7e99bac0fb06315c051358c7916fe692"><div class="ttname"><a href="namespaceos.html#a7e99bac0fb06315c051358c7916fe692">os::read</a></div><div class="ttdeci">ssize_t read(const int_fd &amp;fd, void *data, size_t size)</div><div class="ttdef"><b>Definition:</b> read.hpp:25</div></div>
+<div class="ttc" id="namespaceos_html_a7e99bac0fb06315c051358c7916fe692"><div class="ttname"><a href="namespaceos.html#a7e99bac0fb06315c051358c7916fe692">os::read</a></div><div class="ttdeci">ssize_t read(const int_fd &amp;fd, void *data, size_t size)</div><div class="ttdef"><b>Definition:</b> read.hpp:83</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp.html
index 067b481..7a7ba20 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp.html
@@ -58,6 +58,7 @@
 <div class="textblock"><code>#include &lt;<a class="el" href="result_8hpp_source.html">stout/result.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="unreachable_8hpp_source.html">stout/unreachable.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp_source.html">stout/windows.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="overlapped_8hpp_source.html">stout/internal/windows/overlapped.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="int__fd_8hpp_source.html">stout/os/int_fd.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="stout_2include_2stout_2os_2socket_8hpp_source.html">stout/os/socket.hpp</a>&gt;</code><br />
 </div>
@@ -70,6 +71,8 @@ Namespaces</h2></td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
 Functions</h2></td></tr>
+<tr class="memitem:a00b6398808bc7afef46f705c1f92a2fe"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classResult.html">Result</a>&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#a00b6398808bc7afef46f705c1f92a2fe">os::read_async</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, void *data, size_t size, OVERLAPPED *overlapped)</td></tr>
+<tr class="separator:a00b6398808bc7afef46f705c1f92a2fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a7e99bac0fb06315c051358c7916fe692"><td class="memItemLeft" align="right" valign="top"><a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#a7e99bac0fb06315c051358c7916fe692">os::read</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, void *data, size_t size)</td></tr>
 <tr class="separator:a7e99bac0fb06315c051358c7916fe692"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp_source.html
index e09d6f5..c970b6f 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp_source.html
@@ -52,19 +52,32 @@
 <div class="title">read.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6
 </span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="line
 no">   12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_READ_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_READ_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="result_8hpp.html">stout/result.hpp</a>&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2wi
 ndows_8hpp.html">stout/windows.hpp</a>&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2os_2socket_8hpp.html">stout/os/socket.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="namespaceos.h
 tml#a7e99bac0fb06315c051358c7916fe692">   25</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> <a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">read</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, <span class="keywordtype">void</span>* data, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>)</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;  CHECK_LE(size, UINT_MAX);</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;  <span class="keywordflow"
 >switch</span> (fd.type()) {</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;      DWORD bytes;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;      <span class="comment">// TODO(andschwa): Handle overlapped I/O.</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;      <span class="keyword">const</span> BOOL result =</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;        ::ReadFile(fd, data, static_cast&lt;DWORD&gt;(size), &amp;bytes, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;      <span class=
 "keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;        <span class="comment">// The pipe &quot;breaks&quot; when the other process closes its handle, but we</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;        <span class="comment">// still have the data and therefore do not want to return an error.</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;        <span class="keywordflow">if</span> (::GetLastError() != ERROR_BROKEN_PIPE) {</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;          <span class="comment">// Indicates an error, but we can&#39;t return a `WindowsError`.</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;          <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00041"></a><span class="lineno">   41<
 /span>&#160;        }</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;      }</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a><span class="keyword">&gt;</span>(bytes);</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    }</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;      <a class="code" 
 href="namespacenet.html#ae1804e10c81f5743b459eeae1f6a701a">return ::recv</a>(fd, (<span class="keywordtype">char</span>*)data, static_cast&lt;unsigned int&gt;(size), 0);</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    }</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;  }</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;}</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;
 </div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_WINDOWS_READ_HPP__</span></div><div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a894c4d58faeee7675b9e7e8244de1386"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a></div><div class="ttdeci">SSIZE_T ssize_t</div><div class="ttdef"><b>Definition:</b> windows.hpp:186</div></div>
+<a href="3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6
 </span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="line
 no">   12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_READ_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_READ_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="result_8hpp.html">stout/result.hpp</a>&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2wi
 ndows_8hpp.html">stout/windows.hpp</a>&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="overlapped_8hpp.html">stout/internal/windows/overlapped.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2os_2socket_8hpp.html">stout/os/socket.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span c
 lass="lineno">   25</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment">// Asynchronous read on a overlapped int_fd. Returns `Error` on fatal errors,</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment">// `None()` on a successful pending IO operation or number of bytes read on a</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">// successful IO operation that finished immediately.</span></div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="namespaceos.html#a00b6398808bc7afef46f705c1f92a2fe">   30</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classResult.html">Result&lt;
 size_t&gt;</a> <a class="code" href="namespaceos.html#a00b6398808bc7afef46f705c1f92a2fe">read_async</a>(</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    <span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd,</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;    <span class="keywordtype">void</span>* data,</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>,</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;    OVERLAPPED* overlapped)</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;{</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;  CHECK_LE(size, UINT_MAX);</div><div class="
 line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;  <span class="keywordflow">switch</span> (fd.type()) {</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;      DWORD bytes;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">bool</span> success =</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;        ::ReadFile(fd, data, static_cast&lt;DWORD&gt;(size), &amp;bytes, overlapped);</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span
 >&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;      <span class="comment">// On failure, there are two EOF cases for reads:</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;      <span class="comment">//   1) ERROR_BROKEN_PIPE: The write end is closed and there is no data.</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;      <span class="comment">//   2) ERROR_HANDLE_EOF: We hit the EOF for an asynchronous file handle.</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;      <span class="keyword">const</span> DWORD errorCode = ::GetLastError();</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;      <span class="keywordflow">if</span> (success == FALSE &amp;&amp;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;          (errorCode == ERROR_BROKEN_PIPE
  || errorCode == ERROR_HANDLE_EOF)) {</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;      }</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;      <a class="code" href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">return ::internal::windows::process_async_io_result</a>(success, bytes);</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    }</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l000
 56"></a><span class="lineno">   56</span>&#160;      static_assert(</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;          std::is_same&lt;OVERLAPPED, WSAOVERLAPPED&gt;::value,</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;          <span class="stringliteral">&quot;Expected `WSAOVERLAPPED` to be of type `OVERLAPPED`.&quot;</span>);</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;      <span class="comment">// Note that it&#39;s okay to allocate this on the stack, since the WinSock</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;      <span class="comment">// providers must copy the WSABUF to their internal buffers. See</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;      <span class="comment">// https://msdn
 .microsoft.com/en-us/library/windows/desktop/ms741688(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;      WSABUF buf = {</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;        <span class="keyword">static_cast&lt;</span>u_long<span class="keyword">&gt;</span>(<a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>),</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;        static_cast&lt;char*&gt;(data)</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;      };</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;      DWORD bytes;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;      DWORD <a class="code" href=
 "namespaceflags.html">flags</a> = 0;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">int</span> result =</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;        ::WSARecv(fd, &amp;buf, 1, &amp;bytes, &amp;flags, overlapped, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;      <a class="code" href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">return ::internal::windows::process_async_io_result</a>(result == 0, bytes);</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    }</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  }</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#1
 60;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;}</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="comment">// Synchronous reads on any int_fd. Returns -1 on error and</span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="comment">// number of bytes read on success.</span></div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="namespaceos.html#a7e99bac0fb06315c051358c7916fe692">   83</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="3rdparty_2stout_2i
 nclude_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> <a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">read</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, <span class="keywordtype">void</span>* data, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>)</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;{</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  CHECK_LE(size, UINT_MAX);</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  <span class="keywordflow">switch</span> (fd.type()) {</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <span class="keywordf
 low">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;      <span class="comment">// Handle non-overlapped case. We just use the regular `ReadFile` since</span></div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;      <span class="comment">// seekable overlapped files require an offset, which we don&#39;t track.</span></div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;      <span class="keywordflow">if</span> (!fd.is_overlapped()) {</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;        DWORD bytes;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;        <span class="keyword">const</span> BOOL result =</div><div class="line"><a name="l00094"></a><span class="l
 ineno">   94</span>&#160;          ::ReadFile(fd, data, static_cast&lt;DWORD&gt;(size), &amp;bytes, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;        <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;          <span class="comment">// The pipe &quot;breaks&quot; when the other process closes its handle, but we</span></div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;          <span class="comment">// still have the data and therefore do not want to return an error.</span></div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;          <span class="keywordflow">if</span> (::GetLastError() != ERROR_BROKEN_PIPE) {</div><div class="line"><a name="l00100"></a><span class="lineno
 ">  100</span>&#160;            <span class="comment">// Indicates an error, but we can&#39;t return a `WindowsError`.</span></div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;            <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;          }</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;        }</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a><span class="keyword">&gt;</span>(bytes);</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;      }</div><div class="line"><a name="l
 00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;      <span class="comment">// Asynchronous handle, we can use the `read_async` function</span></div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;      <span class="comment">// and then wait on the overlapped object for a synchronous read.</span></div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;      <a class="code" href="classTry.html">Try&lt;OVERLAPPED&gt;</a> overlapped_ =</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;        <a class="code" href="namespaceinternal_1_1windows.html#a388bd9a30ab487f5d035e542187e379a">::internal::windows::init_overlapped_for_sync_io</a>();</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;      <span 
 class="keywordflow">if</span> (overlapped_.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;      }</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;      OVERLAPPED overlapped = overlapped_.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;      <a class="code" href="classResult.html">Result&lt;size_t&gt;</a> result = <a class="code" href="namespaceos.html#a00b6398808bc7afef46f705c1f92a2fe">read_async</a>(fd, data, size, &amp;overlapped);</div><div class="line"><a name="l00119"></a><span class="lineno
 ">  119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      <span class="keywordflow">if</span> (result.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      }</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;      <span class="keywordflow">if</span> (result.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;        <span class="keywordflow">return</span> result.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>
 ();</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;      }</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;      <span class="comment">// IO is pending, so wait for the overlapped object.</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;      DWORD bytes;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;      <span class="keyword">const</span> BOOL wait_success =</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;        ::GetOverlappedResult(fd, &amp;overlapped, &amp;bytes, TRUE);</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;      <span class="keywordflow">if</span> (wait_success == TRUE) {</div><div clas
 s="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        <span class="keywordflow">return</span> bytes;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;      }</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;      <span class="comment">// On failure, there are two EOF cases for reads:</span></div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;      <span class="comment">//   1) ERROR_BROKEN_PIPE: The write end is closed and there is no data.</span></div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;      <span class="comment">//   2) ERROR_HANDLE_EOF: We hit the EOF for an asynchronous file handle.</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;      <span class="keyword">const</span> DWORD <a class="code" h
 ref="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = ::GetLastError();</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;      <span class="keywordflow">if</span> (error == ERROR_BROKEN_PIPE || error == ERROR_HANDLE_EOF) {</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;      }</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;      <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    }</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_
 1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;      <a class="code" href="namespacenet.html#ae1804e10c81f5743b459eeae1f6a701a">return ::recv</a>(fd, (<span class="keywordtype">char</span>*)data, static_cast&lt;unsigned int&gt;(size), 0);</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    }</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;  }</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;}</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>
 &#160;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_WINDOWS_READ_HPP__</span></div><div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a894c4d58faeee7675b9e7e8244de1386"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a></div><div class="ttdeci">SSIZE_T ssize_t</div><div class="ttdef"><b>Definition:</b> windows.hpp:186</div></div>
 <div class="ttc" id="namespaceos_1_1stat_html_a7a116891923bc8b5d8c50f78da8657be"><div class="ttname"><a href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat::size</a></div><div class="ttdeci">Try&lt; Bytes &gt; size(const std::string &amp;path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:119</div></div>
+<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T &amp; get()&amp;</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
+<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
+<div class="ttc" id="overlapped_8hpp_html"><div class="ttname"><a href="overlapped_8hpp.html">overlapped.hpp</a></div></div>
+<div class="ttc" id="namespaceinternal_1_1windows_html_a388bd9a30ab487f5d035e542187e379a"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a388bd9a30ab487f5d035e542187e379a">internal::windows::init_overlapped_for_sync_io</a></div><div class="ttdeci">Try&lt; OVERLAPPED &gt; init_overlapped_for_sync_io()</div><div class="ttdef"><b>Definition:</b> overlapped.hpp:30</div></div>
+<div class="ttc" id="namespaceinternal_1_1windows_html_a4ed4d1bae6b01fb85f8e6fad0b10599d"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">internal::windows::process_async_io_result</a></div><div class="ttdeci">Result&lt; size_t &gt; process_async_io_result(bool successful_return_code, size_t bytes_transfered)</div><div class="ttdef"><b>Definition:</b> overlapped.hpp:71</div></div>
 <div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
 <div class="ttc" id="stout_2include_2stout_2os_2socket_8hpp_html"><div class="ttname"><a href="stout_2include_2stout_2os_2socket_8hpp.html">socket.hpp</a></div></div>
 <div class="ttc" id="classos_1_1WindowsFD_html_ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa"><div class="ttname"><a href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">os::WindowsFD::Type::SOCKET</a></div></div>
 <div class="ttc" id="result_8hpp_html"><div class="ttname"><a href="result_8hpp.html">result.hpp</a></div></div>
 <div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">windows.hpp</a></div></div>
+<div class="ttc" id="classResult_html"><div class="ttname"><a href="classResult.html">Result</a></div><div class="ttdef"><b>Definition:</b> check.hpp:30</div></div>
 <div class="ttc" id="namespacenet_html_ae1804e10c81f5743b459eeae1f6a701a"><div class="ttname"><a href="namespacenet.html#ae1804e10c81f5743b459eeae1f6a701a">net::recv</a></div><div class="ttdeci">ssize_t recv(const int_fd &amp;fd, void *buf, size_t len, int flags)</div><div class="ttdef"><b>Definition:</b> socket.hpp:168</div></div>
+<div class="ttc" id="classResult_html_aedf79f3b14dcda5791b84a64ada4d412"><div class="ttname"><a href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">Result::get</a></div><div class="ttdeci">const T &amp; get() const </div><div class="ttdef"><b>Definition:</b> result.hpp:115</div></div>
 <div class="ttc" id="unreachable_8hpp_html_a0bc63b24b654ca433be7b97a3edde132"><div class="ttname"><a href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a></div><div class="ttdeci">#define UNREACHABLE()</div><div class="ttdef"><b>Definition:</b> unreachable.hpp:22</div></div>
+<div class="ttc" id="namespaceos_html_a00b6398808bc7afef46f705c1f92a2fe"><div class="ttname"><a href="namespaceos.html#a00b6398808bc7afef46f705c1f92a2fe">os::read_async</a></div><div class="ttdeci">Result&lt; size_t &gt; read_async(const int_fd &amp;fd, void *data, size_t size, OVERLAPPED *overlapped)</div><div class="ttdef"><b>Definition:</b> read.hpp:30</div></div>
 <div class="ttc" id="namespaceos_html_aa1d97ff0a93229e1fe6b33e3e2d567f7"><div class="ttname"><a href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">os::read</a></div><div class="ttdeci">Result&lt; std::string &gt; read(int_fd fd, size_t size)</div><div class="ttdef"><b>Definition:</b> read.hpp:55</div></div>
+<div class="ttc" id="classTry_html_a0b98f95163b8a38daafd1651b043a276"><div class="ttname"><a href="classTry.html#a0b98f95163b8a38daafd1651b043a276">Try::isError</a></div><div class="ttdeci">bool isError() const </div><div class="ttdef"><b>Definition:</b> try.hpp:71</div></div>
+<div class="ttc" id="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec_html_ae58e703656ab4a1bd5d9870441236727"><div class="ttname"><a href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">mesos::internal::slave::cni::spec::error</a></div><div class="ttdeci">std::string error(const std::string &amp;msg, uint32_t code)</div></div>
 <div class="ttc" id="int__fd_8hpp_html"><div class="ttname"><a href="int__fd_8hpp.html">int_fd.hpp</a></div></div>
 <div class="ttc" id="classos_1_1WindowsFD_html_ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f"><div class="ttname"><a href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">os::WindowsFD::Type::HANDLE</a></div></div>
+<div class="ttc" id="classResult_html_a85eaa52037223d71092e65701c166562"><div class="ttname"><a href="classResult.html#a85eaa52037223d71092e65701c166562">Result::isSome</a></div><div class="ttdeci">bool isSome() const </div><div class="ttdef"><b>Definition:</b> result.hpp:111</div></div>
+<div class="ttc" id="classResult_html_aeca16ad17d299ad885c9b46c83b12a3d"><div class="ttname"><a href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">Result::isError</a></div><div class="ttdeci">bool isError() const </div><div class="ttdef"><b>Definition:</b> result.hpp:113</div></div>
 <div class="ttc" id="int__fd_8hpp_html_aea4dbda01c90455f158ffa9b924c2f07"><div class="ttname"><a href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a></div><div class="ttdeci">int int_fd</div><div class="ttdef"><b>Definition:</b> int_fd.hpp:35</div></div>
+<div class="ttc" id="namespaceflags_html"><div class="ttname"><a href="namespaceflags.html">flags</a></div><div class="ttdef"><b>Definition:</b> parse.hpp:33</div></div>
 <div class="ttc" id="unreachable_8hpp_html"><div class="ttname"><a href="unreachable_8hpp.html">unreachable.hpp</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/3rdparty_2stout_2include_2stout_2protobuf_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2protobuf_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2protobuf_8hpp_source.html
index ec24255..e61e6e1 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2protobuf_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2protobuf_8hpp_source.html
@@ -64,7 +64,7 @@
 <div class="ttc" id="namespaceos_1_1stat_html_a7a116891923bc8b5d8c50f78da8657be"><div class="ttname"><a href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat::size</a></div><div class="ttdeci">Try&lt; Bytes &gt; size(const std::string &amp;path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:119</div></div>
 <div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a55fad1c3746e1b8a6a00c10998e91d91"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a55fad1c3746e1b8a6a00c10998e91d91">S_IRGRP</a></div><div class="ttdeci">const mode_t S_IRGRP</div><div class="ttdef"><b>Definition:</b> windows.hpp:313</div></div>
 <div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T &amp; get()&amp;</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
-<div class="ttc" id="namespaceos_html_a73da9d49515dfff761c4887c3d6032c0"><div class="ttname"><a href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">os::write</a></div><div class="ttdeci">ssize_t write(const int_fd &amp;fd, const void *data, size_t size)</div><div class="ttdef"><b>Definition:</b> write.hpp:26</div></div>
+<div class="ttc" id="namespaceos_html_a73da9d49515dfff761c4887c3d6032c0"><div class="ttname"><a href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">os::write</a></div><div class="ttdeci">ssize_t write(const int_fd &amp;fd, const void *data, size_t size)</div><div class="ttdef"><b>Definition:</b> write.hpp:72</div></div>
 <div class="ttc" id="namespacerouting_1_1filter_1_1internal_html_a584df149d400373b0ed7c48c1b07cecd"><div class="ttname"><a href="namespacerouting_1_1filter_1_1internal.html#a584df149d400373b0ed7c48c1b07cecd">routing::filter::internal::decode</a></div><div class="ttdeci">Result&lt; Classifier &gt; decode(const Netlink&lt; struct rtnl_cls &gt; &amp;cls)</div></div>
 <div class="ttc" id="structprotobuf_1_1internal_1_1Parser_html_a3a4a8f751bce63053d89a0f130b36f73"><div class="ttname"><a href="structprotobuf_1_1internal_1_1Parser.html#a3a4a8f751bce63053d89a0f130b36f73">protobuf::internal::Parser::operator()</a></div><div class="ttdeci">Try&lt; Nothing &gt; operator()(const JSON::Number &amp;number) const </div><div class="ttdef"><b>Definition:</b> protobuf.hpp:554</div></div>
 <div class="ttc" id="structprotobuf_1_1internal_1_1Parse_html"><div class="ttname"><a href="structprotobuf_1_1internal_1_1Parse.html">protobuf::internal::Parse</a></div><div class="ttdef"><b>Definition:</b> protobuf.hpp:691</div></div>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/Nodes.xml
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/Nodes.xml b/content/api/latest/c++/Nodes.xml
index 4bbcd60..79e9da0 100644
--- a/content/api/latest/c++/Nodes.xml
+++ b/content/api/latest/c++/Nodes.xml
@@ -23038,12 +23038,12 @@
                <Node>
                 <Name>WindowsFD</Name>
                 <Path>classos_1_1WindowsFD.html</Path>
-                <Anchor>a9e8a511230c23e3210e7a0268bb74e62</Anchor>
+                <Anchor>a421497a56ee02f01dd4f0773d07eaa76</Anchor>
                </Node>
                <Node>
                 <Name>WindowsFD</Name>
                 <Path>classos_1_1WindowsFD.html</Path>
-                <Anchor>a6cd1a34bb8239a9ad84bfd1dcb506b97</Anchor>
+                <Anchor>a33cd936b5641a029b1ea2da80d71c748</Anchor>
                </Node>
                <Node>
                 <Name>WindowsFD</Name>
@@ -23081,6 +23081,11 @@
                 <Anchor>a94b69cae4edb8f3549845fbfa0355b7c</Anchor>
                </Node>
                <Node>
+                <Name>is_overlapped</Name>
+                <Path>classos_1_1WindowsFD.html</Path>
+                <Anchor>a4dce5dbc3d019589b4b61d6d17e1da45</Anchor>
+               </Node>
+               <Node>
                 <Name>is_valid</Name>
                 <Path>classos_1_1WindowsFD.html</Path>
                 <Anchor>ab961444eec07c587c9a67122daf4fd33</Anchor>
@@ -51253,6 +51258,22 @@
                         </Subnodes>
                        </Node>
                        <Node>
+                        <Name>overlapped.hpp</Name>
+                        <Path>overlapped_8hpp.html</Path>
+                        <Subnodes>
+                         <Node>
+                          <Name>init_overlapped_for_sync_io</Name>
+                          <Path>overlapped_8hpp.html</Path>
+                          <Anchor>a388bd9a30ab487f5d035e542187e379a</Anchor>
+                         </Node>
+                         <Node>
+                          <Name>process_async_io_result</Name>
+                          <Path>overlapped_8hpp.html</Path>
+                          <Anchor>a4ed4d1bae6b01fb85f8e6fad0b10599d</Anchor>
+                         </Node>
+                        </Subnodes>
+                       </Node>
+                       <Node>
                         <Name>pwd.hpp</Name>
                         <Path>pwd_8hpp.html</Path>
                         <Subnodes>
@@ -51920,7 +51941,7 @@
                          <Node>
                           <Name>pipe</Name>
                           <Path>posix_2pipe_8hpp.html</Path>
-                          <Anchor>aada7738a90123ea91fcd4b60693c2a51</Anchor>
+                          <Anchor>afefbea8a88b84bed66580372accb18a9</Anchor>
                          </Node>
                         </Subnodes>
                        </Node>
@@ -52571,12 +52592,12 @@
                            <Node>
                             <Name>WindowsFD</Name>
                             <Path>classos_1_1WindowsFD.html</Path>
-                            <Anchor>a9e8a511230c23e3210e7a0268bb74e62</Anchor>
+                            <Anchor>a421497a56ee02f01dd4f0773d07eaa76</Anchor>
                            </Node>
                            <Node>
                             <Name>WindowsFD</Name>
                             <Path>classos_1_1WindowsFD.html</Path>
-                            <Anchor>a6cd1a34bb8239a9ad84bfd1dcb506b97</Anchor>
+                            <Anchor>a33cd936b5641a029b1ea2da80d71c748</Anchor>
                            </Node>
                            <Node>
                             <Name>WindowsFD</Name>
@@ -52614,6 +52635,11 @@
                             <Anchor>a94b69cae4edb8f3549845fbfa0355b7c</Anchor>
                            </Node>
                            <Node>
+                            <Name>is_overlapped</Name>
+                            <Path>classos_1_1WindowsFD.html</Path>
+                            <Anchor>a4dce5dbc3d019589b4b61d6d17e1da45</Anchor>
+                           </Node>
+                           <Node>
                             <Name>is_valid</Name>
                             <Path>classos_1_1WindowsFD.html</Path>
                             <Anchor>ab961444eec07c587c9a67122daf4fd33</Anchor>
@@ -53171,7 +53197,7 @@
                          <Node>
                           <Name>pipe</Name>
                           <Path>windows_2pipe_8hpp.html</Path>
-                          <Anchor>aada7738a90123ea91fcd4b60693c2a51</Anchor>
+                          <Anchor>aaf74ddc18d833f8cbea1bdc81a4b24b8</Anchor>
                          </Node>
                         </Subnodes>
                        </Node>
@@ -53184,6 +53210,11 @@
                           <Path>3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp.html</Path>
                           <Anchor>a7e99bac0fb06315c051358c7916fe692</Anchor>
                          </Node>
+                         <Node>
+                          <Name>read_async</Name>
+                          <Path>3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp.html</Path>
+                          <Anchor>a00b6398808bc7afef46f705c1f92a2fe</Anchor>
+                         </Node>
                         </Subnodes>
                        </Node>
                        <Node>
@@ -53249,6 +53280,11 @@
                           <Path>windows_2sendfile_8hpp.html</Path>
                           <Anchor>ac4d8cf58aea1781753bb27e1d40bdee0</Anchor>
                          </Node>
+                         <Node>
+                          <Name>sendfile_async</Name>
+                          <Path>windows_2sendfile_8hpp.html</Path>
+                          <Anchor>ad8eec8c973d58ad0db1a7b6d81e77e96</Anchor>
+                         </Node>
                         </Subnodes>
                        </Node>
                        <Node>
@@ -53507,6 +53543,11 @@
                           <Path>windows_2write_8hpp.html</Path>
                           <Anchor>a73da9d49515dfff761c4887c3d6032c0</Anchor>
                          </Node>
+                         <Node>
+                          <Name>write_async</Name>
+                          <Path>windows_2write_8hpp.html</Path>
+                          <Anchor>a1af52685ba3e8fe8676af86cd16a1eb8</Anchor>
+                         </Node>
                         </Subnodes>
                        </Node>
                        <Node>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/Tokens.xml
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/Tokens.xml b/content/api/latest/c++/Tokens.xml
index e66197a..ae3965f 100644
--- a/content/api/latest/c++/Tokens.xml
+++ b/content/api/latest/c++/Tokens.xml
@@ -5004,6 +5004,28 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>init_overlapped_for_sync_io</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>internal::windows</Scope>
+    </TokenIdentifier>
+    <Path>namespaceinternal_1_1windows.html</Path>
+    <Anchor>a388bd9a30ab487f5d035e542187e379a</Anchor>
+    <DeclaredIn>overlapped.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>process_async_io_result</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>internal::windows</Scope>
+    </TokenIdentifier>
+    <Path>namespaceinternal_1_1windows.html</Path>
+    <Anchor>a4ed4d1bae6b01fb85f8e6fad0b10599d</Anchor>
+    <DeclaredIn>overlapped.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>getpwuid</Name>
       <APILanguage>c</APILanguage>
       <Type>func</Type>
@@ -7278,7 +7300,7 @@
       <Scope>os</Scope>
     </TokenIdentifier>
     <Path>namespaceos.html</Path>
-    <Anchor>aada7738a90123ea91fcd4b60693c2a51</Anchor>
+    <Anchor>afefbea8a88b84bed66580372accb18a9</Anchor>
     <DeclaredIn>pipe.hpp</DeclaredIn>
   </Token>
   <Token>
@@ -7289,7 +7311,7 @@
       <Scope>os</Scope>
     </TokenIdentifier>
     <Path>namespaceos.html</Path>
-    <Anchor>aada7738a90123ea91fcd4b60693c2a51</Anchor>
+    <Anchor>aaf74ddc18d833f8cbea1bdc81a4b24b8</Anchor>
     <DeclaredIn>pipe.hpp</DeclaredIn>
   </Token>
   <Token>
@@ -7437,6 +7459,17 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>sendfile_async</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>os</Scope>
+    </TokenIdentifier>
+    <Path>namespaceos.html</Path>
+    <Anchor>ad8eec8c973d58ad0db1a7b6d81e77e96</Anchor>
+    <DeclaredIn>sendfile.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>sendfile</Name>
       <APILanguage>cpp</APILanguage>
       <Type>func</Type>
@@ -8163,6 +8196,17 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>write_async</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>os</Scope>
+    </TokenIdentifier>
+    <Path>namespaceos.html</Path>
+    <Anchor>a1af52685ba3e8fe8676af86cd16a1eb8</Anchor>
+    <DeclaredIn>write.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>write</Name>
       <APILanguage>cpp</APILanguage>
       <Type>func</Type>
@@ -26967,6 +27011,17 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>read_async</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>os</Scope>
+    </TokenIdentifier>
+    <Path>namespaceos.html</Path>
+    <Anchor>a00b6398808bc7afef46f705c1f92a2fe</Anchor>
+    <DeclaredIn>read.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>read</Name>
       <APILanguage>cpp</APILanguage>
       <Type>func</Type>
@@ -46979,6 +47034,28 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>init_overlapped_for_sync_io</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>internal::windows</Scope>
+    </TokenIdentifier>
+    <Path>namespaceinternal_1_1windows.html</Path>
+    <Anchor>a388bd9a30ab487f5d035e542187e379a</Anchor>
+    <DeclaredIn>overlapped.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>process_async_io_result</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>internal::windows</Scope>
+    </TokenIdentifier>
+    <Path>namespaceinternal_1_1windows.html</Path>
+    <Anchor>a4ed4d1bae6b01fb85f8e6fad0b10599d</Anchor>
+    <DeclaredIn>overlapped.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>reparse_point_attribute_set</Name>
       <APILanguage>cpp</APILanguage>
       <Type>func</Type>
@@ -162669,7 +162746,7 @@
       <Scope>os</Scope>
     </TokenIdentifier>
     <Path>namespaceos.html</Path>
-    <Anchor>aada7738a90123ea91fcd4b60693c2a51</Anchor>
+    <Anchor>afefbea8a88b84bed66580372accb18a9</Anchor>
     <DeclaredIn>pipe.hpp</DeclaredIn>
   </Token>
   <Token>
@@ -163435,6 +163512,28 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>pipe</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>os</Scope>
+    </TokenIdentifier>
+    <Path>namespaceos.html</Path>
+    <Anchor>aaf74ddc18d833f8cbea1bdc81a4b24b8</Anchor>
+    <DeclaredIn>pipe.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>read_async</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>os</Scope>
+    </TokenIdentifier>
+    <Path>namespaceos.html</Path>
+    <Anchor>a00b6398808bc7afef46f705c1f92a2fe</Anchor>
+    <DeclaredIn>read.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>read</Name>
       <APILanguage>cpp</APILanguage>
       <Type>func</Type>
@@ -163446,6 +163545,17 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>sendfile_async</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>os</Scope>
+    </TokenIdentifier>
+    <Path>namespaceos.html</Path>
+    <Anchor>ad8eec8c973d58ad0db1a7b6d81e77e96</Anchor>
+    <DeclaredIn>sendfile.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>sendfile</Name>
       <APILanguage>cpp</APILanguage>
       <Type>func</Type>
@@ -163490,6 +163600,17 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>write_async</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>os</Scope>
+    </TokenIdentifier>
+    <Path>namespaceos.html</Path>
+    <Anchor>a1af52685ba3e8fe8676af86cd16a1eb8</Anchor>
+    <DeclaredIn>write.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>write</Name>
       <APILanguage>cpp</APILanguage>
       <Type>func</Type>
@@ -164886,7 +165007,7 @@
       <Scope>os::WindowsFD</Scope>
     </TokenIdentifier>
     <Path>classos_1_1WindowsFD.html</Path>
-    <Anchor>a9e8a511230c23e3210e7a0268bb74e62</Anchor>
+    <Anchor>a421497a56ee02f01dd4f0773d07eaa76</Anchor>
     <DeclaredIn>fd.hpp</DeclaredIn>
   </Token>
   <Token>
@@ -164897,7 +165018,7 @@
       <Scope>os::WindowsFD</Scope>
     </TokenIdentifier>
     <Path>classos_1_1WindowsFD.html</Path>
-    <Anchor>a6cd1a34bb8239a9ad84bfd1dcb506b97</Anchor>
+    <Anchor>a33cd936b5641a029b1ea2da80d71c748</Anchor>
     <DeclaredIn>fd.hpp</DeclaredIn>
   </Token>
   <Token>
@@ -165056,6 +165177,17 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>is_overlapped</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>instm</Type>
+      <Scope>os::WindowsFD</Scope>
+    </TokenIdentifier>
+    <Path>classos_1_1WindowsFD.html</Path>
+    <Anchor>a4dce5dbc3d019589b4b61d6d17e1da45</Anchor>
+    <DeclaredIn>fd.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>operator&lt;</Name>
       <APILanguage>cpp</APILanguage>
       <Type>ffunc</Type>


[12/13] mesos-site git commit: Updated the website built from mesos SHA: 21305ab.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/classos_1_1WindowsFD-members.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/classos_1_1WindowsFD-members.html b/content/api/latest/c++/classos_1_1WindowsFD-members.html
index a0c759e..aec81ca 100644
--- a/content/api/latest/c++/classos_1_1WindowsFD-members.html
+++ b/content/api/latest/c++/classos_1_1WindowsFD-members.html
@@ -59,35 +59,36 @@
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a94b69cae4edb8f3549845fbfa0355b7c">crt</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a></td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33">is_valid</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a8ba56c5251264ab13aeaaa34cde39bdb">operator HANDLE</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#aa58f87561c2785c34ae7f34ce59abfe2">operator intptr_t</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a0826bf646e11186502039fcf869b2afc">operator SOCKET</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a342803d2a16f81ca20f0e0c1c2e598d0">operator!=</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ab72f13c82b5f2fb8a646c5d0d50736e7">operator!=</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a64a9d1d43e26808ec565056c183ae56f">operator&lt;</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a74d759a0ba3830e9c80196853846f33b">operator&lt;</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#afd05a43697b99aa8b7da8d56155b1a49">operator&lt;=</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#abdc31b1c170a2c34afa8e3b6e4b062e4">operator&lt;=</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ab780d87119c772425aa855260056d1a1">operator=</a>(const WindowsFD &amp;)=default</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a057780cfa5e1cc2fa84543a6f9b6bca0">operator=</a>(WindowsFD &amp;&amp;)=default</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a833e23bea1f10420bbd7139d1e8539ad">operator==</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ac9877f8cf4ddc33a161663fd2ab1355d">operator==</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#aabdbd9806af44043dfff1cf9aeeee869">operator&gt;</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a776aca0bca92649b15733ecb53bd9371">operator&gt;</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a23d70e92fe2ee8da692f4e9b1b9e1e43">operator&gt;=</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a9aa231ba576db9e75b5589a85df6460f">operator&gt;=</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">socket_</a></td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a4dce5dbc3d019589b4b61d6d17e1da45">is_overlapped</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33">is_valid</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a8ba56c5251264ab13aeaaa34cde39bdb">operator HANDLE</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#aa58f87561c2785c34ae7f34ce59abfe2">operator intptr_t</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a0826bf646e11186502039fcf869b2afc">operator SOCKET</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a342803d2a16f81ca20f0e0c1c2e598d0">operator!=</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ab72f13c82b5f2fb8a646c5d0d50736e7">operator!=</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a64a9d1d43e26808ec565056c183ae56f">operator&lt;</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a74d759a0ba3830e9c80196853846f33b">operator&lt;</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#afd05a43697b99aa8b7da8d56155b1a49">operator&lt;=</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#abdc31b1c170a2c34afa8e3b6e4b062e4">operator&lt;=</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ab780d87119c772425aa855260056d1a1">operator=</a>(const WindowsFD &amp;)=default</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a057780cfa5e1cc2fa84543a6f9b6bca0">operator=</a>(WindowsFD &amp;&amp;)=default</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a833e23bea1f10420bbd7139d1e8539ad">operator==</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ac9877f8cf4ddc33a161663fd2ab1355d">operator==</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#aabdbd9806af44043dfff1cf9aeeee869">operator&gt;</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a776aca0bca92649b15733ecb53bd9371">operator&gt;</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a23d70e92fe2ee8da692f4e9b1b9e1e43">operator&gt;=</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a9aa231ba576db9e75b5589a85df6460f">operator&gt;=</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">socket_</a></td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">Type</a> enum name</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a9e8a511230c23e3210e7a0268bb74e62">WindowsFD</a>(HANDLE handle)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a6cd1a34bb8239a9ad84bfd1dcb506b97">WindowsFD</a>(SOCKET socket)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a43994eeb484a426990af657f691f66e0">WindowsFD</a>(intptr_t socket)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a278285643f263655c5f64f45451fc6e6">WindowsFD</a>(int crt)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a68733e16ee25fe8602557e6e9f534bc9">WindowsFD</a>()</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a3436f11ccbb859379717ac91e96f7144">WindowsFD</a>(const WindowsFD &amp;)=default</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a79c98e3c78c0a7155a8ed9f42832fd5d">WindowsFD</a>(WindowsFD &amp;&amp;)=default</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ad2ce21d9f77710472e19843e3e86343e">~WindowsFD</a>()=default</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a421497a56ee02f01dd4f0773d07eaa76">WindowsFD</a>(HANDLE handle, bool overlapped=false)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a33cd936b5641a029b1ea2da80d71c748">WindowsFD</a>(SOCKET socket, bool overlapped=true)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a43994eeb484a426990af657f691f66e0">WindowsFD</a>(intptr_t socket)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a278285643f263655c5f64f45451fc6e6">WindowsFD</a>(int crt)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a68733e16ee25fe8602557e6e9f534bc9">WindowsFD</a>()</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a3436f11ccbb859379717ac91e96f7144">WindowsFD</a>(const WindowsFD &amp;)=default</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a79c98e3c78c0a7155a8ed9f42832fd5d">WindowsFD</a>(WindowsFD &amp;&amp;)=default</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ad2ce21d9f77710472e19843e3e86343e">~WindowsFD</a>()=default</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/classos_1_1WindowsFD.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/classos_1_1WindowsFD.html b/content/api/latest/c++/classos_1_1WindowsFD.html
index e763763..5ae009a 100644
--- a/content/api/latest/c++/classos_1_1WindowsFD.html
+++ b/content/api/latest/c++/classos_1_1WindowsFD.html
@@ -71,10 +71,10 @@ Public Types</h2></td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a9e8a511230c23e3210e7a0268bb74e62"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classos_1_1WindowsFD.html#a9e8a511230c23e3210e7a0268bb74e62">WindowsFD</a> (HANDLE handle)</td></tr>
-<tr class="separator:a9e8a511230c23e3210e7a0268bb74e62"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6cd1a34bb8239a9ad84bfd1dcb506b97"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classos_1_1WindowsFD.html#a6cd1a34bb8239a9ad84bfd1dcb506b97">WindowsFD</a> (SOCKET socket)</td></tr>
-<tr class="separator:a6cd1a34bb8239a9ad84bfd1dcb506b97"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a421497a56ee02f01dd4f0773d07eaa76"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classos_1_1WindowsFD.html#a421497a56ee02f01dd4f0773d07eaa76">WindowsFD</a> (HANDLE handle, bool overlapped=false)</td></tr>
+<tr class="separator:a421497a56ee02f01dd4f0773d07eaa76"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a33cd936b5641a029b1ea2da80d71c748"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classos_1_1WindowsFD.html#a33cd936b5641a029b1ea2da80d71c748">WindowsFD</a> (SOCKET socket, bool overlapped=true)</td></tr>
+<tr class="separator:a33cd936b5641a029b1ea2da80d71c748"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a43994eeb484a426990af657f691f66e0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classos_1_1WindowsFD.html#a43994eeb484a426990af657f691f66e0">WindowsFD</a> (intptr_t socket)</td></tr>
 <tr class="separator:a43994eeb484a426990af657f691f66e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a278285643f263655c5f64f45451fc6e6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classos_1_1WindowsFD.html#a278285643f263655c5f64f45451fc6e6">WindowsFD</a> (int <a class="el" href="classos_1_1WindowsFD.html#a94b69cae4edb8f3549845fbfa0355b7c">crt</a>)</td></tr>
@@ -103,6 +103,8 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:aa58f87561c2785c34ae7f34ce59abfe2"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3ce17a730ace5352a1fc6d49f8336d52"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">Type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a> () const </td></tr>
 <tr class="separator:a3ce17a730ace5352a1fc6d49f8336d52"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4dce5dbc3d019589b4b61d6d17e1da45"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classos_1_1WindowsFD.html#a4dce5dbc3d019589b4b61d6d17e1da45">is_overlapped</a> () const </td></tr>
+<tr class="separator:a4dce5dbc3d019589b4b61d6d17e1da45"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
 Friends</h2></td></tr>
@@ -159,7 +161,7 @@ Friends</h2></td></tr>
 </div>
 </div>
 <h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" id="a9e8a511230c23e3210e7a0268bb74e62"></a>
+<a class="anchor" id="a421497a56ee02f01dd4f0773d07eaa76"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -170,8 +172,18 @@ Friends</h2></td></tr>
           <td class="memname">os::WindowsFD::WindowsFD </td>
           <td>(</td>
           <td class="paramtype">HANDLE&#160;</td>
-          <td class="paramname"><em>handle</em></td><td>)</td>
+          <td class="paramname"><em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>overlapped</em> = <code>false</code>&#160;</td>
+        </tr>
+        <tr>
           <td></td>
+          <td>)</td>
+          <td></td><td></td>
         </tr>
       </table>
   </td>
@@ -183,7 +195,7 @@ Friends</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="a6cd1a34bb8239a9ad84bfd1dcb506b97"></a>
+<a class="anchor" id="a33cd936b5641a029b1ea2da80d71c748"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -194,8 +206,18 @@ Friends</h2></td></tr>
           <td class="memname">os::WindowsFD::WindowsFD </td>
           <td>(</td>
           <td class="paramtype">SOCKET&#160;</td>
-          <td class="paramname"><em>socket</em></td><td>)</td>
+          <td class="paramname"><em>socket</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
           <td></td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>overlapped</em> = <code>true</code>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
         </tr>
       </table>
   </td>
@@ -373,6 +395,29 @@ Friends</h2></td></tr>
 
 </div>
 </div>
+<a class="anchor" id="a4dce5dbc3d019589b4b61d6d17e1da45"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool os::WindowsFD::is_overlapped </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
 <a class="anchor" id="ab961444eec07c587c9a67122daf4fd33"></a>
 <div class="memitem">
 <div class="memproto">


[04/13] mesos-site git commit: Updated the website built from mesos SHA: 21305ab.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/windows_2dup_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2dup_8hpp_source.html b/content/api/latest/c++/windows_2dup_8hpp_source.html
index 8537c3b..b052c41 100644
--- a/content/api/latest/c++/windows_2dup_8hpp_source.html
+++ b/content/api/latest/c++/windows_2dup_8hpp_source.html
@@ -52,7 +52,7 @@
 <div class="title">dup.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="windows_2dup_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">//<
 /span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class
 ="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_DUP_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_DUP_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l
 00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span> <span class="comment">// For `WinSock2.h`.</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="namespaceos.html#ac6a52f61ab8f31856757007
 b4be7f5e6">   25</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;int_fd&gt;</a> <a class="code" href="namespaceos.html#a622be738276833e635a7db06cff31a35">dup</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd)</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;  <span class="keywordflow">switch</span> (fd.type()) {</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;      <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a9342
 08b6017d0a9aed90b6594bb8292f">HANDLE</a> duplicate = INVALID_HANDLE_VALUE;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;      <span class="keyword">const</span> BOOL result = ::DuplicateHandle(</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;          ::GetCurrentProcess(),  <span class="comment">// Source process == current.</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;          fd,                     <span class="comment">// Handle to duplicate.</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;          ::GetCurrentProcess(),  <span class="comment">// Target process == current.</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;          &amp;duplicate,</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;          0,                      <span class="comm
 ent">// Ignored (DUPLICATE_SAME_ACCESS).</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;          FALSE,                  <span class="comment">// Non-inheritable handle.</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;          DUPLICATE_SAME_ACCESS); <span class="comment">// Same access level as source.</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;      <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;      }</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#16
 0;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;      <span class="keywordflow">return</span> duplicate;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    }</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;      WSAPROTOCOL_INFOW info;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">int</span> result =</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;        ::WSADuplicateSocketW(fd, ::GetCurrentProcessId(), &amp;info);</div><div class="line"><a name="l00049"></a><span class=
 "lineno">   49</span>&#160;      <span class="keywordflow">if</span> (result != 0) {</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="error_8hpp.html#a176f6fc34ea37d40201853a52a475762">SocketError</a>();</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;      }</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;      return ::WSASocketW(0, 0, 0, &amp;info, 0, 0);</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    }</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;  }</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;  <a class="code" href="unreachable
 _8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;}</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_WINDOWS_DUP_HPP__</span></div><div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
+<a href="windows_2dup_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">//<
 /span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class
 ="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_DUP_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_DUP_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l
 00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span> <span class="comment">// For `WinSock2.h`.</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="namespaceos.html#ac6a52f61ab8f31856757007
 b4be7f5e6">   25</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;int_fd&gt;</a> <a class="code" href="namespaceos.html#a622be738276833e635a7db06cff31a35">dup</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd)</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;  <span class="keywordflow">switch</span> (fd.type()) {</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;      <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a9342
 08b6017d0a9aed90b6594bb8292f">HANDLE</a> duplicate = INVALID_HANDLE_VALUE;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;      <span class="keyword">const</span> BOOL result = ::DuplicateHandle(</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;          ::GetCurrentProcess(),  <span class="comment">// Source process == current.</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;          fd,                     <span class="comment">// Handle to duplicate.</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;          ::GetCurrentProcess(),  <span class="comment">// Target process == current.</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;          &amp;duplicate,</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;          0,                      <span class="comm
 ent">// Ignored (DUPLICATE_SAME_ACCESS).</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;          FALSE,                  <span class="comment">// Non-inheritable handle.</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;          DUPLICATE_SAME_ACCESS); <span class="comment">// Same access level as source.</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;      <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;      }</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#16
 0;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>(duplicate, fd.is_overlapped());</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    }</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;      WSAPROTOCOL_INFOW info;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">int</span> result =</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;        ::WSADuplica
 teSocketW(fd, ::GetCurrentProcessId(), &amp;info);</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;      <span class="keywordflow">if</span> (result != 0) {</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="error_8hpp.html#a176f6fc34ea37d40201853a52a475762">SocketError</a>();</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;      }</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;      return ::WSASocketW(0, 0, 0, &amp;info, 0, 0);</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    }</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;  }</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div><div c
 lass="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;}</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_WINDOWS_DUP_HPP__</span></div><div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
 <div class="ttc" id="classWindowsError_html"><div class="ttname"><a href="classWindowsError.html">WindowsError</a></div><div class="ttdef"><b>Definition:</b> error.hpp:108</div></div>
 <div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
 <div class="ttc" id="classos_1_1WindowsFD_html_ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa"><div class="ttname"><a href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">os::WindowsFD::Type::SOCKET</a></div></div>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/windows_2open_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2open_8hpp_source.html b/content/api/latest/c++/windows_2open_8hpp_source.html
index cd1a556..79ad81c 100644
--- a/content/api/latest/c++/windows_2open_8hpp_source.html
+++ b/content/api/latest/c++/windows_2open_8hpp_source.html
@@ -52,10 +52,10 @@
 <div class="title">open.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="windows_2open_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">//
 </span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div clas
 s="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_OPEN_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_OPEN_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;fcntl.h&gt;</span> <span class="comment">// For file access flags like `_O_CREAT`.</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class=
 "preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span> <span class="comment">// For `mode_t`.</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">  
  26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="longpath_8hpp.html">stout/internal/windows/longpath.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment">// TODO(andschwa): Windows does not support the Linux extension</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">// O_NONBLOCK, as asynchronous I/O is done through other mechanisms.</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">// Overlapped I/O will be implemented later.</span></div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="windows_2open_8hpp.html#a3e8a4870d44496f4236c6c7e32722d97">   31</a></span>&#160;constexpr <span class="keywordtype">int</span> <a class="code" href="windows_2open
 _8hpp.html#a3e8a4870d44496f4236c6c7e32722d97">O_NONBLOCK</a> = 0;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">// Windows does not support the Linux extension O_SYNC, as buffering</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">// is done differently.</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">// TODO(andschwa): This could be equivalent to</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">// `FILE_FLAG_WRITE_THROUGH`, but we don&#39;t seem to need it.</span></div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="windows_2open_8hpp.html#a90f563755a3487471e47a64aa01daf2c">   37</a></span>&#160;constexpr <span class="keyw
 ordtype">int</span> <a class="code" href="windows_2open_8hpp.html#a90f563755a3487471e47a64aa01daf2c">O_SYNC</a> = 0;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">// Windows does not support the Linux extension O_CLOEXEC. Instead, by</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">// default we set all handles to be non-inheritable.</span></div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="windows_2open_8hpp.html#ae477ca5323e49dcb433426280be75067">   41</a></span>&#160;constexpr <span class="keywordtype">int</span> <a class="code" href="windows_2open_8hpp.html#ae477ca5323e49dcb433426280be75067">O_CLOEXEC</a> = 0;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00043"></a><span
  class="lineno">   43</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">// TODO(andschwa): Handle specified creation permissions in `mode_t mode`. See</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">// MESOS-3176.</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;int_fd&gt;</a> <a class="code" href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca">open</a>(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>, <span class="keywordtype">int</span> oflag, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8
 hpp.html#a8a35dd1207a16dfa8b1d4163176d828c">mode_t</a> <a class="code" href="namespaceos_1_1stat.html#afc51654ad486693167c300612bf8ebfa">mode</a> = 0)</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;  std::wstring <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a> = <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">::internal::windows::longpath</a>(path);</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;  <span class="comment">// Map the POSIX `oflag` access flags.</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  <span class="commen
 t">// O_APPEND: Write only appends.</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;  <span class="comment">// NOTE: We choose a `write` flag here because emulating `O_APPEND`</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;  <span class="comment">// requires granting the `FILE_APPEND_DATA` access right, but not</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;  <span class="comment">// the `FILE_WRITE_DATA` access right, which `GENERIC_WRITE` would</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;  <span class="comment">// otherwise grant.</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;  <span class="keyword">const</span> DWORD <a class="code" href="namespaceos.
 html#a73da9d49515dfff761c4887c3d6032c0">write</a> = (oflag &amp; O_APPEND) ? FILE_APPEND_DATA : GENERIC_WRITE;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  DWORD <a class="code" href="namespaceos.html#a426a9c189f65b7e3f63e16eb11ec73c3">access</a>;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="keywordflow">switch</span> (oflag &amp; (O_RDONLY | O_WRONLY | O_RDWR)) {</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    <span class="keywordflow">case</span> O_RDONLY: {</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;      access = GENERIC_READ;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;      <span class="keywordflow">break</span>;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</spa
 n>&#160;    }</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    <span class="keywordflow">case</span> O_WRONLY: {</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;      access = <a class="code" href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">write</a>;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;      <span class="keywordflow">break</span>;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    }</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    <span class="keywordflow">case</span> O_RDWR: {</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;      access = GENERIC_READ | <a class="code" href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">write</a>;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;      <span class="keywordflo
 w">break</span>;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    }</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">&quot;Access mode not specified.&quot;</span>);</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    }</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  }</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <span class="comment">// Map the POSIX `oflag` creation flags.</span></div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  DWORD 
 <a class="code" href="namespacecgroups.html#a2ecc89636706df947027a4c3c2100fbe">create</a>;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;  <span class="keywordflow">switch</span> (oflag &amp; (O_CREAT | O_EXCL | O_TRUNC)) {</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    <span class="keywordflow">case</span> O_CREAT: {</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;      <span class="comment">// Create a new file or open an existing file.</span></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;      create = OPEN_ALWAYS;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;      <span class="keywordflow">break</span>;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    }</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <span class="keywor
 dflow">case</span> O_CREAT | O_EXCL:</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <span class="keywordflow">case</span> O_CREAT | O_EXCL | O_TRUNC: {</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;      <span class="comment">// Create a new file, but fail if it already exists.</span></div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;      <span class="comment">// Ignore `O_TRUNC` with `O_CREAT | O_EXCL`</span></div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;      create = CREATE_NEW;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;      <span class="keywordflow">break</span>;</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    }</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <span class="keywordflow">case</span> O_CREAT | O_TRUNC: 
 {</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;      <span class="comment">// Truncate file if it already exists.</span></div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;      create = CREATE_ALWAYS;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;      <span class="keywordflow">break</span>;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    }</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <span class="keywordflow">case</span> O_EXCL:</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    <span class="keywordflow">case</span> O_EXCL | O_TRUNC: {</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">&quot;`O_EXCL` is undef
 ined without `O_CREAT`.&quot;</span>);</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    }</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    <span class="keywordflow">case</span> O_TRUNC: {</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;      <span class="comment">// Truncate file if it exists, otherwise fail.</span></div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;      create = TRUNCATE_EXISTING;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;      <span class="keywordflow">break</span>;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    }</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;      <span class="
 comment">// Open file if it exists, otherwise fail.</span></div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;      create = OPEN_EXISTING;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;      <span class="keywordflow">break</span>;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    }</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;  }</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  <span class="keyword">const</span> <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a> handle = ::CreateFileW(</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;      longpath.data(),</div><div class="line"><a name="l00118"></a><span class="lineno">  118</s
 pan>&#160;      <a class="code" href="namespaceos.html#a426a9c189f65b7e3f63e16eb11ec73c3">access</a>,</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;      <span class="comment">// Share all access so we don&#39;t lock the file.</span></div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;      <span class="comment">// Disable inheritance by default.</span></div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;      <a class="code" href="namespacecgroups.html#a2ecc89636706df947027a4c3c2100fbe">create</a>,</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;      FILE_ATTRIBUTE_NORMAL,</div><div
  class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;      <span class="comment">// No template file.</span></div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;      <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;  <span class="keywordflow">if</span> (handle == INVALID_HANDLE_VALUE) {</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  }</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  <span class="keywordflow">return</span> handle;</d
 iv><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;}</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_WINDOWS_OPEN_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
+<a href="windows_2open_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">//
 </span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div clas
 s="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_OPEN_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_OPEN_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;fcntl.h&gt;</span> <span class="comment">// For file access flags like `_O_CREAT`.</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class=
 "preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span> <span class="comment">// For `mode_t`.</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">  
  26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="longpath_8hpp.html">stout/internal/windows/longpath.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment">// TODO(andschwa): Windows does not support the Linux extension</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">// O_NONBLOCK, as asynchronous I/O is done through other mechanisms.</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">// Overlapped I/O will be implemented later.</span></div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="windows_2open_8hpp.html#a3e8a4870d44496f4236c6c7e32722d97">   31</a></span>&#160;constexpr <span class="keywordtype">int</span> <a class="code" href="windows_2open
 _8hpp.html#a3e8a4870d44496f4236c6c7e32722d97">O_NONBLOCK</a> = 0;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">// Windows does not support the Linux extension O_SYNC, as buffering</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">// is done differently.</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">// TODO(andschwa): This could be equivalent to</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">// `FILE_FLAG_WRITE_THROUGH`, but we don&#39;t seem to need it.</span></div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="windows_2open_8hpp.html#a90f563755a3487471e47a64aa01daf2c">   37</a></span>&#160;constexpr <span class="keyw
 ordtype">int</span> <a class="code" href="windows_2open_8hpp.html#a90f563755a3487471e47a64aa01daf2c">O_SYNC</a> = 0;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">// Windows does not support the Linux extension O_CLOEXEC. Instead, by</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">// default we set all handles to be non-inheritable.</span></div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="windows_2open_8hpp.html#ae477ca5323e49dcb433426280be75067">   41</a></span>&#160;constexpr <span class="keywordtype">int</span> <a class="code" href="windows_2open_8hpp.html#ae477ca5323e49dcb433426280be75067">O_CLOEXEC</a> = 0;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00043"></a><span
  class="lineno">   43</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">// TODO(andschwa): Handle specified creation permissions in `mode_t mode`. See</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">// MESOS-3176.</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">// NOTE: This function always opens files in non-overlapped mode, because</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment">// we only support overlapped pipes and sockets through the `os::pi
 pe`</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="comment">// and `os::socket` functions.</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;int_fd&gt;</a> <a class="code" href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca">open</a>(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>, <span class="keywordtype">int</span> oflag, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a8a35dd1207a16dfa8b1d4163176d828c">mode_t</a> <a class="code" href="namespaceos_1_1stat.html#afc51654ad486693167c300612bf8ebfa">mode</a> = 0)</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;{</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  std::wstring <a class="code" href="namespaceinter
 nal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a> = <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">::internal::windows::longpath</a>(path);</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;  <span class="comment">// Map the POSIX `oflag` access flags.</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;  <span class="comment">// O_APPEND: Write only appends.</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;  <span class="comment">// NOTE: We choose a `write` flag here because emulating `O_APPEND`</span></div><div class="line"><a na
 me="l00060"></a><span class="lineno">   60</span>&#160;  <span class="comment">// requires granting the `FILE_APPEND_DATA` access right, but not</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="comment">// the `FILE_WRITE_DATA` access right, which `GENERIC_WRITE` would</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="comment">// otherwise grant.</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  <span class="keyword">const</span> DWORD <a class="code" href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">write</a> = (oflag &amp; O_APPEND) ? FILE_APPEND_DATA : GENERIC_WRITE;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;  DWORD <a class="code" href="namespaceos.html#a426a9c189f65b7e3f63e16eb11ec73c3">access</a>
 ;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  <span class="keywordflow">switch</span> (oflag &amp; (O_RDONLY | O_WRONLY | O_RDWR)) {</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    <span class="keywordflow">case</span> O_RDONLY: {</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;      access = GENERIC_READ;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;      <span class="keywordflow">break</span>;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    }</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    <span class="keywordflow">case</span> O_WRONLY: {</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;      access = <a class="code" href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">write</a>;</div><div class="line"><a name="l000
 73"></a><span class="lineno">   73</span>&#160;      <span class="keywordflow">break</span>;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    }</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    <span class="keywordflow">case</span> O_RDWR: {</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;      access = GENERIC_READ | <a class="code" href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">write</a>;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;      <span class="keywordflow">break</span>;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    }</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;      <span class="keywordflow">return</span> <a c
 lass="code" href="classError.html">Error</a>(<span class="stringliteral">&quot;Access mode not specified.&quot;</span>);</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    }</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;  }</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;  <span class="comment">// Map the POSIX `oflag` creation flags.</span></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  DWORD <a class="code" href="namespacecgroups.html#a2ecc89636706df947027a4c3c2100fbe">create</a>;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <span class="keywordflow">switch</span> (oflag &amp; (O_CREAT | O_EXCL | O_TRUNC)) {</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    <span class="keywordfl
 ow">case</span> O_CREAT: {</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;      <span class="comment">// Create a new file or open an existing file.</span></div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;      create = OPEN_ALWAYS;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;      <span class="keywordflow">break</span>;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    }</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    <span class="keywordflow">case</span> O_CREAT | O_EXCL:</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    <span class="keywordflow">case</span> O_CREAT | O_EXCL | O_TRUNC: {</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;      <span class="comment">// Create a new file, but fail if it already exists.</span></div><d
 iv class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;      <span class="comment">// Ignore `O_TRUNC` with `O_CREAT | O_EXCL`</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;      create = CREATE_NEW;</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;      <span class="keywordflow">break</span>;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    }</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    <span class="keywordflow">case</span> O_CREAT | O_TRUNC: {</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;      <span class="comment">// Truncate file if it already exists.</span></div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;      create = CREATE_ALWAYS;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;      <span cla
 ss="keywordflow">break</span>;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    }</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    <span class="keywordflow">case</span> O_EXCL:</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    <span class="keywordflow">case</span> O_EXCL | O_TRUNC: {</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">&quot;`O_EXCL` is undefined without `O_CREAT`.&quot;</span>);</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    }</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="keywordflow">case</span> O_TRUNC: {</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;      <span class="comm
 ent">// Truncate file if it exists, otherwise fail.</span></div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;      create = TRUNCATE_EXISTING;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;      <span class="keywordflow">break</span>;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    }</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;      <span class="comment">// Open file if it exists, otherwise fail.</span></div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;      create = OPEN_EXISTING;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;      <span class="keywordflow">break</span>;</div><div class="line"><a name="l00117"></a><span class="lineno">  11
 7</span>&#160;    }</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;  }</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  <span class="keyword">const</span> <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a> handle = ::CreateFileW(</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;      longpath.data(),</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      <a class="code" href="namespaceos.html#a426a9c189f65b7e3f63e16eb11ec73c3">access</a>,</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;      <span class="comment">// Share all access so we don&#39;t lock the file.</span></div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;      FILE_SHARE
 _READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;      <span class="comment">// Disable inheritance by default.</span></div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;      <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;      <a class="code" href="namespacecgroups.html#a2ecc89636706df947027a4c3c2100fbe">create</a>,</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;      FILE_ATTRIBUTE_NORMAL,</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;      <span class="comment">// No template file.</span></div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;      <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a na
 me="l00132"></a><span class="lineno">  132</span>&#160;  <span class="keywordflow">if</span> (handle == INVALID_HANDLE_VALUE) {</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  }</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  <span class="keywordflow">return</span> handle;</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;}</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140<
 /span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_WINDOWS_OPEN_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
 <div class="ttc" id="windows_2open_8hpp_html_a3e8a4870d44496f4236c6c7e32722d97"><div class="ttname"><a href="windows_2open_8hpp.html#a3e8a4870d44496f4236c6c7e32722d97">O_NONBLOCK</a></div><div class="ttdeci">constexpr int O_NONBLOCK</div><div class="ttdef"><b>Definition:</b> open.hpp:31</div></div>
 <div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
-<div class="ttc" id="namespaceos_html_a73da9d49515dfff761c4887c3d6032c0"><div class="ttname"><a href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">os::write</a></div><div class="ttdeci">ssize_t write(const int_fd &amp;fd, const void *data, size_t size)</div><div class="ttdef"><b>Definition:</b> write.hpp:26</div></div>
+<div class="ttc" id="namespaceos_html_a73da9d49515dfff761c4887c3d6032c0"><div class="ttname"><a href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">os::write</a></div><div class="ttdeci">ssize_t write(const int_fd &amp;fd, const void *data, size_t size)</div><div class="ttdef"><b>Definition:</b> write.hpp:72</div></div>
 <div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
 <div class="ttc" id="windows_2open_8hpp_html_a90f563755a3487471e47a64aa01daf2c"><div class="ttname"><a href="windows_2open_8hpp.html#a90f563755a3487471e47a64aa01daf2c">O_SYNC</a></div><div class="ttdeci">constexpr int O_SYNC</div><div class="ttdef"><b>Definition:</b> open.hpp:37</div></div>
 <div class="ttc" id="namespaceos_html_aaf5d5468adc1b85cf9bb7126e70807ca"><div class="ttname"><a href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca">os::open</a></div><div class="ttdeci">Try&lt; int_fd &gt; open(const std::string &amp;path, int oflag, mode_t mode=0)</div><div class="ttdef"><b>Definition:</b> open.hpp:35</div></div>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/windows_2pipe_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2pipe_8hpp.html b/content/api/latest/c++/windows_2pipe_8hpp.html
index cadb0b5..c8d3795 100644
--- a/content/api/latest/c++/windows_2pipe_8hpp.html
+++ b/content/api/latest/c++/windows_2pipe_8hpp.html
@@ -56,8 +56,12 @@
 </div><!--header-->
 <div class="contents">
 <div class="textblock"><code>#include &lt;array&gt;</code><br />
+<code>#include &lt;string&gt;</code><br />
+<code>#include &lt;<a class="el" href="stout_2include_2stout_2check_8hpp_source.html">stout/check.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="error_8hpp_source.html">stout/error.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="try_8hpp_source.html">stout/try.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="uuid_8hpp_source.html">stout/uuid.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp_source.html">stout/windows.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="int__fd_8hpp_source.html">stout/os/int_fd.hpp</a>&gt;</code><br />
 </div>
 <p><a href="windows_2pipe_8hpp_source.html">Go to the source code of this file.</a></p>
@@ -69,8 +73,8 @@ Namespaces</h2></td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
 Functions</h2></td></tr>
-<tr class="memitem:aada7738a90123ea91fcd4b60693c2a51"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; std::array&lt; int, 2 &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51">os::pipe</a> ()</td></tr>
-<tr class="separator:aada7738a90123ea91fcd4b60693c2a51"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaf74ddc18d833f8cbea1bdc81a4b24b8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; std::array&lt; <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>, 2 &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#aaf74ddc18d833f8cbea1bdc81a4b24b8">os::pipe</a> (bool read_overlapped=true, bool write_overlapped=true)</td></tr>
+<tr class="separator:aaf74ddc18d833f8cbea1bdc81a4b24b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 </div><!-- contents -->
 <!-- start footer part -->


[03/13] mesos-site git commit: Updated the website built from mesos SHA: 21305ab.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/windows_2pipe_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2pipe_8hpp_source.html b/content/api/latest/c++/windows_2pipe_8hpp_source.html
index 093e89e..c481530 100644
--- a/content/api/latest/c++/windows_2pipe_8hpp_source.html
+++ b/content/api/latest/c++/windows_2pipe_8hpp_source.html
@@ -52,15 +52,21 @@
 <div class="title">pipe.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="windows_2pipe_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">//
 </span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div clas
 s="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_PIPE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_PIPE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div c
 lass="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment">// Create pipes for interprocess communication. Since the pipes cannot</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment">// be used directly by Posix `read/write&#39; functions they are wrapped</span></div><div class="l
 ine"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment">// in file descriptors, a process-local concept.</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;std::array&lt;int_fd, 2&gt;</a>&gt; <a class="code" href="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51">pipe</a>()</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;{</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;  <span class="comment">// Create inheritable pipe, as described in MSDN[1].</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;  <span class="comment">// [1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa365782(v=vs.85).aspx</span><
 /div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;  SECURITY_ATTRIBUTES securityAttr;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;  securityAttr.nLength = <span class="keyword">sizeof</span>(SECURITY_ATTRIBUTES);</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;  securityAttr.bInheritHandle = TRUE;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;  securityAttr.lpSecurityDescriptor = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;  <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a> read_handle;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;  <a class="code" href="namespacerouting_1_1queueing_1
 _1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a> write_handle;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;  <span class="keyword">const</span> BOOL result =</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;    ::CreatePipe(&amp;read_handle, &amp;write_handle, &amp;securityAttr, 0);</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;  <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;  }</div><div class="line"><a name="l00047"
 ></a><span class="lineno">   47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;  <span class="keywordflow">return</span> std::array&lt;int_fd, 2&gt;{<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>(read_handle), <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>(write_handle)};</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;}</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_WINDOWS_PIPE_HPP__</span></div><div class="ttc" id="classTry_html"><div class="tt
 name"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
+<a href="windows_2pipe_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">//
 </span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div clas
 s="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_PIPE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_PIPE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2check_8hpp.html">stout/check.hpp</a>&gt;</span></div><div class="line"><a name="l000
 20"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="uuid_8hpp.html">stout/uuid.hpp</a>&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span> <span class="comment">// For `windows.h`.</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="p
 reprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">// Returns an &quot;anonymous&quot; pipe that can be used for interprocess communication.</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">// Since anonymous pipes do not support overlapped IO, we emulate it with an</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">// uniquely named pipe.</span></div><div class="line"><a nam
 e="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">// NOTE: Overlapped pipes passed to child processes behave weirdly, so we have</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">// the ability to create non overlapped pipe handles.</span></div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="namespaceos.html#aaf74ddc18d833f8cbea1bdc81a4b24b8">   35</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;std::array&lt;int_fd, 2&gt;</a>&gt; <a class="code" href="namespaceos.html#afefbea8a88b84bed66580372accb18a9">pipe</a>(</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;    <span class="keywordtype">bool</span> read_overlapped = <span class="keyword">true</span>, <span class="ke
 ywordtype">bool</span> write_overlapped = <span class="keyword">true</span>)</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;  <span class="keyword">const</span> DWORD read_flags = read_overlapped ? FILE_FLAG_OVERLAPPED : 0;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;  <span class="keyword">const</span> DWORD write_flags = write_overlapped ? FILE_FLAG_OVERLAPPED : 0;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;  std::wstring <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a> =</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;    wide_stringify(<span class="stringliteral">&quot;\\\\.\\pipe\\mesos-pipe-&quot;</span> + <a class="code" href="structid_1_1UUID.html#a6d8296fba33c5d84a64e4a882fcdc280">id::UUID::random</a>
 ().toString());</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;  <span class="comment">// The named pipe name must be at most 256 characters [1]. It doesn&#39;t say if</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;  <span class="comment">// it includes the null terminator, so we limit to 255 to be safe. Since the</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;  <span class="comment">// UUID name is fixed length, this is just a sanity check.</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;  <span class="comment">// [1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa365150(v=vs.85).aspx // NOLINT(whitespace/line_l
 ength)</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;  CHECK_LE(name.size(), 255);</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;  <span class="comment">// Create the named pipe. To avoid the time-of-check vs time-of-use attack,</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;  <span class="comment">// we have the `FILE_FLAG_FIRST_PIPE_INSTANCE` flag to fail if the pipe</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;  <span class="comment">// already exists.</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  <span class="comment">// TODO(akagup): The buffer size is currently require
 d, since we don&#39;t have</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;  <span class="comment">// IOCP yet. When testing IOCP, it should be 0, but after that, we can try</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;  <span class="comment">// restoring the buffer for an optimization.</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;  <span class="keyword">const</span> <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a> read_handle = ::CreateNamedPipeW(</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;      name.data(),</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;      PIPE_ACCESS_INBOUND | FILE_FLAG_FIRST_PIPE_INSTANCE | read_flags,</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;      PI
 PE_TYPE_BYTE | PIPE_WAIT | PIPE_REJECT_REMOTE_CLIENTS,</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;      1,        <span class="comment">// Max pipe instances.</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;      4096,     <span class="comment">// Inbound buffer size.</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;      4096,     <span class="comment">// Outbound buffer size.</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;      0,        <span class="comment">// Pipe timeout for connections.</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;      <span class="keyword">nullptr</span>); <span class="comment">// Security attributes (not inheritable).</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div><div class="line"><a name="l00067"></
 a><span class="lineno">   67</span>&#160;  <span class="keywordflow">if</span> (read_handle == INVALID_HANDLE_VALUE) {</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;  }</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;  <span class="comment">// To create a client named pipe, we use the generic `CreateFile` API. We</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;  <span class="comment">// don&#39;t use the other named pipe APIs, since they are used for different</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;  <span class="comment">// purposes. For example, `
 ConnectNamedPipe` is similar to a server calling</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;  <span class="comment">// `accept` for sockets and `CallNamedPipe` is used for message type pipes,</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  <span class="comment">// but we want a byte stream pipe.</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  <span class="comment">// See https://msdn.microsoft.com/en-us/library/windows/desktop/aa365598%28v=vs.85%29.aspx?f=255&amp;MSPPError=-2147217396 // NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  <span class="keyword">const</span> <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594b
 b8292f">HANDLE</a> write_handle = ::CreateFileW(</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;      name.data(),</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;      GENERIC_WRITE,</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;      0,</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;      <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;      OPEN_EXISTING,</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;      FILE_ATTRIBUTE_NORMAL | write_flags,</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;      <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#16
 0;  <span class="keyword">const</span> <a class="code" href="classWindowsError.html">WindowsError</a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  <span class="keywordflow">if</span> (write_handle == INVALID_HANDLE_VALUE) {</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    ::CloseHandle(read_handle);</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  }</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</
 span>&#160;  <span class="keywordflow">return</span> std::array&lt;int_fd, 2&gt;{<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>(read_handle, read_overlapped),</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;                               <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>(write_handle, write_overlapped)};</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;}</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_WINDOWS_PIPE_HPP__</span></div><div class="ttc" i
 d="namespaceos_html_afefbea8a88b84bed66580372accb18a9"><div class="ttname"><a href="namespaceos.html#afefbea8a88b84bed66580372accb18a9">os::pipe</a></div><div class="ttdeci">Try&lt; std::array&lt; int, 2 &gt; &gt; pipe()</div><div class="ttdef"><b>Definition:</b> pipe.hpp:26</div></div>
+<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
 <div class="ttc" id="classWindowsError_html"><div class="ttname"><a href="classWindowsError.html">WindowsError</a></div><div class="ttdef"><b>Definition:</b> error.hpp:108</div></div>
 <div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
+<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">windows.hpp</a></div></div>
+<div class="ttc" id="stout_2include_2stout_2check_8hpp_html"><div class="ttname"><a href="stout_2include_2stout_2check_8hpp.html">check.hpp</a></div></div>
+<div class="ttc" id="structid_1_1UUID_html_a6d8296fba33c5d84a64e4a882fcdc280"><div class="ttname"><a href="structid_1_1UUID.html#a6d8296fba33c5d84a64e4a882fcdc280">id::UUID::random</a></div><div class="ttdeci">static UUID random()</div><div class="ttdef"><b>Definition:</b> uuid.hpp:38</div></div>
 <div class="ttc" id="namespacerouting_1_1queueing_1_1ingress_html_a934208b6017d0a9aed90b6594bb8292f"><div class="ttname"><a href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">routing::queueing::ingress::HANDLE</a></div><div class="ttdeci">constexpr Handle HANDLE</div><div class="ttdef"><b>Definition:</b> ingress.hpp:37</div></div>
 <div class="ttc" id="error_8hpp_html"><div class="ttname"><a href="error_8hpp.html">error.hpp</a></div></div>
+<div class="ttc" id="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec_html_ae58e703656ab4a1bd5d9870441236727"><div class="ttname"><a href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">mesos::internal::slave::cni::spec::error</a></div><div class="ttdeci">std::string error(const std::string &amp;msg, uint32_t code)</div></div>
 <div class="ttc" id="try_8hpp_html"><div class="ttname"><a href="try_8hpp.html">try.hpp</a></div></div>
-<div class="ttc" id="namespaceos_html_aada7738a90123ea91fcd4b60693c2a51"><div class="ttname"><a href="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51">os::pipe</a></div><div class="ttdeci">Try&lt; std::array&lt; int, 2 &gt; &gt; pipe()</div><div class="ttdef"><b>Definition:</b> pipe.hpp:26</div></div>
 <div class="ttc" id="int__fd_8hpp_html"><div class="ttname"><a href="int__fd_8hpp.html">int_fd.hpp</a></div></div>
+<div class="ttc" id="uuid_8hpp_html"><div class="ttname"><a href="uuid_8hpp.html">uuid.hpp</a></div></div>
 <div class="ttc" id="int__fd_8hpp_html_aea4dbda01c90455f158ffa9b924c2f07"><div class="ttname"><a href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a></div><div class="ttdeci">int int_fd</div><div class="ttdef"><b>Definition:</b> int_fd.hpp:35</div></div>
+<div class="ttc" id="namespaceos_1_1Shell_html_acfe16ef2b1146ad49a8651c0a457ce46"><div class="ttname"><a href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">os::Shell::name</a></div><div class="ttdeci">constexpr const char * name</div><div class="ttdef"><b>Definition:</b> shell.hpp:43</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/windows_2sendfile_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2sendfile_8hpp.html b/content/api/latest/c++/windows_2sendfile_8hpp.html
index bb832f3..509368f 100644
--- a/content/api/latest/c++/windows_2sendfile_8hpp.html
+++ b/content/api/latest/c++/windows_2sendfile_8hpp.html
@@ -56,8 +56,10 @@
 </div><!--header-->
 <div class="contents">
 <div class="textblock"><code>#include &lt;<a class="el" href="error_8hpp_source.html">stout/error.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="result_8hpp_source.html">stout/result.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="try_8hpp_source.html">stout/try.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp_source.html">stout/windows.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="overlapped_8hpp_source.html">stout/internal/windows/overlapped.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="int__fd_8hpp_source.html">stout/os/int_fd.hpp</a>&gt;</code><br />
 </div>
 <p><a href="windows_2sendfile_8hpp_source.html">Go to the source code of this file.</a></p>
@@ -69,6 +71,8 @@ Namespaces</h2></td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
 Functions</h2></td></tr>
+<tr class="memitem:ad8eec8c973d58ad0db1a7b6d81e77e96"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classResult.html">Result</a>&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#ad8eec8c973d58ad0db1a7b6d81e77e96">os::sendfile_async</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;s, const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, size_t length, OVERLAPPED *overlapped)</td></tr>
+<tr class="separator:ad8eec8c973d58ad0db1a7b6d81e77e96"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ac4d8cf58aea1781753bb27e1d40bdee0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; <a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a>, <a class="el" href="error_8hpp.html#a176f6fc34ea37d40201853a52a475762">SocketError</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#ac4d8cf58aea1781753bb27e1d40bdee0">os::sendfile</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;s, const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, off_t offset, size_t length)</td></tr>
 <tr class="separator:ac4d8cf58aea1781753bb27e1d40bdee0"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/windows_2sendfile_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2sendfile_8hpp_source.html b/content/api/latest/c++/windows_2sendfile_8hpp_source.html
index ef276fb..a0c04b2 100644
--- a/content/api/latest/c++/windows_2sendfile_8hpp_source.html
+++ b/content/api/latest/c++/windows_2sendfile_8hpp_source.html
@@ -52,15 +52,31 @@
 <div class="title">sendfile.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="windows_2sendfile_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment
 ">//</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div 
 class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_SENDFILE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_SENDFILE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;<
 /span> <span class="comment">// For `winioctl.h`.</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment">// Returns the amount of bytes written from the input file</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment">// descriptor to the output socket.</span>
 </div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment">// On error, `Try&lt;ssize_t, SocketError&gt;` contains the error.</span></div><div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="namespaceos.html#ac4d8cf58aea1781753bb27e1d40bdee0">   27</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;ssize_t, SocketError&gt;</a> <a class="code" href="namespaceos.html#a625f02f99e88345b3e8f59223d7aa237">sendfile</a>(</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;    <span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; s, <span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, off_t offset, <span class="keywordtype">size_t</span> length)</div><div class="line"><a name="l00029"></a><span c
 lass="lineno">   29</span>&#160;{</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;  <span class="comment">// NOTE: We convert the `offset` here to avoid potential data loss</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;  <span class="comment">// in the type casting and bitshifting below.</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;  uint64_t offset_ = offset;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;  OVERLAPPED from = {</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    0,</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;    0,</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;    {<span class="keyword">static_cast&lt;</span>DWORD<spa
 n class="keyword">&gt;</span>(offset_), static_cast&lt;DWORD&gt;(offset_ &gt;&gt; 32)},</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;    <span class="keyword">nullptr</span>};</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;  CHECK_LE(length, MAXDWORD);</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;  <span class="keywordflow">if</span> (::TransmitFile(s, fd, static_cast&lt;DWORD&gt;(length), 0, &amp;from, <span class="keyword">nullptr</span>, 0) ==</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;        FALSE &amp;&amp;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;      (::WSAGetLastError() == WSA_IO_PENDING ||</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;       ::WSAGetLastError() =
 = ERROR_IO_PENDING)) {</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    DWORD sent = 0;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    DWORD <a class="code" href="namespaceflags.html">flags</a> = 0;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    <span class="keywordflow">if</span> (::WSAGetOverlappedResult(s, &amp;from, &amp;sent, TRUE, &amp;flags) == TRUE) {</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;      <span class="keywordflow">return</span> sent;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    }</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;  }</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053
 "></a><span class="lineno">   53</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="error_8hpp.html#a176f6fc34ea37d40201853a52a475762">SocketError</a>();</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;}</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_WINDOWS_SENDFILE_HPP__</span></div><div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
+<a href="windows_2sendfile_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment
 ">//</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div 
 class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_SENDFILE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_SENDFILE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="result_8hpp.html">stout/result.hpp</a>&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a na
 me="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span> <span class="comment">// For `winioctl.h`.</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="overlapped_8hpp.html">stout/internal/windows/overlapped.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</sp
 an>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="namespaceos.html#ad8eec8c973d58ad0db1a7b6d81e77e96">   27</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classResult.html">Result&lt;size_t&gt;</a> <a class="code" href="namespaceos.html#ad8eec8c973d58ad0db1a7b6d81e77e96">sendfile_async</a>(</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;    <span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; s, <span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, <span class="keywordtype">size_t</span> length, OVERLAPPED* overlapped)</div><div class="line"><a name="l00029"></
 a><span class="lineno">   29</span>&#160;{</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;  <span class="comment">// `::TransmitFile` can only send `INT_MAX - 1` bytes.</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;  CHECK_LE(length, INT_MAX - 1);</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;  <span class="keyword">const</span> BOOL result = ::TransmitFile(</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;      s,                          <span class="comment">// Sending socket.</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;      fd,                         <span class="comment">// File to be sent.</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;      static_cast&lt;
 DWORD&gt;(length), <span class="comment">// Number of bytes to be sent from the file.</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;      0,                          <span class="comment">// Bytes per send. 0 chooses system default.</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;      overlapped,                 <span class="comment">// Overlapped object with file offset.</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;      <span class="keyword">nullptr</span>,                    <span class="comment">// Data before and after file send.</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;      0);                         <span class="comment">// Flags.</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>
 &#160;  <span class="keyword">const</span> <a class="code" href="classWindowsError.html">WindowsError</a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;  <span class="keywordflow">if</span> (result == FALSE &amp;&amp;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;      (error.<a class="code" href="classWindowsErrorBase.html#a0901c393db6d19b248f24faeb638275d">code</a> == WSA_IO_PENDING || error.<a class="code" href="classWindowsErrorBase.html#a0901c393db6d19b248f24faeb638275d">code</a> == ERROR_IO_PENDING)) {</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;  }</div><div class="lin
 e"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;  <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;  }</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;  <span class="keywordflow">return</span> length;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;}</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno">   
 55</span>&#160;<span class="comment">// Returns the amount of bytes written from the input file</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment">// descriptor to the output socket.</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="comment">// On error, `Try&lt;ssize_t, SocketError&gt;` contains the error.</span></div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="namespaceos.html#ac4d8cf58aea1781753bb27e1d40bdee0">   58</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;ssize_t, SocketError&gt;</a> <a class="code" href="namespaceos.html#a625f02f99e88345b3e8f59223d7aa237">sendfile</a>(</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    <span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&a
 mp; s, <span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, off_t offset, <span class="keywordtype">size_t</span> length)</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;{</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="keywordflow">if</span> (offset &lt; 0) {</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="error_8hpp.html#a176f6fc34ea37d40201853a52a475762">SocketError</a>(WSAEINVAL);</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  }</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;  <span class="comment">// NOTE: We convert the `offset` here to avoid potential data loss</
 span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  <span class="comment">// in the type casting and bitshifting below.</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  <span class="keyword">const</span> uint64_t offset_ = offset;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;  <span class="keyword">const</span> <a class="code" href="classTry.html">Try&lt;OVERLAPPED&gt;</a> from_ =</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    <a class="code" href="namespaceinternal_1_1windows.html#a388bd9a30ab487f5d035e542187e379a">::internal::windows::init_overlapped_for_sync_io</a>();</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;  <span 
 class="keywordflow">if</span> (from_.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="error_8hpp.html#a176f6fc34ea37d40201853a52a475762">SocketError</a>(from_.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;  }</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;  OVERLAPPED from = from_.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  from.Offset = <span class="keyword">static_cast&lt;</span>DWORD<span class="keyword">&gt;</span>(offset_);</div><div c
 lass="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  from.OffsetHigh = <span class="keyword">static_cast&lt;</span>DWORD<span class="keyword">&gt;</span>(offset_ &gt;&gt; 32);</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <span class="keyword">const</span> <a class="code" href="classResult.html">Result&lt;size_t&gt;</a> result = <a class="code" href="namespaceos.html#ad8eec8c973d58ad0db1a7b6d81e77e96">sendfile_async</a>(s, fd, length, &amp;from);</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  <span class="keywordflow">if</span> (result.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="error_8hpp.html#a176f6fc34ea37d40
 201853a52a475762">SocketError</a>(result.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  }</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  <span class="keywordflow">if</span> (result.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    <span class="keywordflow">return</span> result.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>();</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  }</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;  DWO
 RD sent = 0;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  DWORD <a class="code" href="namespaceflags.html">flags</a> = 0;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <span class="keywordflow">if</span> (::WSAGetOverlappedResult(s, &amp;from, &amp;sent, TRUE, &amp;flags) == TRUE) {</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    <span class="keywordflow">return</span> sent;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  }</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="error_8hpp.html#a176f6fc34ea37d40201853a52a475762">SocketError</a>();</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;}</div><div class="line"><a na
 me="l00097"></a><span class="lineno">   97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_WINDOWS_SENDFILE_HPP__</span></div><div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T &amp; get()&amp;</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
+<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
+<div class="ttc" id="overlapped_8hpp_html"><div class="ttname"><a href="overlapped_8hpp.html">overlapped.hpp</a></div></div>
+<div class="ttc" id="classResult_html_a521adf96f5c27d26d6b1d580aae8aaee"><div class="ttname"><a href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">Result::error</a></div><div class="ttdeci">static Result&lt; T &gt; error(const std::string &amp;message)</div><div class="ttdef"><b>Definition:</b> result.hpp:53</div></div>
+<div class="ttc" id="namespaceinternal_1_1windows_html_a388bd9a30ab487f5d035e542187e379a"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a388bd9a30ab487f5d035e542187e379a">internal::windows::init_overlapped_for_sync_io</a></div><div class="ttdeci">Try&lt; OVERLAPPED &gt; init_overlapped_for_sync_io()</div><div class="ttdef"><b>Definition:</b> overlapped.hpp:30</div></div>
+<div class="ttc" id="classWindowsError_html"><div class="ttname"><a href="classWindowsError.html">WindowsError</a></div><div class="ttdef"><b>Definition:</b> error.hpp:108</div></div>
 <div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
+<div class="ttc" id="result_8hpp_html"><div class="ttname"><a href="result_8hpp.html">result.hpp</a></div></div>
 <div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">windows.hpp</a></div></div>
+<div class="ttc" id="classResult_html"><div class="ttname"><a href="classResult.html">Result</a></div><div class="ttdef"><b>Definition:</b> check.hpp:30</div></div>
 <div class="ttc" id="error_8hpp_html_a176f6fc34ea37d40201853a52a475762"><div class="ttname"><a href="error_8hpp.html#a176f6fc34ea37d40201853a52a475762">SocketError</a></div><div class="ttdeci">ErrnoError SocketError</div><div class="ttdef"><b>Definition:</b> error.hpp:33</div></div>
+<div class="ttc" id="classWindowsErrorBase_html_a0901c393db6d19b248f24faeb638275d"><div class="ttname"><a href="classWindowsErrorBase.html#a0901c393db6d19b248f24faeb638275d">WindowsErrorBase::code</a></div><div class="ttdeci">const DWORD code</div><div class="ttdef"><b>Definition:</b> error.hpp:29</div></div>
+<div class="ttc" id="classResult_html_aedf79f3b14dcda5791b84a64ada4d412"><div class="ttname"><a href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">Result::get</a></div><div class="ttdeci">const T &amp; get() const </div><div class="ttdef"><b>Definition:</b> result.hpp:115</div></div>
+<div class="ttc" id="classTry_html_aec4a11ddd3c036e889d90b7eb6258ba7"><div class="ttname"><a href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">Try::error</a></div><div class="ttdeci">static Try error(const E &amp;e)</div><div class="ttdef"><b>Definition:</b> try.hpp:42</div></div>
 <div class="ttc" id="error_8hpp_html"><div class="ttname"><a href="error_8hpp.html">error.hpp</a></div></div>
+<div class="ttc" id="structNone_html"><div class="ttname"><a href="structNone.html">None</a></div><div class="ttdef"><b>Definition:</b> none.hpp:27</div></div>
+<div class="ttc" id="classTry_html_a0b98f95163b8a38daafd1651b043a276"><div class="ttname"><a href="classTry.html#a0b98f95163b8a38daafd1651b043a276">Try::isError</a></div><div class="ttdeci">bool isError() const </div><div class="ttdef"><b>Definition:</b> try.hpp:71</div></div>
+<div class="ttc" id="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec_html_ae58e703656ab4a1bd5d9870441236727"><div class="ttname"><a href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">mesos::internal::slave::cni::spec::error</a></div><div class="ttdeci">std::string error(const std::string &amp;msg, uint32_t code)</div></div>
 <div class="ttc" id="try_8hpp_html"><div class="ttname"><a href="try_8hpp.html">try.hpp</a></div></div>
 <div class="ttc" id="namespaceos_html_a625f02f99e88345b3e8f59223d7aa237"><div class="ttname"><a href="namespaceos.html#a625f02f99e88345b3e8f59223d7aa237">os::sendfile</a></div><div class="ttdeci">Try&lt; ssize_t, SocketError &gt; sendfile(int s, int fd, off_t offset, size_t length)</div><div class="ttdef"><b>Definition:</b> sendfile.hpp:42</div></div>
 <div class="ttc" id="int__fd_8hpp_html"><div class="ttname"><a href="int__fd_8hpp.html">int_fd.hpp</a></div></div>
+<div class="ttc" id="classResult_html_a85eaa52037223d71092e65701c166562"><div class="ttname"><a href="classResult.html#a85eaa52037223d71092e65701c166562">Result::isSome</a></div><div class="ttdeci">bool isSome() const </div><div class="ttdef"><b>Definition:</b> result.hpp:111</div></div>
+<div class="ttc" id="classResult_html_aeca16ad17d299ad885c9b46c83b12a3d"><div class="ttname"><a href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">Result::isError</a></div><div class="ttdeci">bool isError() const </div><div class="ttdef"><b>Definition:</b> result.hpp:113</div></div>
 <div class="ttc" id="int__fd_8hpp_html_aea4dbda01c90455f158ffa9b924c2f07"><div class="ttname"><a href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a></div><div class="ttdeci">int int_fd</div><div class="ttdef"><b>Definition:</b> int_fd.hpp:35</div></div>
+<div class="ttc" id="namespaceos_html_ad8eec8c973d58ad0db1a7b6d81e77e96"><div class="ttname"><a href="namespaceos.html#ad8eec8c973d58ad0db1a7b6d81e77e96">os::sendfile_async</a></div><div class="ttdeci">Result&lt; size_t &gt; sendfile_async(const int_fd &amp;s, const int_fd &amp;fd, size_t length, OVERLAPPED *overlapped)</div><div class="ttdef"><b>Definition:</b> sendfile.hpp:27</div></div>
 <div class="ttc" id="namespaceflags_html"><div class="ttname"><a href="namespaceflags.html">flags</a></div><div class="ttdef"><b>Definition:</b> parse.hpp:33</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->


[10/13] mesos-site git commit: Updated the website built from mesos SHA: 21305ab.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/dir_3bd05d674f9d85fce6785660a08f69c2.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/dir_3bd05d674f9d85fce6785660a08f69c2.html b/content/api/latest/c++/dir_3bd05d674f9d85fce6785660a08f69c2.html
index 2c4d596..e26d593 100644
--- a/content/api/latest/c++/dir_3bd05d674f9d85fce6785660a08f69c2.html
+++ b/content/api/latest/c++/dir_3bd05d674f9d85fce6785660a08f69c2.html
@@ -63,6 +63,8 @@ Files</h2></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:longpath_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="longpath_8hpp.html">longpath.hpp</a> <a href="longpath_8hpp_source.html">[code]</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:overlapped_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="overlapped_8hpp.html">overlapped.hpp</a> <a href="overlapped_8hpp_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:pwd_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pwd_8hpp.html">pwd.hpp</a> <a href="pwd_8hpp_source.html">[code]</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:reparsepoint_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="reparsepoint_8hpp.html">reparsepoint.hpp</a> <a href="reparsepoint_8hpp_source.html">[code]</a></td></tr>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/docker__archive_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/docker__archive_8hpp_source.html b/content/api/latest/c++/docker__archive_8hpp_source.html
index a73ba5c..226bbcf 100644
--- a/content/api/latest/c++/docker__archive_8hpp_source.html
+++ b/content/api/latest/c++/docker__archive_8hpp_source.html
@@ -55,7 +55,7 @@
 <a href="docker__archive_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// or more contributor license agreements.  See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">// regarding copyright ownership.  The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><
 span class="lineno">    6</span>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// with the License.  You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">//     http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment">// d
 istributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __TEST_DOCKER_ARCHIVE_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __TEST_DOCKER_ARCHIVE_HPP__</span></div><di
 v class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="collect_8hpp.html">process/collect.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="owned_8hpp.html">process/owned.hpp</a>&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span cla
 ss="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="json_8hpp.html">stout/json.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="jsonify_8hpp.html">stout/jsonify.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="os_8hpp.html">stout/os.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="path_8hpp.html">stout/path.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<spa
 n class="preprocessor">#include &lt;<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="command__utils_8hpp.html">common/command_utils.hpp</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rootfs_8hpp.html">tests/containerizer/rootfs.hpp</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div clas
 s="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="keyword">using</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="keyword">using</span> <a class="code" href="classprocess_1_1Future.html">process::Future</a>;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="keyword">namespace </span>tests {</div><div class="line"><a name="l00043"></a><span clas
 s="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">// This represents a docker archive. It has the same format</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">// as that tarball generated by doing a &#39;docker save&#39;.</span></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1DockerArchive.html">   46</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1tests_1_1DockerArchive.html">DockerArchive</a></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;  <span class="comment">// Create a do
 cker test image tarball in docker registry directory.</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;  <span class="comment">// Users can define own entrypoint/cmd as JSON array of JSON string</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;  <span class="comment">// (e.g., `[\&quot;sh\&quot;, \&quot;-c\&quot;]`).</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  <span class="comment">// NOTE: The default value for `environment` includes some environment</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  <span class="comment">// variables which will cause problems if they are fed into one of Mesos&#39;</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;  <span clas
 s="comment">// built-in executors. This is on purpose, as the environment variables</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;  <span class="comment">// of the image should not be passed into built-in executors. Tests that</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;  <span class="comment">// use a custom executor should consider overriding this default.</span></div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1DockerArchive.html#a826aa2afe5f996a0cc370f671a0342b8">   58</a></span>&#160;  <span class="keyword">static</span> <a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> <a class="code" href="classmesos_1_1internal_1_1tests_1_1DockerArchive.html#a826aa2afe5f996a0cc370f671a0342b8">create</a>(</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;      <span class="k
 eyword">const</span> std::string&amp; directory,</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;      <span class="keyword">const</span> std::string&amp; <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>,</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;      <span class="keyword">const</span> std::string&amp; entrypoint = <span class="stringliteral">&quot;null&quot;</span>,</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;      <span class="keyword">const</span> std::string&amp; cmd = <span class="stringliteral">&quot;null&quot;</span>,</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;      <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a> = {</div><div class="line"><a nam
 e="l00064"></a><span class="lineno">   64</span>&#160;        {<span class="stringliteral">&quot;LD_LIBRARY_PATH=invalid&quot;</span>},</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;        {<span class="stringliteral">&quot;LIBPROCESS_IP=invalid&quot;</span>},</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;        {<span class="stringliteral">&quot;LIBPROCESS_PORT=invalid&quot;</span>}})</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  {</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespaceos.html#af0f3343df38b8241f66750a273d4a5a6">mkdir</a> = <a class="code" href="namespaceos.html#af0f3343df38b8241f66750a273d4a5a6">os::mkdir</a>(directory, <span class="keyword">true</span>);</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>
 &#160;    <span class="keywordflow">if</span> (mkdir.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">Failure</a>(<span class="stringliteral">&quot;Failed to create &#39;&quot;</span> + directory + <span class="stringliteral">&quot;&#39;: &quot;</span> + mkdir.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    }</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    <span class="keyword">const</span> std::string imagePath = <a class="code" href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a>(directory, name);</d
 iv><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    mkdir = <a class="code" href="namespaceos.html#af0f3343df38b8241f66750a273d4a5a6">os::mkdir</a>(imagePath);</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    <span class="keywordflow">if</span> (mkdir.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">Failure</a>(<span class="stringliteral">&quot;Failed to create docker test image directory &#39;&quot;</span> +</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;                     imagePath + <span class="stringliteral">&quot;&#39;: &quot;</span> + mkdir.<a class="code" href="classTr
 y.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    }</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    <span class="keyword">const</span> std::string layerId =</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;      <span class="stringliteral">&quot;815b809d588c80fd6ddf4d6ac244ad1c01ae4cbe0f91cc7480e306671ee9c346&quot;</span>;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    <span class="keyword">const</span> std::string layerPath = <a class="code" href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a>(imagePath, layerId);</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#1
 60;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    <span class="comment">// Create docker test image `repositories`.</span></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    <a class="code" href="structJSON_1_1Value.html">JSON::Value</a> repositories = <a class="code" href="namespaceJSON.html#ae2ea04c2ecd465a301a630a7f32cea44">JSON::parse</a>(<a class="code" href="namespacestrings.html#a7884a23bea2a6543b8a93ad48faabe0c">strings::format</a>(</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;        R<span class="stringliteral">&quot;~(</span></div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="stringliteral">        {</span></div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="stringliteral">            &quot;%s&quot;: {</span></div><div class="line"><a name="l00091"></a><span class="lineno
 ">   91</span>&#160;<span class="stringliteral">                &quot;latest&quot;: &quot;%s&quot;</span></div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="stringliteral">            }</span></div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="stringliteral">        })~&quot;,</span></div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="stringliteral">        name,</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="stringliteral">        layerId).</span><span class="keyword">get</span>()).get();</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a66ff2d5
 af4db53227f787281c0765d8d">write</a> = <a class="code" href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">os::write</a>(</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;        <a class="code" href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a>(imagePath, <span class="stringliteral">&quot;repositories&quot;</span>),</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(repositories));</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    <span class="keywordflow">if</span> (write.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;      <span class="keywordflow">re
 turn</span> <a class="code" href="structprocess_1_1Failure.html">Failure</a>(<span class="stringliteral">&quot;Failed to save docker test image &#39;repositories&#39;: &quot;</span> +</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;                     write.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    }</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    mkdir = <a class="code" href="namespaceos.html#af0f3343df38b8241f66750a273d4a5a6">os::mkdir</a>(layerPath);</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="keywordflow">if</span> (mkdir.isError()) {</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;      <span class="keywo
 rdflow">return</span> <a class="code" href="structprocess_1_1Failure.html">Failure</a>(<span class="stringliteral">&quot;Failed to create docker test image layer &#39;&quot;</span> +</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;                     layerId + <span class="stringliteral">&quot;&#39;: &quot;</span> + mkdir.error());</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    }</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <a class="code" href="structJSON_1_1Value.html">JSON::Value</a> <a class="code" href="namespacemesos_1_1uri_1_1docker.html#a001e34ad4b471e43d16e9f03e39a4566">manifest</a> = <a class="code" href="namespaceJSON.html#ae2ea04c2ecd465a301a630a7f32cea44">JSON::parse</a>(<a class="code" href="namespacestrings.html#a7884a23bea2a6543b8a93ad48faabe0c">strings::format</a>(</d
 iv><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;        R<span class="stringliteral">&quot;~(</span></div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;<span class="stringliteral">        {</span></div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;<span class="stringliteral">            &quot;id&quot;: &quot;815b809d588c80fd6ddf4d6ac244ad1c01ae4cbe0f91cc7480e306671ee9c346&quot;,</span></div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;<span class="stringliteral">            &quot;created&quot;: &quot;2016-03-02T17:16:00.167415955Z&quot;,</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;<span class="stringliteral">            &quot;container&quot;: &quot;eb53609036555d26c39bdccfa9850426934bdfde96111d099041689b2251a377&quot;,</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;<s
 pan class="stringliteral">            &quot;container_config&quot;: {</span></div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="stringliteral">                &quot;Hostname&quot;: &quot;eb5360903655&quot;,</span></div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;<span class="stringliteral">                &quot;Domainname&quot;: &quot;&quot;,</span></div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;<span class="stringliteral">                &quot;User&quot;: &quot;&quot;,</span></div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;<span class="stringliteral">                &quot;AttachStdin&quot;: false,</span></div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;<span class="stringliteral">                &quot;AttachStdout&quot;: false,</span></div><div class="line"><a name="l00124"></a><span class="lineno">  
 124</span>&#160;<span class="stringliteral">                &quot;AttachStderr&quot;: false,</span></div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;<span class="stringliteral">                &quot;Tty&quot;: false,</span></div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;<span class="stringliteral">                &quot;OpenStdin&quot;: false,</span></div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;<span class="stringliteral">                &quot;StdinOnce&quot;: false,</span></div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="stringliteral">                &quot;Env&quot;: null,</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;<span class="stringliteral">                &quot;Cmd&quot;: [</span></div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<span class="strin
 gliteral">                    &quot;/bin/sh&quot;,</span></div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;<span class="stringliteral">                    &quot;-c&quot;,</span></div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;<span class="stringliteral">                    &quot;#(nop) ADD file:81ba6f20bdb99e6c13c434a577069860b6656908031162083b1ac9c02c71dd9f in /&quot;</span></div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;<span class="stringliteral">                ],</span></div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="stringliteral">                &quot;Image&quot;: &quot;&quot;,</span></div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="stringliteral">                &quot;Volumes&quot;: null,</span></div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<
 span class="stringliteral">                &quot;WorkingDir&quot;: &quot;&quot;,</span></div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="stringliteral">                &quot;Entrypoint&quot;: null,</span></div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;<span class="stringliteral">                &quot;OnBuild&quot;: null,</span></div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;<span class="stringliteral">                &quot;Labels&quot;: null</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;<span class="stringliteral">            },</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;<span class="stringliteral">            &quot;docker_version&quot;: &quot;1.9.1&quot;,</span></div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;<span class="stringliteral">    
         &quot;config&quot;: {</span></div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;<span class="stringliteral">                &quot;Hostname&quot;: &quot;eb5360903655&quot;,</span></div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;<span class="stringliteral">                &quot;Domainname&quot;: &quot;&quot;,</span></div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;<span class="stringliteral">                &quot;User&quot;: &quot;&quot;,</span></div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;<span class="stringliteral">                &quot;AttachStdin&quot;: false,</span></div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;<span class="stringliteral">                &quot;AttachStdout&quot;: false,</span></div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;<span class="stringliter
 al">                &quot;AttachStderr&quot;: false,</span></div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;<span class="stringliteral">                &quot;Tty&quot;: false,</span></div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;<span class="stringliteral">                &quot;OpenStdin&quot;: false,</span></div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="stringliteral">                &quot;StdinOnce&quot;: false,</span></div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;<span class="stringliteral">                &quot;Env&quot;: %s,</span></div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;<span class="stringliteral">                &quot;Cmd&quot;: %s,</span></div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;<span class="stringliteral">                &quot;Image&qu
 ot;: &quot;&quot;,</span></div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;<span class="stringliteral">                &quot;Volumes&quot;: null,</span></div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;<span class="stringliteral">                &quot;WorkingDir&quot;: &quot;&quot;,</span></div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;<span class="stringliteral">                &quot;Entrypoint&quot;: %s,</span></div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;<span class="stringliteral">                &quot;OnBuild&quot;: null,</span></div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;<span class="stringliteral">                &quot;Labels&quot;: null</span></div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;<span class="stringliteral">            },</span></div><div class="line">
 <a name="l00161"></a><span class="lineno">  161</span>&#160;<span class="stringliteral">            &quot;architecture&quot;: &quot;amd64&quot;,</span></div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;<span class="stringliteral">            &quot;os&quot;: &quot;linux&quot;</span></div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="stringliteral">        })~&quot;,</span></div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;<span class="stringliteral">        std::string(<a class="code" href="jsonify_8hpp.html#ab2d3ecf67ed06919e96e5e97b2effdc3">jsonify</a>(<a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>)),</span></div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;<span class="stringliteral">        cmd,</span></div><div class="line"><a name="l00166"></a><span class="lineno">  166<
 /span>&#160;<span class="stringliteral">        entrypoint).</span><span class="keyword">get</span>()).get();</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    write = <a class="code" href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">os::write</a>(</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;        <a class="code" href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a>(layerPath, <span class="stringliteral">&quot;json&quot;</span>),</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;        <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(manifest));</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    <span clas
 s="keywordflow">if</span> (write.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">Failure</a>(<span class="stringliteral">&quot;Failed to save docker test image layer &#39;&quot;</span> + layerId +</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;                     <span class="stringliteral">&quot;&#39;: &quot;</span> + write.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    }</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    <span class="keyword">const</span> std::string rootfsDir = <a clas
 s="code" href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a>(layerPath, <span class="stringliteral">&quot;layer&quot;</span>);</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    mkdir = <a class="code" href="namespaceos.html#af0f3343df38b8241f66750a273d4a5a6">os::mkdir</a>(rootfsDir);</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    <span class="keywordflow">if</span> (mkdir.isError()) {</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">Failure</a>(<span class="stringliteral">&quot;Failed to create layer rootfs directory &#39;&quot;</span> +</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;                     rootfsDir + <span class="stringl
 iteral">&quot;&#39;: &quot;</span> + mkdir.error());</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    }</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    <span class="comment">// Create one linux rootfs for the layer.</span></div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;    <a class="code" href="classTry.html">Try&lt;process::Owned&lt;Rootfs&gt;</a>&gt; rootfs = <a class="code" href="classmesos_1_1internal_1_1tests_1_1LinuxRootfs.html#a989f2d98ba0035548be3fa43a0ae23c4">LinuxRootfs::create</a>(rootfsDir);</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    <span class="keywordflow">if</span> (rootfs.isError()) {</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;      <span class="keywordflow">return</span> <a class="code" hr
 ef="structprocess_1_1Failure.html">Failure</a>(<span class="stringliteral">&quot;Failed to create docker test image rootfs: &quot;</span> +</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;                     rootfs.error());</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    }</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    <a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> tarRootfs = <a class="code" href="namespacemesos_1_1internal_1_1command.html#a6fa52ad212c7cc54ddcca193bb3bc5a4">command::tar</a>(</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;        <a class="code" href="classPath.html">Path</a>(<span class="stringliteral">&quot;.&quot;</span>),</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#1
 60;        <a class="code" href="classPath.html">Path</a>(<a class="code" href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a>(layerPath, <span class="stringliteral">&quot;layer.tar&quot;</span>)),</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;        rootfsDir);</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    tarRootfs.await();</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    <span class="keywordflow">if</span> (!tarRootfs.isReady()) {</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">Failure</a>(</div><div class="line"><a name="l00201"></a><span class="
 lineno">  201</span>&#160;          <span class="stringliteral">&quot;Failed to tar root filesystem: &quot;</span> +</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;          (tarRootfs.isFailed() ? tarRootfs.failure() : <span class="stringliteral">&quot;discarded&quot;</span>));</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    }</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespaceos.html#a84298b990ad52dfd353358427b04ff3f">rmdir</a> = <a class="code" href="namespaceos.html#a84298b990ad52dfd353358427b04ff3f">os::rmdir</a>(rootfsDir);</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    <span class="keywordflow">if</span> (rmdir.<a class="code" href="classTry.html#a0b98f951
 63b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">Failure</a>(<span class="stringliteral">&quot;Failed to remove layer rootfs directory: &quot;</span> +</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;                       rmdir.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    }</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    write = <a class="code" href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">os::write</a>(</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;        <a class="code" href="
 namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a>(layerPath, <span class="stringliteral">&quot;VERSION&quot;</span>),</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;        <span class="stringliteral">&quot;1.0&quot;</span>);</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;    <span class="keywordflow">if</span> (write.isError()) {</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">Failure</a>(<span class="stringliteral">&quot;Failed to save layer version: &quot;</span> + write.error());</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    }</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;</div><div class="line"><a 
 name="l00219"></a><span class="lineno">  219</span>&#160;    <a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> tarImage = <a class="code" href="namespacemesos_1_1internal_1_1command.html#a6fa52ad212c7cc54ddcca193bb3bc5a4">command::tar</a>(</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;        <a class="code" href="classPath.html">Path</a>(<span class="stringliteral">&quot;.&quot;</span>),</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;        <a class="code" href="classPath.html">Path</a>(<a class="code" href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a>(directory, name + <span class="stringliteral">&quot;.tar&quot;</span>)),</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;        imagePath);</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;</div><div class="line"><a name="l00224"></a><span cl
 ass="lineno">  224</span>&#160;    tarImage.await();</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    <span class="keywordflow">if</span> (!tarImage.isReady()) {</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">Failure</a>(</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;          <span class="stringliteral">&quot;Failed to tar docker test image: &quot;</span> +</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;          (tarImage.isFailed() ? tarImage.failure() : <span class="stringliteral">&quot;discarded&quot;</span>));</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    }</div><div class="line"><a name="l00231"></a><span class=
 "lineno">  231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    rmdir = <a class="code" href="namespaceos.html#a84298b990ad52dfd353358427b04ff3f">os::rmdir</a>(imagePath);</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    <span class="keywordflow">if</span> (rmdir.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">Failure</a>(<span class="stringliteral">&quot;Failed to remove image directory: &quot;</span> +</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;                     rmdir.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;
     }</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;  }</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;};</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;} <span class="comment">// namespace tests {</span></div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;} <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00245"></a><span class="l
 ineno">  245</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;<span class="preprocessor">#endif // __TEST_DOCKER_ARCHIVE_HPP__</span></div><div class="ttc" id="rootfs_8hpp_html"><div class="ttname"><a href="rootfs_8hpp.html">rootfs.hpp</a></div></div>
 <div class="ttc" id="namespaceos_html_a84298b990ad52dfd353358427b04ff3f"><div class="ttname"><a href="namespaceos.html#a84298b990ad52dfd353358427b04ff3f">os::rmdir</a></div><div class="ttdeci">Try&lt; Nothing &gt; rmdir(const std::string &amp;directory, bool recursive=true, bool removeRoot=true, bool continueOnError=false)</div><div class="ttdef"><b>Definition:</b> rmdir.hpp:43</div></div>
 <div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
-<div class="ttc" id="namespaceos_html_a73da9d49515dfff761c4887c3d6032c0"><div class="ttname"><a href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">os::write</a></div><div class="ttdeci">ssize_t write(const int_fd &amp;fd, const void *data, size_t size)</div><div class="ttdef"><b>Definition:</b> write.hpp:26</div></div>
+<div class="ttc" id="namespaceos_html_a73da9d49515dfff761c4887c3d6032c0"><div class="ttname"><a href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">os::write</a></div><div class="ttdeci">ssize_t write(const int_fd &amp;fd, const void *data, size_t size)</div><div class="ttdef"><b>Definition:</b> write.hpp:72</div></div>
 <div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
 <div class="ttc" id="structprocess_1_1Failure_html"><div class="ttname"><a href="structprocess_1_1Failure.html">process::Failure</a></div><div class="ttdef"><b>Definition:</b> future.hpp:665</div></div>
 <div class="ttc" id="os_8hpp_html"><div class="ttname"><a href="os_8hpp.html">os.hpp</a></div></div>


[07/13] mesos-site git commit: Updated the website built from mesos SHA: 21305ab.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/index.hhk
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/index.hhk b/content/api/latest/c++/index.hhk
index 645c544..e224e80 100644
--- a/content/api/latest/c++/index.hhk
+++ b/content/api/latest/c++/index.hhk
@@ -106,6 +106,10 @@
   <LI><OBJECT type="text/sitemap"><param name="Local" value="3rdparty_2stout_2include_2stout_2os_2read_8hpp.html"><param name="Name" value="3rdparty/stout/include/stout/os/read.hpp"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="3rdparty_2stout_2include_2stout_2os_2windows_2environment_8hpp.html"><param name="Name" value="3rdparty/stout/include/stout/os/windows/environment.hpp"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp.html"><param name="Name" value="3rdparty/stout/include/stout/os/windows/read.hpp"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp.html#a7e99bac0fb06315c051358c7916fe692"><param name="Name" value="read"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp.html#a00b6398808bc7afef46f705c1f92a2fe"><param name="Name" value="read_async"></OBJECT>
+  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="3rdparty_2stout_2include_2stout_2posix_2fs_8hpp.html"><param name="Name" value="3rdparty/stout/include/stout/posix/fs.hpp"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="3rdparty_2stout_2include_2stout_2posix_2fs_8hpp.html#a3bd12b75af66bfabbd764e9c66ea80c6"><param name="Name" value="list"></OBJECT>
@@ -1365,12 +1369,9 @@
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos_1_1internal_1_1capabilities.html#abf44ee3490d4ec99e8549060bb8c9f58ad2aa48fd98d1fe5bd4e73f4ec98c5b81"><param name="Name" value="BLOCK_SUSPEND"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structproc_1_1ProcessStatus.html#ab2edfe8f433be9047cc8454cc401107b"><param name="Name" value="blocked"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1xfs_1_1BasicBlocks.html#af756bab080806ee8cae4bd6ad122c39f"><param name="Name" value="blocks"></OBJECT>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Request.html#a2498f3dfc1ebe743f650e72f147c7887a25d7d2e078ea5bd01283be7cc227e071"><param name="Name" value="BODY"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Request.html#a78dfcfa785afc80e221d92543ff617f1"><param name="Name" value="body"></OBJECT>
-  <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Request.html#a78dfcfa785afc80e221d92543ff617f1"><param name="Name" value="process::http::Request"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#a5f6d23dd77e1eeb0737dc728e0109905"><param name="Name" value="process::http::Response"></OBJECT>
-  </UL>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Request.html#a2498f3dfc1ebe743f650e72f147c7887a25d7d2e078ea5bd01283be7cc227e071"><param name="Name" value="BODY"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#a5f6d23dd77e1eeb0737dc728e0109905"><param name="Name" value="body"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#a6dd5881e0450540a106e37257434eaada7d2a4db1b1426c6caab18fa8b484f4f5"><param name="Name" value="BODY"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1Message.html#aba0d1f741d939864cf287833dd14792e"><param name="Name" value="body"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structflags_1_1Flag.html#a48427029bfe0f14d178fec0e2388fb84"><param name="Name" value="boolean"></OBJECT>
@@ -1489,12 +1490,12 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="bytes_8hpp.html#ad7cff36ab3439c2d594a42d9792b1717"><param name="Name" value="Terabytes"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classBytes.html"><param name="Name" value="Bytes"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="classBytes.html#a1a2e9277ebe7d227a21f111898c49a8c"><param name="Name" value="bytes"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="classBytes.html"><param name="Name" value="Bytes"></OBJECT>
   <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classBytes.html#afc19db0edd77ac901f8591a41ef76523"><param name="Name" value="Bytes"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classBytes.html#a1a2e9277ebe7d227a21f111898c49a8c"><param name="Name" value="bytes"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classBytes.html#a2ad35f92122a5afcb731d6568879482f"><param name="Name" value="BYTES"></OBJECT>
   </UL>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="classBytes.html#a1a2e9277ebe7d227a21f111898c49a8c"><param name="Name" value="bytes"></OBJECT>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="classBytes.html"><param name="Name" value="Bytes"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classBytes.html#a2ad35f92122a5afcb731d6568879482f"><param name="Name" value="BYTES"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classBytes.html"><param name="Name" value="Bytes"></OBJECT>
   <UL>
@@ -7285,6 +7286,11 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="inherit_8hpp.html"><param name="Name" value="inherit.hpp"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos_1_1internal_1_1capabilities.html#aaa5ec6d56ccbeba718b9e8fc6ec2f7c9a7bd4cdec2607b4dea165cdd1b7a935e2"><param name="Name" value="INHERITABLE"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceinternal_1_1windows.html#a388bd9a30ab487f5d035e542187e379a"><param name="Name" value="init_overlapped_for_sync_io"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceinternal_1_1windows.html#a388bd9a30ab487f5d035e542187e379a"><param name="Name" value="internal::windows"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceinternal_1_1windows.html#a388bd9a30ab487f5d035e542187e379a"><param name="Name" value="overlapped.hpp"></OBJECT>
+  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacenet.html#a418ace8fe7728f38b2124b5445e52775"><param name="Name" value="initialize"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacenet.html#a418ace8fe7728f38b2124b5445e52775"><param name="Name" value="3rdparty/stout/include/stout/net.hpp"></OBJECT>
@@ -7477,7 +7483,9 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14"><param name="Name" value="get_handle_no_follow"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceinternal_1_1windows.html#a85f7e5d0197eeb93bde525379b8e14d6"><param name="Name" value="get_symbolic_link_data"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceinternal_1_1windows.html#a8fc9ccf78565ac55f90070486d385227"><param name="Name" value="get_system_env"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceinternal_1_1windows.html#a388bd9a30ab487f5d035e542187e379a"><param name="Name" value="init_overlapped_for_sync_io"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1"><param name="Name" value="longpath"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d"><param name="Name" value="process_async_io_result"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceinternal_1_1windows.html#a39ca8fa0643b489f6bef951bef207c92"><param name="Name" value="query_symbolic_link_data"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceinternal_1_1windows.html#ac3625d90ddd93b6c9a889610263990c1"><param name="Name" value="REPARSE_DATA_BUFFER"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceinternal_1_1windows.html#a9205fe9be7dc028375cd24338483152b"><param name="Name" value="reparse_point_attribute_set"></OBJECT>
@@ -7658,6 +7666,7 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacenet.html#a6d996e15b39630257af8d8a0379c7f7a"><param name="Name" value="stout/include/stout/os/posix/socket.hpp"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacenet.html#a6d996e15b39630257af8d8a0379c7f7a"><param name="Name" value="stout/include/stout/os/windows/socket.hpp"></OBJECT>
   </UL>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#a4dce5dbc3d019589b4b61d6d17e1da45"><param name="Name" value="is_overlapped"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacenet.html#a190d273d305decda6696ed04b3adbd59"><param name="Name" value="is_restartable_error"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacenet.html#a190d273d305decda6696ed04b3adbd59"><param name="Name" value="net"></OBJECT>
@@ -10398,8 +10407,8 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a5c060a124aa551693f6829812b52ef2c"><param name="Name" value="reviveOffers"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a16c7474e21fd5aa3d219a0e46341038d"><param name="Name" value="roles"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a890bb44d4f46f708e8df0514036d44ca"><param name="Name" value="roleSorter"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#ad210fa980c3c928d2adb439a932636d8"><param name="Name" value="Self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#aea22e2f2117fcb1b9afff4996a50692c"><param name="Name" value="self"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#ad210fa980c3c928d2adb439a932636d8"><param name="Name" value="Self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a5b8bf2523246e77c0bfd2340fe223565"><param name="Name" value="setQuota"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#abf75366546bda737ba22d994b6a7fb20"><param name="Name" value="slaves"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#ac6adbe7f44a82c49396888a88b8073d4"><param name="Name" value="suppressOffers"></OBJECT>
@@ -15732,21 +15741,27 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1tests_1_1KillPolicyTestHelper.html#a10eecc0ec13819b8117167b4a349034d"><param name="Name" value="mesos::internal::tests::KillPolicyTestHelper"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#aa5dad9a209f238aa7d65dde34d8e5c2d"><param name="Name" value="mesos::internal::tests::MemoryTestHelper"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1tests_1_1SetnsTestHelper.html#a10f7ff24e377e39c6c01dab68bfc2ede"><param name="Name" value="mesos::internal::tests::SetnsTestHelper"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1CopyFetcherPlugin.html#ae6ff1cef4e490fa372960bf17f8446a9"><param name="Name" value="mesos::uri::CopyFetcherPlugin"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1CopyFetcherPlugin.html#ab183d70e36bb66b5f55c543637488881"><param name="Name" value="name"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1CopyFetcherPlugin.html#ae6ff1cef4e490fa372960bf17f8446a9"><param name="Name" value="NAME"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1CopyFetcherPlugin.html#ae6ff1cef4e490fa372960bf17f8446a9"><param name="Name" value="mesos::uri::CopyFetcherPlugin"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1CurlFetcherPlugin.html#a899fab81e86817aad545389c3cc5b535"><param name="Name" value="mesos::uri::CurlFetcherPlugin"></OBJECT>
+  </UL>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1CurlFetcherPlugin.html#a3797f96a62adbc485e54c139cb967d3b"><param name="Name" value="name"></OBJECT>
   <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1CopyFetcherPlugin.html#ab183d70e36bb66b5f55c543637488881"><param name="Name" value="mesos::uri::CopyFetcherPlugin"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1CurlFetcherPlugin.html#a3797f96a62adbc485e54c139cb967d3b"><param name="Name" value="mesos::uri::CurlFetcherPlugin"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1DockerFetcherPlugin.html#ab99142c6fad3fff779336e6f7002d700"><param name="Name" value="mesos::uri::DockerFetcherPlugin"></OBJECT>
   </UL>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1CurlFetcherPlugin.html#a899fab81e86817aad545389c3cc5b535"><param name="Name" value="NAME"></OBJECT>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1DockerFetcherPlugin.html#ab99142c6fad3fff779336e6f7002d700"><param name="Name" value="name"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1DockerFetcherPlugin.html#ad942cc6916621fcfb8f714a76aaf2487"><param name="Name" value="NAME"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1Fetcher_1_1Plugin.html#a202f7d2793b8ea5a31e85d11f9c4a299"><param name="Name" value="name"></OBJECT>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1HadoopFetcherPlugin.html#a06b4afb2f86856aadf43412a6bf9ab73"><param name="Name" value="NAME"></OBJECT>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1HadoopFetcherPlugin.html#a4bb32944d46d17d2152813eb5aea91cd"><param name="Name" value="name"></OBJECT>
   <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1Fetcher_1_1Plugin.html#a202f7d2793b8ea5a31e85d11f9c4a299"><param name="Name" value="mesos::uri::Fetcher::Plugin"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1HadoopFetcherPlugin.html#a4bb32944d46d17d2152813eb5aea91cd"><param name="Name" value="mesos::uri::HadoopFetcherPlugin"></OBJECT>
+  </UL>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1HadoopFetcherPlugin.html#a06b4afb2f86856aadf43412a6bf9ab73"><param name="Name" value="NAME"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46"><param name="Name" value="name"></OBJECT>
+  <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46"><param name="Name" value="os::Shell"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46"><param name="Name" value="posix/shell.hpp"></OBJECT>
   </UL>
@@ -16093,10 +16108,13 @@
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structJSON_1_1Object.html#a79dba4ce034071eeef6a807d8d574cea"><param name="Name" value="JSON::Object"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classJvm.html#a0720b5f434e636e22a3ed34f847eec57"><param name="Name" value="Jvm"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classJvm_1_1Object.html#ace2b910d3838c7ad2ed5f67d872d9bd9"><param name="Name" value="Jvm::Object"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classJvm_1_1Object.html#a3c338f2867b29b7868472a714014ca76"><param name="Name" value="object"></OBJECT>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1ObjectApprover_1_1Object.html#a03e6baf0690ffd26ad3bc4929b70d967"><param name="Name" value="Object"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="classJvm_1_1Object.html#ace2b910d3838c7ad2ed5f67d872d9bd9"><param name="Name" value="Object"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classJvm_1_1Object.html#ace2b910d3838c7ad2ed5f67d872d9bd9"><param name="Name" value="Jvm::Object"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1ObjectApprover_1_1Object.html#a03e6baf0690ffd26ad3bc4929b70d967"><param name="Name" value="mesos::ObjectApprover::Object"></OBJECT>
+  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos.html#a32d3c2a48160df803ce466136940440e"><param name="Name" value="ObjectApprovers::approved< authorization::VIEW_ROLE >"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos.html#a32d3c2a48160df803ce466136940440e"><param name="Name" value="mesos"></OBJECT>
@@ -17165,6 +17183,7 @@
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#a94b69cae4edb8f3549845fbfa0355b7c"><param name="Name" value="crt"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f"><param name="Name" value="HANDLE"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#a4dce5dbc3d019589b4b61d6d17e1da45"><param name="Name" value="is_overlapped"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33"><param name="Name" value="is_valid"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#a8ba56c5251264ab13aeaaa34cde39bdb"><param name="Name" value="operator HANDLE"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#aa58f87561c2785c34ae7f34ce59abfe2"><param name="Name" value="operator intptr_t"></OBJECT>
@@ -17178,7 +17197,7 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#a23d70e92fe2ee8da692f4e9b1b9e1e43"><param name="Name" value="operator>="></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa"><param name="Name" value="SOCKET"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52"><param name="Name" value="type"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#a9e8a511230c23e3210e7a0268bb74e62"><param name="Name" value="WindowsFD"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#a421497a56ee02f01dd4f0773d07eaa76"><param name="Name" value="WindowsFD"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#ad2ce21d9f77710472e19843e3e86343e"><param name="Name" value="~WindowsFD"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html"><param name="Name" value="os"></OBJECT>
@@ -17253,7 +17272,7 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a493d7d8775f0ed778ad3b52ec19bbaab"><param name="Name" value="PATH_SEPARATOR"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a3fc3402e6d83c2e2f1dc680d77489a29"><param name="Name" value="permissions"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073"><param name="Name" value="pids"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51"><param name="Name" value="pipe"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#afefbea8a88b84bed66580372accb18a9"><param name="Name" value="pipe"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a647be66325aca2685aa58780bbdb8e9a"><param name="Name" value="POSIX_PATH_SEPARATOR"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389"><param name="Name" value="process"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a64774f3176080d29eedcee42ae23c747"><param name="Name" value="process_entry"></OBJECT>
@@ -17263,6 +17282,7 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a07a766e0355221b949e5fe6fdfca63f2"><param name="Name" value="ptsname"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#aede9f61dcb4b7d1f276302a7bce37446"><param name="Name" value="random"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7"><param name="Name" value="read"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a00b6398808bc7afef46f705c1f92a2fe"><param name="Name" value="read_async"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#aa533c79d98af12b40b567a851e442373"><param name="Name" value="realpath"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a079aa1b108c567735620a14ea2a2e506"><param name="Name" value="release"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a2950f2178c10a1f1efb980b30d292dbb"><param name="Name" value="removexattr"></OBJECT>
@@ -17270,6 +17290,7 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#ac1c8ce3595084d78291f98c2be9f62ba"><param name="Name" value="rm"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a84298b990ad52dfd353358427b04ff3f"><param name="Name" value="rmdir"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a625f02f99e88345b3e8f59223d7aa237"><param name="Name" value="sendfile"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#ad8eec8c973d58ad0db1a7b6d81e77e96"><param name="Name" value="sendfile_async"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a66d4371272f7c8f52ffb4f440c5a3762"><param name="Name" value="set_job_cpu_limit"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a580730039534bf4757e3e8b0e1e3db10"><param name="Name" value="set_job_kill_on_close_limit"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a24a3f6dbfa918c7ac934a2323a824eb4"><param name="Name" value="set_job_mem_limit"></OBJECT>
@@ -17301,6 +17322,7 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a8d651d36e878b4284b6ab739be15bf16"><param name="Name" value="which"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#ae86289c0463a69de1a4aa97ba9203e57"><param name="Name" value="WINDOWS_PATH_SEPARATOR"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0"><param name="Name" value="write"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a1af52685ba3e8fe8676af86cd16a1eb8"><param name="Name" value="write_async"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="osx_8hpp.html"><param name="Name" value="osx.hpp"></OBJECT>
   <UL>
@@ -17327,6 +17349,11 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af"><param name="Name" value="subprocess.hpp"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1master_1_1Metrics.html#a6481c3e2a31f2fac641d7426b4486671"><param name="Name" value="outstanding_offers"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="overlapped_8hpp.html"><param name="Name" value="overlapped.hpp"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="overlapped_8hpp.html#a388bd9a30ab487f5d035e542187e379a"><param name="Name" value="init_overlapped_for_sync_io"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="overlapped_8hpp.html#a4ed4d1bae6b01fb85f8e6fad0b10599d"><param name="Name" value="process_async_io_result"></OBJECT>
+  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos_1_1internal_1_1slave.html#a9f9640821f4e480747f2eb9a4d934e32"><param name="Name" value="OVERLAY_BACKEND"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos_1_1internal_1_1slave.html#a9f9640821f4e480747f2eb9a4d934e32"><param name="Name" value="mesos::internal::slave"></OBJECT>
@@ -17571,10 +17598,10 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="path_8hpp.html#a222005a87c0bb37fbabdc8effe38aed1"><param name="Name" value="operator>"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="path_8hpp.html#a0a79d7788a7f0189a4a5b69b73dce859"><param name="Name" value="operator>="></OBJECT>
   </UL>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="classPath.html"><param name="Name" value="Path"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacepath.html"><param name="Name" value="path"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classPath.html"><param name="Name" value="Path"></OBJECT>
   <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classPath.html#a240c7b71a23c8e97b5490dbae75cc948"><param name="Name" value="absolute"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classPath.html#a11c34646ac636526f1b28b61057f3b1f"><param name="Name" value="basename"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classPath.html#a0449e93ffb615ef7fd198ef03dd1100c"><param name="Name" value="dirname"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classPath.html#a46e804f0daca3c3a0fef137364aca5ea"><param name="Name" value="extension"></OBJECT>
@@ -17762,10 +17789,10 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1slave_1_1Slave.html#a5375350e12064d0cc86ec346e06c22cf"><param name="Name" value="ping"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1slave_1_1Slave.html#aa14da55de5c585de7f443afa61e042d7"><param name="Name" value="pingTimeout"></OBJECT>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51"><param name="Name" value="pipe"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#afefbea8a88b84bed66580372accb18a9"><param name="Name" value="pipe"></OBJECT>
   <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51"><param name="Name" value="os"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51"><param name="Name" value="posix/pipe.hpp"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#afefbea8a88b84bed66580372accb18a9"><param name="Name" value="os"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#afefbea8a88b84bed66580372accb18a9"><param name="Name" value="posix/pipe.hpp"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1http_1_1Pipe.html#ac4d65a3bbbdfba2bfeb755aedb5153da"><param name="Name" value="Pipe"></OBJECT>
   <UL>
@@ -17779,7 +17806,7 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#a6dd5881e0450540a106e37257434eaada8d713d3c6326b2c6f5730c5f46f3e3f0"><param name="Name" value="process::http::Response"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Subprocess.html#a6af5024bd1932707893908fceb86ddad"><param name="Name" value="process::Subprocess"></OBJECT>
   </UL>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51"><param name="Name" value="pipe"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#aaf74ddc18d833f8cbea1bdc81a4b24b8"><param name="Name" value="pipe"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1slave_1_1MesosContainerizerLaunch_1_1Flags.html#a8acc9fd4807adf226ae78702b7c0b225"><param name="Name" value="pipe_read"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1slave_1_1MesosContainerizerLaunch_1_1Flags.html#a4c6b037668275b60c8716c3fd134ae2c"><param name="Name" value="pipe_write"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos_1_1internal_1_1fs.html#a6ca148a3dbe24af71c5b08edc0c5d753"><param name="Name" value="pivot_root"></OBJECT>
@@ -18332,11 +18359,11 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1EventQueue.html"><param name="Name" value="process::EventQueue"></OBJECT>
   <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1EventQueue.html#a11390aaa07bced511a5b7fe4c94e97fd"><param name="Name" value="Consumer"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1EventQueue.html#a73f44b10f6d09ead6bdf3ab11cba4d06"><param name="Name" value="consumer"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1EventQueue.html#a11390aaa07bced511a5b7fe4c94e97fd"><param name="Name" value="Consumer"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1EventQueue.html#ad2d51d8a2a80f473de0bcf2e08e48d90"><param name="Name" value="EventQueue"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1EventQueue.html#aa95046266e731af49ccfb9d689cb1eca"><param name="Name" value="producer"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1EventQueue.html#aaf00b363e56ec3a72a6f775a3814d6a0"><param name="Name" value="Producer"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1EventQueue.html#aa95046266e731af49ccfb9d689cb1eca"><param name="Name" value="producer"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1EventVisitor.html"><param name="Name" value="process::EventVisitor"></OBJECT>
   <UL>
@@ -18669,8 +18696,8 @@
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Request.html#ab73883ea45426022ec851b2069f8ed21"><param name="Name" value="acceptsEncoding"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Request.html#aa944870ad568bea5f0d0ce28763d0cef"><param name="Name" value="acceptsMediaType"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Request.html#a2498f3dfc1ebe743f650e72f147c7887a25d7d2e078ea5bd01283be7cc227e071"><param name="Name" value="BODY"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Request.html#a78dfcfa785afc80e221d92543ff617f1"><param name="Name" value="body"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Request.html#a2498f3dfc1ebe743f650e72f147c7887a25d7d2e078ea5bd01283be7cc227e071"><param name="Name" value="BODY"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Request.html#ad0493ac04e37acf41127dfff3625c0f5"><param name="Name" value="client"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Request.html#a53555a597f9376d2dd71daa799a90494"><param name="Name" value="headers"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Request.html#a3a459e9dbce042511e6359533f6925d4"><param name="Name" value="keepAlive"></OBJECT>
@@ -18688,8 +18715,8 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#ad6530fddd03380dbb3b23b17523cb242"><param name="Name" value="code"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#ae463c5c7a083aea98a89cf9b675b59ab"><param name="Name" value="headers"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#a6dd5881e0450540a106e37257434eaadaa49acb0a3f416b805cb49ec1a4549b14"><param name="Name" value="NONE"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#aad42d5f8c85b81742de9f3f1a0f6d328"><param name="Name" value="path"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#a6dd5881e0450540a106e37257434eaada069715e7afa526f4f971dcf3d704b5c8"><param name="Name" value="PATH"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#aad42d5f8c85b81742de9f3f1a0f6d328"><param name="Name" value="path"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#a6dd5881e0450540a106e37257434eaada8d713d3c6326b2c6f5730c5f46f3e3f0"><param name="Name" value="PIPE"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#aa3543eb8ecd36f5d6d91b2640d471359"><param name="Name" value="reader"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#ac7ac8132a8d8772335efd5a55d9ebb4f"><param name="Name" value="Response"></OBJECT>
@@ -18939,11 +18966,11 @@
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a34d62916736c1dfebd1585cf51f19d0c"><param name="Name" value="BUFFERED_READ_SIZE"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#af71c45e0a85e21f6b39060f4e716cebf"><param name="Name" value="poll"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f"><param name="Name" value="read"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879"><param name="Name" value="READ"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f"><param name="Name" value="read"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#ab9c4a52a88fcc9983438e391643424ca"><param name="Name" value="redirect"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc"><param name="Name" value="WRITE"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a49105dc036ad04225c92bd673da5ce39"><param name="Name" value="write"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc"><param name="Name" value="WRITE"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Latch.html"><param name="Name" value="process::Latch"></OBJECT>
   <UL>
@@ -19216,8 +19243,8 @@
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Once.html"><param name="Name" value="process::Once"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Once.html#a2b83d07d529fb1028705e5c5bcafab6c"><param name="Name" value="done"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Once.html#af3c871858c0d2f141238afd52de2643c"><param name="Name" value="Once"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Once.html#af60c4d00f5bca3091b20709b038e5ef3"><param name="Name" value="once"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Once.html#af3c871858c0d2f141238afd52de2643c"><param name="Name" value="Once"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Once.html#a757b5aa045b5833563235eb0d84afa82"><param name="Name" value="~Once"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Owned.html"><param name="Name" value="process::Owned"></OBJECT>
@@ -19297,8 +19324,8 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Promise.html#aa70c825f2b107eac5f393db03d2dd6ec"><param name="Name" value="associate"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Promise.html#a8f50fcfd7ddb6dd39ec2cd468377cd5d"><param name="Name" value="discard"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Promise.html#a2fc569c8bf99acb3e53a68ff3b266667"><param name="Name" value="fail"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Promise.html#a8aef752d6c90cb11e58e3166b7592ef1"><param name="Name" value="future"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Promise.html#ab033f7626ddfc7f1d62cb3d3952d166e"><param name="Name" value="Future"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Promise.html#a8aef752d6c90cb11e58e3166b7592ef1"><param name="Name" value="future"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Promise.html#a6d293d289666af0adec11f68f9fede9c"><param name="Name" value="internal::discarded"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Promise.html#ad96eae1c1003a896e34b6a4c66e23c39"><param name="Name" value="Promise"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Promise.html#a989b8dfa7eb2633de3f0f25ac2b87943"><param name="Name" value="set"></OBJECT>
@@ -19602,15 +19629,15 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< AwaitProcess< T > >"></OBJECT>
   <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< CheckerProcess >"></OBJECT>
   <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
   </UL>
@@ -19651,8 +19678,8 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< GroupProcess >"></OBJECT>
   <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
   </UL>
@@ -19665,8 +19692,8 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< Help >"></OBJECT>
   <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
   </UL>
@@ -19693,15 +19720,15 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< Logging >"></OBJECT>
   <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< LogProcess >"></OBJECT>
   <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
   </UL>
@@ -19735,8 +19762,8 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< MesosAllocatorProcess >"></OBJECT>
   <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
   </UL>
@@ -19756,8 +19783,8 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< MetricsProcess >"></OBJECT>
   <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
   </UL>
@@ -19770,8 +19797,8 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< Profiler >"></OBJECT>
   <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
   </UL>
@@ -19812,8 +19839,8 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< SequenceProcess >"></OBJECT>
   <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
   </UL>
@@ -19854,8 +19881,8 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< UriDiskProfileAdaptorProcess >"></OBJECT>
   <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
   </UL>
@@ -19868,8 +19895,8 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< WhitelistWatcher >"></OBJECT>
   <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
   </UL>
@@ -19983,6 +20010,11 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classZooKeeper.html#ac9d13dd38697506dfbe4df25cc97dc93"><param name="Name" value="ZooKeeper"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classzookeeper_1_1Group.html#a140a7fc9a09f4c07b6f30163b70e3651"><param name="Name" value="zookeeper::Group"></OBJECT>
   </UL>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d"><param name="Name" value="process_async_io_result"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d"><param name="Name" value="internal::windows"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d"><param name="Name" value="overlapped.hpp"></OBJECT>
+  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a64774f3176080d29eedcee42ae23c747"><param name="Name" value="process_entry"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a64774f3176080d29eedcee42ae23c747"><param name="Name" value="os"></OBJECT>
@@ -20393,10 +20425,10 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos_1_1internal_1_1slave_1_1state.html#a19c92fe2f0998dbbc281938ca636b3ca"><param name="Name" value="mesos::internal::slave::state"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos_1_1internal_1_1slave_1_1state.html#a19c92fe2f0998dbbc281938ca636b3ca"><param name="Name" value="src/slave/state.hpp"></OBJECT>
   </UL>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879"><param name="Name" value="READ"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f"><param name="Name" value="read"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879"><param name="Name" value="READ"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7"><param name="Name" value="read"></OBJECT>
   <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f"><param name="Name" value="3rdparty/libprocess/include/process/io.hpp"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7"><param name="Name" value="3rdparty/stout/include/stout/os/read.hpp"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a7e99bac0fb06315c051358c7916fe692"><param name="Name" value="3rdparty/stout/include/stout/os/windows/read.hpp"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprotobuf.html#a2120146c620b72d4e1e3ae47bdacb1b3"><param name="Name" value="3rdparty/stout/include/stout/protobuf.hpp"></OBJECT>
@@ -20424,13 +20456,10 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1log_1_1Log_1_1Reader.html#a5588979f3c9608bed2ac45328b85b4f3"><param name="Name" value="mesos::log::Log::Reader"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7"><param name="Name" value="os"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1http_1_1Pipe_1_1Reader.html#a0b20318ac77b65b16e30d552b6c0ae91"><param name="Name" value="process::http::Pipe::Reader"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f"><param name="Name" value="process::io"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879"><param name="Name" value="READ"></OBJECT>
-  <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879"><param name="Name" value="process::io"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1network_1_1internal_1_1Socket.html#ac5a52929658fbe1ed19b4b03bdd63904a3466fab4975481651940ed328aa990e4"><param name="Name" value="process::network::internal::Socket"></OBJECT>
-  </UL>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f"><param name="Name" value="read"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1network_1_1internal_1_1Socket.html#ac5a52929658fbe1ed19b4b03bdd63904a3466fab4975481651940ed328aa990e4"><param name="Name" value="READ"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d"><param name="Name" value="read"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d"><param name="Name" value="process::Subprocess::IO::InputFileDescriptors"></OBJECT>
@@ -20438,6 +20467,11 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprotobuf.html#a2120146c620b72d4e1e3ae47bdacb1b3"><param name="Name" value="protobuf"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos_1_1internal_1_1slave_1_1state.html#adeb89c1623e8d5af457b5b130aceac1d"><param name="Name" value="src/slave/state.hpp"></OBJECT>
   </UL>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a00b6398808bc7afef46f705c1f92a2fe"><param name="Name" value="read_async"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a00b6398808bc7afef46f705c1f92a2fe"><param name="Name" value="3rdparty/stout/include/stout/os/windows/read.hpp"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a00b6398808bc7afef46f705c1f92a2fe"><param name="Name" value="os"></OBJECT>
+  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1ReadWriteLock.html#a29e6aba787b76777a262a9bd90072b4d"><param name="Name" value="read_lock"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1ReadWriteLock.html#a841b5c49017a94a710df66a04f8c498e"><param name="Name" value="read_unlock"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1network_1_1internal_1_1Socket.html#ac5a52929658fbe1ed19b4b03bdd63904aa7b843fb734e3b3fea8e5f902d3f4144"><param name="Name" value="READ_WRITE"></OBJECT>
@@ -21498,8 +21532,8 @@
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classrouting_1_1Handle.html"><param name="Name" value="routing::Handle"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classrouting_1_1Handle.html#aaaf5d48afa385557421c29db03c27caf"><param name="Name" value="get"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classrouting_1_1Handle.html#a872a4583ce676fe1b25b4c971f1cf9c8"><param name="Name" value="handle"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classrouting_1_1Handle.html#a0094556d6d45c73b277da88407d79376"><param name="Name" value="Handle"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classrouting_1_1Handle.html#a872a4583ce676fe1b25b4c971f1cf9c8"><param name="Name" value="handle"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classrouting_1_1Handle.html#a7c6c67baa9ca07440687860fd2614fca"><param name="Name" value="operator!="></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classrouting_1_1Handle.html#afc6ceb6d1648fe3587c1fb141d8a910e"><param name="Name" value="operator=="></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classrouting_1_1Handle.html#af13fc46c294e65224a1ba560247307f5"><param name="Name" value="parse"></OBJECT>
@@ -21847,14 +21881,20 @@
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1ProcessBase.html#a7ff87364baa79991901b8d73dc5c5fca"><param name="Name" value="self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
   <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< AwaitProcess< T > >"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< CheckerProcess >"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< CollectProcess< T > >"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< CheckerProcess >"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< CollectProcess< T > >"></OBJECT>
+  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< CollectProcess< T > >"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< ContainerDaemonProcess >"></OBJECT>
+  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
@@ -21865,76 +21905,74 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< GarbageCollectorProcess >"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
   <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< GarbageCollectorProcess >"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< GroupProcess >"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< Heartbeater< Message, Event > >"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
-  <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< Heartbeater< Message, Event > >"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< Help >"></OBJECT>
-  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
-  <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< Help >"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< HttpConnectionProcess< Call, Event > >"></OBJECT>
-  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< Help >"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< HttpConnectionProcess< Call, Event > >"></OBJECT>
+  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< HttpProxy >"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< JobObjectManager >"></OBJECT>
+  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< JobObjectManager >"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< Logging >"></OBJECT>
+  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< LogProcess >"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< LogReaderProcess >"></OBJECT>
+  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< LogReaderProcess >"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< LogWriterProcess >"></OBJECT>
+  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
   <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< Master >"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< MemoryProfiler >"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< Master >"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< MemoryProfiler >"></OBJECT>
   </UL>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< MesosAllocatorProcess >"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< MesosContainerizerProcess >"></OBJECT>
+  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
   <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< MesosIsolatorProcess >"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< MetricsProcess >"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< NetworkProcess >"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
-  <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< MetricsProcess >"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< NetworkProcess >"></OBJECT>
-  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
-  <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< NetworkProcess >"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< Profiler >"></OBJECT>
-  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
-  <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< ProvisionerProcess >"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< RateLimiterProcess >"></OBJECT>
-  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
-  <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< ReaderProcess< T > >"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< ReaperProcess >"></OBJECT>
-  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
@@ -21945,17 +21983,19 @@
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
   <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< Slave >"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< StatusUpdateManagerProcess< IDType, CheckpointType, UpdateType > >"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< SubsystemProcess >"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
   <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< StatusUpdateManagerProcess< IDType, CheckpointType, UpdateType > >"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< SubsystemProcess >"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< System >"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< ThunkProcess< R > >"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< UriDiskProfileAdaptorProcess >"></OBJECT>
@@ -22012,6 +22052,11 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a15c48459535a0a99a2a70ff1fcbb7d59"><param name="Name" value="process::network::internal::SocketImpl"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#ac4d8cf58aea1781753bb27e1d40bdee0"><param name="Name" value="windows/sendfile.hpp"></OBJECT>
   </UL>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#ad8eec8c973d58ad0db1a7b6d81e77e96"><param name="Name" value="sendfile_async"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#ad8eec8c973d58ad0db1a7b6d81e77e96"><param name="Name" value="os"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#ad8eec8c973d58ad0db1a7b6d81e77e96"><param name="Name" value="windows/sendfile.hpp"></OBJECT>
+  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1ExecutorDriver.html#a73dbcc9d2f056aaac04e45622146bf5e"><param name="Name" value="sendFrameworkMessage"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1ExecutorDriver.html#a73dbcc9d2f056aaac04e45622146bf5e"><param name="Name" value="mesos::ExecutorDriver"></OBJECT>
@@ -22355,8 +22400,8 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="signals_8hpp.html"><param name="Name" value="signals.hpp"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1http_1_1authentication_1_1JWT.html#a7a5314085fad497a929f9901cf55721a"><param name="Name" value="signature"></OBJECT>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="structJSON_1_1Number.html#a1ef5b2f34492821aec7eae82da8366b7"><param name="Name" value="signed_integer"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structJSON_1_1Number.html#a156598d70937964dd8de2628351061aaac9c83af02af694c57497b0f1414b0779"><param name="Name" value="SIGNED_INTEGER"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="structJSON_1_1Number.html#a1ef5b2f34492821aec7eae82da8366b7"><param name="Name" value="signed_integer"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a57e9c8c5fa13bf86bc779a9f6f408b7c"><param name="Name" value="SIGPIPE"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="windows__ctrlhandler_8hpp.html#a944a8250e34bfd7991123abd3436d8c0"><param name="Name" value="SIGUSR1"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacefs.html#a60a9e5ca4119866d80691ce3c4701dc9"><param name="Name" value="size"></OBJECT>
@@ -24772,9 +24817,9 @@
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structos_1_1Exec.html#aa44880630d71534bbcb9f8f5acb2c286"><param name="Name" value="os::Exec"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structos_1_1Fork.html#ae3afda5dfbf9c15949f69161d2d5b33c"><param name="Name" value="os::Fork"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="unimplemented_8hpp.html#a8608fe736d309b01e7bf6c4d414e3bf4"><param name="Name" value="unimplemented.hpp"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="unimplemented_8hpp.html#a788f2d5d116d024fbfd9b0fd36fa334f"><param name="Name" value="Unimplemented"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="unimplemented_8hpp.html#a8608fe736d309b01e7bf6c4d414e3bf4"><param name="Name" value="UNIMPLEMENTED"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Shared.html#a5a4fd275e890e3c5e81dd7aed1d804b0"><param name="Name" value="unique"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classDays.html#a589226d06fa74863c8f7a3c7b5c17a4c"><param name="Name" value="units"></OBJECT>
   <UL>
@@ -24839,8 +24884,8 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132"><param name="Name" value="UNREACHABLE"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="unreachable_8hpp.html#a247a4dee16fdea6cdd332f35a572e7d3"><param name="Name" value="Unreachable"></OBJECT>
   </UL>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="unreachable_8hpp.html#a247a4dee16fdea6cdd332f35a572e7d3"><param name="Name" value="Unreachable"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132"><param name="Name" value="UNREACHABLE"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="unreachable_8hpp.html#a247a4dee16fdea6cdd332f35a572e7d3"><param name="Name" value="Unreachable"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1master_1_1Framework.html#a9db50e71935c3f9ac83ba47e18c700f8"><param name="Name" value="unreachableTasks"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1slave_1_1FetcherProcess_1_1Cache_1_1Entry.html#a3df365057bac1a641a348583b2fa7480"><param name="Name" value="unreference"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1master_1_1Framework.html#ac1cc9915f69092137574206fe15e571c"><param name="Name" value="unregisteredTime"></OBJECT>
@@ -25393,13 +25438,10 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structJSON_1_1Boolean.html#a6281b906fcdec8d438cf7460d5364342"><param name="Name" value="JSON::Boolean"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structJSON_1_1internal_1_1HasMappedType.html#a6bdb87953ddf4e3698c6ddbcf0b65189"><param name="Name" value="JSON::internal::HasMappedType"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structJSON_1_1internal_1_1IsSequence.html#a7eb06cac2bc0632185135f41c75e7798"><param name="Name" value="JSON::internal::IsSequence"></OBJECT>
-  </UL>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="structJSON_1_1Number.html#a96b2f5470f159e2b54d22353cff02d07"><param name="Name" value="Value"></OBJECT>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="structJSON_1_1Number.html#a86aa5dcfb3d8a8d87e562c50e7380d26"><param name="Name" value="value"></OBJECT>
-  <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structJSON_1_1Number.html#a86aa5dcfb3d8a8d87e562c50e7380d26"><param name="Name" value="JSON::Number"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="structJSON_1_1String.html#a6d61cfa2a10f02133833eaaf23b87e75"><param name="Name" value="JSON::String"></OBJECT>
   </UL>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="structJSON_1_1Number.html#a96b2f5470f159e2b54d22353cff02d07"><param name="Name" value="Value"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="structJSON_1_1String.html#a6d61cfa2a10f02133833eaaf23b87e75"><param name="Name" value="value"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structJSON_1_1Value.html#a3bff04934861140009f82b481019726b"><param name="Name" value="Value"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1ObjectApprover_1_1Object.html#a712288898956dbca1861589a58aa73f7"><param name="Name" value="value"></OBJECT>
   <UL>
@@ -25610,8 +25652,8 @@
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1WeakFuture.html#abc498bf35827627ae815540181e073a9"><param name="Name" value="WeakFuture"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1master_1_1Flags.html#a94a63a333e884c51856ce197f29f8e89"><param name="Name" value="webui_dir"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classWeeks.html"><param name="Name" value="Weeks"></OBJECT>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="classDuration.html#a

<TRUNCATED>

[08/13] mesos-site git commit: Updated the website built from mesos SHA: 21305ab.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/files.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/files.html b/content/api/latest/c++/files.html
index b29bad2..873d68a 100644
--- a/content/api/latest/c++/files.html
+++ b/content/api/latest/c++/files.html
@@ -159,9 +159,10 @@
 <tr id="row_0_1_0_0_1_0_1_" style="display:none;"><td class="entry"><span style="width:112px;display:inline-block;">&#160;</span><a href="grp_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="grp_8hpp.html" target="_self">grp.hpp</a></td><td class="desc"></td></tr>
 <tr id="row_0_1_0_0_1_0_2_" style="display:none;"><td class="entry"><span style="width:112px;display:inline-block;">&#160;</span><a href="inherit_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="inherit_8hpp.html" target="_self">inherit.hpp</a></td><td class="desc"></td></tr>
 <tr id="row_0_1_0_0_1_0_3_" style="display:none;"><td class="entry"><span style="width:112px;display:inline-block;">&#160;</span><a href="longpath_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="longpath_8hpp.html" target="_self">longpath.hpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_0_0_1_0_4_" style="display:none;"><td class="entry"><span style="width:112px;display:inline-block;">&#160;</span><a href="pwd_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="pwd_8hpp.html" target="_self">pwd.hpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_0_0_1_0_5_" style="display:none;"><td class="entry"><span style="width:112px;display:inline-block;">&#160;</span><a href="reparsepoint_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="reparsepoint_8hpp.html" target="_self">reparsepoint.hpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_0_0_1_0_6_" style="display:none;"><td class="entry"><span style="width:112px;display:inline-block;">&#160;</span><a href="symlink_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="symlink_8hpp.html" target="_self">symlink.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_0_0_1_0_4_" style="display:none;"><td class="entry"><span style="width:112px;display:inline-block;">&#160;</span><a href="overlapped_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="overlapped_8hpp.html" target="_self">overlapped.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_0_0_1_0_5_" style="display:none;"><td class="entry"><span style="width:112px;display:inline-block;">&#160;</span><a href="pwd_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="pwd_8hpp.html" target="_self">pwd.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_0_0_1_0_6_" style="display:none;"><td class="entry"><span style="width:112px;display:inline-block;">&#160;</span><a href="reparsepoint_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="reparsepoint_8hpp.html" target="_self">reparsepoint.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_0_0_1_0_7_" style="display:none;"><td class="entry"><span style="width:112px;display:inline-block;">&#160;</span><a href="symlink_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="symlink_8hpp.html" target="_self">symlink.hpp</a></td><td class="desc"></td></tr>
 <tr id="row_0_1_0_0_2_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span id="arr_0_1_0_0_2_" class="arrow" onclick="toggleFolder('0_1_0_0_2_')">&#9658;</span><span id="img_0_1_0_0_2_" class="iconfclosed" onclick="toggleFolder('0_1_0_0_2_')">&#160;</span><a class="el" href="dir_27832e6c74c2ee170d1dd05a196f816c.html" target="_self">os</a></td><td class="desc"></td></tr>
 <tr id="row_0_1_0_0_2_0_" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span id="arr_0_1_0_0_2_0_" class="arrow" onclick="toggleFolder('0_1_0_0_2_0_')">&#9658;</span><span id="img_0_1_0_0_2_0_" class="iconfclosed" onclick="toggleFolder('0_1_0_0_2_0_')">&#160;</span><a class="el" href="dir_9a6d2c82450779b96177e4cabddb051e.html" target="_self">posix</a></td><td class="desc"></td></tr>
 <tr id="row_0_1_0_0_2_0_0_" style="display:none;"><td class="entry"><span style="width:112px;display:inline-block;">&#160;</span><a href="posix_2bootid_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="posix_2bootid_8hpp.html" target="_self">bootid.hpp</a></td><td class="desc"></td></tr>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/functions_c.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_c.html b/content/api/latest/c++/functions_c.html
index c4173c1..c14b3ba 100644
--- a/content/api/latest/c++/functions_c.html
+++ b/content/api/latest/c++/functions_c.html
@@ -460,12 +460,12 @@
 : <a class="el" href="classmesos_1_1ResourceConversion.html#afa8d5fe5c9c3f6f1588d7df710262080">mesos::ResourceConversion</a>
 , <a class="el" href="classmesos_1_1v1_1_1ResourceConversion.html#a143d22da9ef8e68799b35478bb4e22fe">mesos::v1::ResourceConversion</a>
 </li>
-<li>Consumer
-: <a class="el" href="classprocess_1_1EventQueue.html#a11390aaa07bced511a5b7fe4c94e97fd">process::EventQueue</a>
-</li>
 <li>consumer
 : <a class="el" href="classprocess_1_1EventQueue.html#a73f44b10f6d09ead6bdf3ab11cba4d06">process::EventQueue</a>
 </li>
+<li>Consumer
+: <a class="el" href="classprocess_1_1EventQueue.html#a11390aaa07bced511a5b7fe4c94e97fd">process::EventQueue</a>
+</li>
 <li>container
 : <a class="el" href="structmesos_1_1internal_1_1docker_1_1Flags.html#aecdc79d01b0158331c2a88aa52c0ce94">mesos::internal::docker::Flags</a>
 </li>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/functions_func_i.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_func_i.html b/content/api/latest/c++/functions_func_i.html
index e492cde..b970f0a 100644
--- a/content/api/latest/c++/functions_func_i.html
+++ b/content/api/latest/c++/functions_func_i.html
@@ -264,6 +264,9 @@
 , <a class="el" href="structprocess_1_1Event.html#ac2d1b2d710b1b3002da0116239787517">process::Event</a>
 , <a class="el" href="classprocess_1_1StateMachine.html#a6f0830360e0999fdb3803b31dbd016ea">process::StateMachine&lt; State &gt;</a>
 </li>
+<li>is_overlapped()
+: <a class="el" href="classos_1_1WindowsFD.html#a4dce5dbc3d019589b4b61d6d17e1da45">os::WindowsFD</a>
+</li>
 <li>is_valid()
 : <a class="el" href="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33">os::WindowsFD</a>
 </li>
@@ -312,7 +315,7 @@
 : <a class="el" href="classprocess_1_1Future.html#a493227e57f8848e37777b89c0f81e2ec">process::Future&lt; T &gt;</a>
 </li>
 <li>isFiltered()
-: <a class="el" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a166f2ae30b44c3c2dd45a3449b210fc5">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess</a>
+: <a class="el" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a71547c982e85db6b83e562732107f578">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess</a>
 </li>
 <li>isGeneratedForCommandTask()
 : <a class="el" href="classmesos_1_1internal_1_1slave_1_1Executor.html#aa015f42f8b5fe1a51616a87def9924ab">mesos::internal::slave::Executor</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/functions_func_p.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_func_p.html b/content/api/latest/c++/functions_func_p.html
index 4963891..ae9d0a0 100644
--- a/content/api/latest/c++/functions_func_p.html
+++ b/content/api/latest/c++/functions_func_p.html
@@ -416,7 +416,7 @@
 </li>
 <li>put()
 : <a class="el" href="classCache.html#a7b54629fb513d4b1652951bb713a0635">Cache&lt; Key, Value &gt;</a>
-, <a class="el" href="classhashmap.html#a040f93efd556981326f0809e0f24f9ef">hashmap&lt; Key, Value, Hash, Equal &gt;</a>
+, <a class="el" href="classhashmap.html#af69989fa69c86b7bf1843c9ae0f77124">hashmap&lt; Key, Value, Hash, Equal &gt;</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1docker_1_1MetadataManager.html#af672706fe637c9cdad8144233718198e">mesos::internal::slave::docker::MetadataManager</a>
 , <a class="el" href="classmultihashmap.html#ae10d45cc115dd9f16c07e3fb9a980bca">multihashmap&lt; Key, Value, Hash, Equal &gt;</a>
 , <a class="el" href="classMultimap.html#a86848edcdc42b4e0b46e3d6beccec2c6">Multimap&lt; K, V &gt;</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/functions_func_r.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_func_r.html b/content/api/latest/c++/functions_func_r.html
index d72ff2b..a2d3975 100644
--- a/content/api/latest/c++/functions_func_r.html
+++ b/content/api/latest/c++/functions_func_r.html
@@ -498,7 +498,7 @@
 </li>
 <li>Resources()
 : <a class="el" href="classmesos_1_1Resources.html#aed60247869278b5545227ddf7ca9536b">mesos::Resources</a>
-, <a class="el" href="classmesos_1_1v1_1_1Resources.html#a8ad99169a0162bf1e67676647ccb01c8">mesos::v1::Resources</a>
+, <a class="el" href="classmesos_1_1v1_1_1Resources.html#a46c478b66abd53e0aed44cd82bc6e4d0">mesos::v1::Resources</a>
 </li>
 <li>ResourcesState()
 : <a class="el" href="structmesos_1_1internal_1_1slave_1_1state_1_1ResourcesState.html#a1cd90dfb2e0c8cb14c45a8ce0ffacd5b">mesos::internal::slave::state::ResourcesState</a>
@@ -562,7 +562,7 @@
 : <a class="el" href="classmesos_1_1internal_1_1tests_1_1Rootfs.html#a0d1eefd3053932eceda17475fae5f95c">mesos::internal::tests::Rootfs</a>
 </li>
 <li>route()
-: <a class="el" href="classprocess_1_1ProcessBase.html#a70ff038897726b5ff2713e5d5602efa6">process::ProcessBase</a>
+: <a class="el" href="classprocess_1_1ProcessBase.html#a0bb721f72a1b9b517808149010de8b9a">process::ProcessBase</a>
 </li>
 <li>RouteOptions()
 : <a class="el" href="structprocess_1_1ProcessBase_1_1RouteOptions.html#a9c202f7f06a7cb90499e3365ce338475">process::ProcessBase::RouteOptions</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/functions_func_s.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_func_s.html b/content/api/latest/c++/functions_func_s.html
index dd6b7b9..449c025 100644
--- a/content/api/latest/c++/functions_func_s.html
+++ b/content/api/latest/c++/functions_func_s.html
@@ -685,7 +685,7 @@
 : <a class="el" href="classSynchronized.html#a6f1fcefdbc244929d3a3efce643d1a42">Synchronized&lt; T &gt;</a>
 </li>
 <li>sysctl()
-: <a class="el" href="structos_1_1sysctl.html#a86356cee57ee889e8353fc488a5e61a1">os::sysctl</a>
+: <a class="el" href="structos_1_1sysctl.html#aae16684fca2b68f7ae4c998cee5f6f7e">os::sysctl</a>
 </li>
 <li>System()
 : <a class="el" href="classprocess_1_1System.html#ace32519ce64ed719c6a56e5d3f8cce8d">process::System</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/functions_func_t.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_func_t.html b/content/api/latest/c++/functions_func_t.html
index c0fd472..9b03de1 100644
--- a/content/api/latest/c++/functions_func_t.html
+++ b/content/api/latest/c++/functions_func_t.html
@@ -177,7 +177,7 @@
 : <a class="el" href="classprocess_1_1Timeout.html#a01021e2f51e5f0b1f6ec93977976f570">process::Timeout</a>
 </li>
 <li>Timeout()
-: <a class="el" href="classprocess_1_1Timeout.html#a81668b70d7b16d9b795c1181122e854c">process::Timeout</a>
+: <a class="el" href="classprocess_1_1Timeout.html#adeadd19e081fb4f2a0a39ecc586a4af7">process::Timeout</a>
 </li>
 <li>timeout()
 : <a class="el" href="classprocess_1_1Timer.html#adcce3e5538751535be6ec4d48670eb89">process::Timer</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/functions_i.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_i.html b/content/api/latest/c++/functions_i.html
index 993e8f2..f81c61d 100644
--- a/content/api/latest/c++/functions_i.html
+++ b/content/api/latest/c++/functions_i.html
@@ -385,7 +385,7 @@
 : <a class="el" href="classJvm.html#a2684939a9539b25dd08aa969c6d6afba">Jvm</a>
 </li>
 <li>invokeStatic()
-: <a class="el" href="classJvm.html#aa46a26040c5ebc856cedca0a019cda25">Jvm</a>
+: <a class="el" href="classJvm.html#a0c08d2480d97fdbdefa52f5ad506a5f5">Jvm</a>
 </li>
 <li>ip
 : <a class="el" href="classmesos_1_1internal_1_1master_1_1Flags.html#abe9b91d5debfcef30ac3e859cec50bed">mesos::internal::master::Flags</a>
@@ -416,7 +416,7 @@
 : <a class="el" href="classDocker_1_1Container.html#a3f16c086b28059796d404e040612a8a2">Docker::Container</a>
 </li>
 <li>IPv4()
-: <a class="el" href="classnet_1_1IPv4.html#a8cd19e3ec6fafb42014fee589a73e438">net::IPv4</a>
+: <a class="el" href="classnet_1_1IPv4.html#ab7e225c3face2558fda76a3715c19e76">net::IPv4</a>
 </li>
 <li>IPv6()
 : <a class="el" href="classnet_1_1IPv6.html#abbd2f53ff9af6cb1b1c50c99792c9be1">net::IPv6</a>
@@ -426,6 +426,9 @@
 , <a class="el" href="structprocess_1_1Event.html#ac2d1b2d710b1b3002da0116239787517">process::Event</a>
 , <a class="el" href="classprocess_1_1StateMachine.html#a6f0830360e0999fdb3803b31dbd016ea">process::StateMachine&lt; State &gt;</a>
 </li>
+<li>is_overlapped()
+: <a class="el" href="classos_1_1WindowsFD.html#a4dce5dbc3d019589b4b61d6d17e1da45">os::WindowsFD</a>
+</li>
 <li>is_valid()
 : <a class="el" href="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33">os::WindowsFD</a>
 </li>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/functions_m.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_m.html b/content/api/latest/c++/functions_m.html
index 64fa61c..d8ad3a5 100644
--- a/content/api/latest/c++/functions_m.html
+++ b/content/api/latest/c++/functions_m.html
@@ -665,10 +665,10 @@
 : <a class="el" href="classDuration.html#a05ddd6a9f21b82dba6313f81418f53d2">Duration</a>
 </li>
 <li>multihashmap()
-: <a class="el" href="classmultihashmap.html#a9b179e77c03fb85cfe4e59cc6cf0bf95">multihashmap&lt; Key, Value, Hash, Equal &gt;</a>
+: <a class="el" href="classmultihashmap.html#a45d7fe21c8940ec15bbcd44e476377ee">multihashmap&lt; Key, Value, Hash, Equal &gt;</a>
 </li>
 <li>Multimap()
-: <a class="el" href="classMultimap.html#a13d4bd4285946600c1af81e5be4b09ad">Multimap&lt; K, V &gt;</a>
+: <a class="el" href="classMultimap.html#af4c45434eb219747fb536a7b7ff4fde1">Multimap&lt; K, V &gt;</a>
 </li>
 <li>MULTIPLE_CHOICES
 : <a class="el" href="structprocess_1_1http_1_1Status.html#a8feae2af2cdeaf0c0ddbd5f80c9f5ff5">process::http::Status</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/functions_p.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_p.html b/content/api/latest/c++/functions_p.html
index 50ddc73..b0ab5f5 100644
--- a/content/api/latest/c++/functions_p.html
+++ b/content/api/latest/c++/functions_p.html
@@ -652,7 +652,7 @@
 </li>
 <li>put()
 : <a class="el" href="classCache.html#a7b54629fb513d4b1652951bb713a0635">Cache&lt; Key, Value &gt;</a>
-, <a class="el" href="classhashmap.html#a040f93efd556981326f0809e0f24f9ef">hashmap&lt; Key, Value, Hash, Equal &gt;</a>
+, <a class="el" href="classhashmap.html#af69989fa69c86b7bf1843c9ae0f77124">hashmap&lt; Key, Value, Hash, Equal &gt;</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1docker_1_1MetadataManager.html#af672706fe637c9cdad8144233718198e">mesos::internal::slave::docker::MetadataManager</a>
 , <a class="el" href="classmultihashmap.html#ae10d45cc115dd9f16c07e3fb9a980bca">multihashmap&lt; Key, Value, Hash, Equal &gt;</a>
 , <a class="el" href="classMultimap.html#a86848edcdc42b4e0b46e3d6beccec2c6">Multimap&lt; K, V &gt;</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/functions_r.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_r.html b/content/api/latest/c++/functions_r.html
index e0be7b0..e4bc04f 100644
--- a/content/api/latest/c++/functions_r.html
+++ b/content/api/latest/c++/functions_r.html
@@ -689,7 +689,7 @@
 : <a class="el" href="structmesos_1_1UnavailableResources.html#a2b3f0db5b5a05f3fa0bc1f8abfb68331">mesos::UnavailableResources</a>
 </li>
 <li>Resources()
-: <a class="el" href="classmesos_1_1v1_1_1Resources.html#a46c478b66abd53e0aed44cd82bc6e4d0">mesos::v1::Resources</a>
+: <a class="el" href="classmesos_1_1v1_1_1Resources.html#afb96448b026e8b78e338cf82bfc47e7a">mesos::v1::Resources</a>
 </li>
 <li>resources_offered_or_allocated
 : <a class="el" href="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1Metrics.html#a35bc11894e4074d12b05210ed5d3205b">mesos::internal::master::allocator::internal::Metrics</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/functions_s.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_s.html b/content/api/latest/c++/functions_s.html
index 4141bd4..9c9c98f 100644
--- a/content/api/latest/c++/functions_s.html
+++ b/content/api/latest/c++/functions_s.html
@@ -403,13 +403,13 @@
 , <a class="el" href="classmesos_1_1v1_1_1executor_1_1V0ToV1Adapter.html#a204a93410a8825a916dff56b5f8195c0">mesos::v1::executor::V0ToV1Adapter</a>
 , <a class="el" href="classorg_1_1apache_1_1zookeeper_1_1server_1_1NIOServerCnxnFactory.html#aeb21636f2fcbc8811af2040912c9b1a7">org::apache::zookeeper::server::NIOServerCnxnFactory</a>
 , <a class="el" href="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a5d1386c7494d6681a764ddf0cff19e40">process::network::internal::LibeventSSLSocketImpl</a>
-, <a class="el" href="classprocess_1_1network_1_1internal_1_1Socket.html#a9d7ac9f641277f1c5f4e7dc6f5464845">process::network::internal::Socket&lt; AddressType &gt;</a>
 </li>
 <li>Shutdown
 : <a class="el" href="classprocess_1_1network_1_1internal_1_1Socket.html#ac5a52929658fbe1ed19b4b03bdd63904">process::network::internal::Socket&lt; AddressType &gt;</a>
 </li>
 <li>shutdown()
-: <a class="el" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a04930363612888ceb04d517061a43f3e">process::network::internal::SocketImpl</a>
+: <a class="el" href="classprocess_1_1network_1_1internal_1_1Socket.html#a9d7ac9f641277f1c5f4e7dc6f5464845">process::network::internal::Socket&lt; AddressType &gt;</a>
+, <a class="el" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a04930363612888ceb04d517061a43f3e">process::network::internal::SocketImpl</a>
 </li>
 <li>shutdownExecutor()
 : <a class="el" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a268b5307f2796f9270acf6efaf29711c">mesos::internal::slave::Slave</a>
@@ -922,7 +922,7 @@
 </li>
 <li>Subscriber
 : <a class="el" href="classmesos_1_1internal_1_1master_1_1Master.html#ad8fccf68963e3540e62df4dfb512bc54">mesos::internal::master::Master</a>
-, <a class="el" href="structmesos_1_1internal_1_1master_1_1Master_1_1Subscribers_1_1Subscriber.html#a648eeb655edb6255b4f515a94ab55473">mesos::internal::master::Master::Subscribers::Subscriber</a>
+, <a class="el" href="structmesos_1_1internal_1_1master_1_1Master_1_1Subscribers_1_1Subscriber.html#a70c60ad79d73c84545ae28bc85714879">mesos::internal::master::Master::Subscribers::Subscriber</a>
 </li>
 <li>substitute_name
 : <a class="el" href="structinternal_1_1windows_1_1SymbolicLink.html#a46106b565c75b06e6bc8332c58ae9484">internal::windows::SymbolicLink</a>
@@ -1029,7 +1029,7 @@
 : <a class="el" href="classSynchronized.html#a6f1fcefdbc244929d3a3efce643d1a42">Synchronized&lt; T &gt;</a>
 </li>
 <li>sysctl()
-: <a class="el" href="structos_1_1sysctl.html#aae16684fca2b68f7ae4c998cee5f6f7e">os::sysctl</a>
+: <a class="el" href="structos_1_1sysctl.html#a3341cabf86d3585a12fb74000971a2e6">os::sysctl</a>
 </li>
 <li>sysname
 : <a class="el" href="structos_1_1UTSInfo.html#a6d960255088be07cac7157b7cbe94cbf">os::UTSInfo</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/functions_t.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_t.html b/content/api/latest/c++/functions_t.html
index 162de2d..880775a 100644
--- a/content/api/latest/c++/functions_t.html
+++ b/content/api/latest/c++/functions_t.html
@@ -421,13 +421,13 @@
 <li>type
 : <a class="el" href="structboost_1_1icl_1_1interval__bound__type_3_01Interval_3_01T_01_4_01_4.html#a1fb0c27f4ab926a92987cd26571c1cd9">boost::icl::interval_bound_type&lt; Interval&lt; T &gt; &gt;</a>
 , <a class="el" href="structboost_1_1icl_1_1interval__traits_3_01Interval_3_01T_01_4_01_4.html#a78dfbb0c4101084fe49212f1867c04d2">boost::icl::interval_traits&lt; Interval&lt; T &gt; &gt;</a>
-, <a class="el" href="structcgroups_1_1devices_1_1Entry_1_1Selector.html#ae7566a068a554a9727f32aa50f3eeb81">cgroups::devices::Entry::Selector</a>
 </li>
 <li>Type
 : <a class="el" href="structcgroups_1_1devices_1_1Entry_1_1Selector.html#a3901fb22702c5ae9ca80a4ea0093e8f4">cgroups::devices::Entry::Selector</a>
 </li>
 <li>type
-: <a class="el" href="structcpp14_1_1internal_1_1IntegerSequenceGen_3_01T_00_010_00_01Is_8_8_8_01_4.html#a5f00d8d117a878f2a44a2c0870905a20">cpp14::internal::IntegerSequenceGen&lt; T, 0, Is... &gt;</a>
+: <a class="el" href="structcgroups_1_1devices_1_1Entry_1_1Selector.html#ae7566a068a554a9727f32aa50f3eeb81">cgroups::devices::Entry::Selector</a>
+, <a class="el" href="structcpp14_1_1internal_1_1IntegerSequenceGen_3_01T_00_010_00_01Is_8_8_8_01_4.html#a5f00d8d117a878f2a44a2c0870905a20">cpp14::internal::IntegerSequenceGen&lt; T, 0, Is... &gt;</a>
 , <a class="el" href="structJSON_1_1Number.html#a2e9d12ef7b37989c7c1bf2b89dc31690">JSON::Number</a>
 </li>
 <li>Type
@@ -436,13 +436,13 @@
 <li>type
 : <a class="el" href="structmesos_1_1csi_1_1paths_1_1ContainerPath.html#ae82c8eee1ce13cbd2d0da44e29134b1f">mesos::csi::paths::ContainerPath</a>
 , <a class="el" href="structmesos_1_1csi_1_1paths_1_1VolumePath.html#a932b55eda0d5df1444fe5e15adba876d">mesos::csi::paths::VolumePath</a>
-, <a class="el" href="classmesos_1_1internal_1_1FilesError.html#aef08f763f1a964529d6e612e5ab49db4">mesos::internal::FilesError</a>
 </li>
 <li>Type
 : <a class="el" href="classmesos_1_1internal_1_1FilesError.html#ace93cf1c2ae2be0671102df57ed0b5a1">mesos::internal::FilesError</a>
 </li>
 <li>type
-: <a class="el" href="structmesos_1_1internal_1_1fs_1_1MountInfoTable_1_1Entry.html#abb78c2f10d58e5d2c8bdd47a459d832b">mesos::internal::fs::MountInfoTable::Entry</a>
+: <a class="el" href="classmesos_1_1internal_1_1FilesError.html#aef08f763f1a964529d6e612e5ab49db4">mesos::internal::FilesError</a>
+, <a class="el" href="structmesos_1_1internal_1_1fs_1_1MountInfoTable_1_1Entry.html#abb78c2f10d58e5d2c8bdd47a459d832b">mesos::internal::fs::MountInfoTable::Entry</a>
 , <a class="el" href="structmesos_1_1internal_1_1fs_1_1MountTable_1_1Entry.html#a59c7e9a32021a096821a898eb03b20e1">mesos::internal::fs::MountTable::Entry</a>
 , <a class="el" href="classmesos_1_1internal_1_1log_1_1tool_1_1Benchmark_1_1Flags.html#a523f498c1c3ca96190b8a654b9a329f2">mesos::internal::log::tool::Benchmark::Flags</a>
 </li>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/functions_u.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_u.html b/content/api/latest/c++/functions_u.html
index 7d63221..e05c974 100644
--- a/content/api/latest/c++/functions_u.html
+++ b/content/api/latest/c++/functions_u.html
@@ -249,12 +249,12 @@
 <li>unsetAuthenticator()
 : <a class="el" href="classprocess_1_1http_1_1authentication_1_1AuthenticatorManager.html#aa68812240328fdac177fd106ef8087dd">process::http::authentication::AuthenticatorManager</a>
 </li>
-<li>unsigned_integer
-: <a class="el" href="structJSON_1_1Number.html#a9c6b075f53b5419af9cee264482272eb">JSON::Number</a>
-</li>
 <li>UNSIGNED_INTEGER
 : <a class="el" href="structJSON_1_1Number.html#a156598d70937964dd8de2628351061aaa0ce531160156e5c4aecfabc42df3b68a">JSON::Number</a>
 </li>
+<li>unsigned_integer
+: <a class="el" href="structJSON_1_1Number.html#a9c6b075f53b5419af9cee264482272eb">JSON::Number</a>
+</li>
 <li>UNSUPPORTED_MEDIA_TYPE
 : <a class="el" href="structprocess_1_1http_1_1Status.html#addffbea97c092bf92955b7f513208ceb">process::http::Status</a>
 </li>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/functions_w.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_w.html b/content/api/latest/c++/functions_w.html
index 9fadff9..3eb9bda 100644
--- a/content/api/latest/c++/functions_w.html
+++ b/content/api/latest/c++/functions_w.html
@@ -199,7 +199,7 @@
 : <a class="el" href="classWindowsErrorBase.html#a3d4eef2ab51ef4fc46bb2df7c5880fd8">WindowsErrorBase</a>
 </li>
 <li>WindowsFD()
-: <a class="el" href="classos_1_1WindowsFD.html#a9e8a511230c23e3210e7a0268bb74e62">os::WindowsFD</a>
+: <a class="el" href="classos_1_1WindowsFD.html#a421497a56ee02f01dd4f0773d07eaa76">os::WindowsFD</a>
 </li>
 <li>WindowsSocketError()
 : <a class="el" href="classWindowsSocketError.html#a5e33cba8ac4e338f4066e7bf7e808f95">WindowsSocketError</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/globals_u.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/globals_u.html b/content/api/latest/c++/globals_u.html
index 8b411ae..010c29a 100644
--- a/content/api/latest/c++/globals_u.html
+++ b/content/api/latest/c++/globals_u.html
@@ -94,12 +94,12 @@
 <li>UNIMPLEMENTED
 : <a class="el" href="unimplemented_8hpp.html#a8608fe736d309b01e7bf6c4d414e3bf4">unimplemented.hpp</a>
 </li>
-<li>UNREACHABLE
-: <a class="el" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">unreachable.hpp</a>
-</li>
 <li>Unreachable()
 : <a class="el" href="unreachable_8hpp.html#a247a4dee16fdea6cdd332f35a572e7d3">unreachable.hpp</a>
 </li>
+<li>UNREACHABLE
+: <a class="el" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">unreachable.hpp</a>
+</li>
 </ul>
 </div><!-- contents -->
 <!-- start footer part -->

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/index.hhc
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/index.hhc b/content/api/latest/c++/index.hhc
index 730b5ab..61748c4 100644
--- a/content/api/latest/c++/index.hhc
+++ b/content/api/latest/c++/index.hhc
@@ -5987,8 +5987,8 @@
           <LI><OBJECT type="text/sitemap"><param name="Name" value="HANDLE"><param name="Local" value="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f"><param name="ImageNumber" value="11"></OBJECT>
           <LI><OBJECT type="text/sitemap"><param name="Name" value="SOCKET"><param name="Local" value="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa"><param name="ImageNumber" value="11"></OBJECT>
           </UL>
-        <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#a9e8a511230c23e3210e7a0268bb74e62"><param name="ImageNumber" value="11"></OBJECT>
-        <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#a6cd1a34bb8239a9ad84bfd1dcb506b97"><param name="ImageNumber" value="11"></OBJECT>
+        <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#a421497a56ee02f01dd4f0773d07eaa76"><param name="ImageNumber" value="11"></OBJECT>
+        <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#a33cd936b5641a029b1ea2da80d71c748"><param name="ImageNumber" value="11"></OBJECT>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#a43994eeb484a426990af657f691f66e0"><param name="ImageNumber" value="11"></OBJECT>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#a278285643f263655c5f64f45451fc6e6"><param name="ImageNumber" value="11"></OBJECT>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#a68733e16ee25fe8602557e6e9f534bc9"><param name="ImageNumber" value="11"></OBJECT>
@@ -5996,6 +5996,7 @@
         <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#a79c98e3c78c0a7155a8ed9f42832fd5d"><param name="ImageNumber" value="11"></OBJECT>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="~WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#ad2ce21d9f77710472e19843e3e86343e"><param name="ImageNumber" value="11"></OBJECT>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="crt"><param name="Local" value="classos_1_1WindowsFD.html#a94b69cae4edb8f3549845fbfa0355b7c"><param name="ImageNumber" value="11"></OBJECT>
+        <LI><OBJECT type="text/sitemap"><param name="Name" value="is_overlapped"><param name="Local" value="classos_1_1WindowsFD.html#a4dce5dbc3d019589b4b61d6d17e1da45"><param name="ImageNumber" value="11"></OBJECT>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="is_valid"><param name="Local" value="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33"><param name="ImageNumber" value="11"></OBJECT>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="operator HANDLE"><param name="Local" value="classos_1_1WindowsFD.html#a8ba56c5251264ab13aeaaa34cde39bdb"><param name="ImageNumber" value="11"></OBJECT>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="operator intptr_t"><param name="Local" value="classos_1_1WindowsFD.html#aa58f87561c2785c34ae7f34ce59abfe2"><param name="ImageNumber" value="11"></OBJECT>
@@ -13642,6 +13643,11 @@
                   <LI><OBJECT type="text/sitemap"><param name="Name" value="longpath"><param name="Local" value="longpath_8hpp.html#abd7dbdbc8d95626d0c66455078380aa1"><param name="ImageNumber" value="11"></OBJECT>
                   <LI><OBJECT type="text/sitemap"><param name="Name" value="longpath"><param name="Local" value="longpath_8hpp.html#a9eb75fd12cc66dbf3f61c8f5156694e1"><param name="ImageNumber" value="11"></OBJECT>
                   </UL>
+                <LI><OBJECT type="text/sitemap"><param name="Name" value="overlapped.hpp"><param name="Local" value="overlapped_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
+                  <UL>
+                  <LI><OBJECT type="text/sitemap"><param name="Name" value="init_overlapped_for_sync_io"><param name="Local" value="overlapped_8hpp.html#a388bd9a30ab487f5d035e542187e379a"><param name="ImageNumber" value="11"></OBJECT>
+                  <LI><OBJECT type="text/sitemap"><param name="Name" value="process_async_io_result"><param name="Local" value="overlapped_8hpp.html#a4ed4d1bae6b01fb85f8e6fad0b10599d"><param name="ImageNumber" value="11"></OBJECT>
+                  </UL>
                 <LI><OBJECT type="text/sitemap"><param name="Name" value="pwd.hpp"><param name="Local" value="pwd_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
                   <UL>
                   <LI><OBJECT type="text/sitemap"><param name="Name" value="passwd"><param name="Local" value="structpasswd.html"><param name="ImageNumber" value="1"></OBJECT>
@@ -13841,7 +13847,7 @@
                   </UL>
                 <LI><OBJECT type="text/sitemap"><param name="Name" value="pipe.hpp"><param name="Local" value="posix_2pipe_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
                   <UL>
-                  <LI><OBJECT type="text/sitemap"><param name="Name" value="pipe"><param name="Local" value="posix_2pipe_8hpp.html#aada7738a90123ea91fcd4b60693c2a51"><param name="ImageNumber" value="11"></OBJECT>
+                  <LI><OBJECT type="text/sitemap"><param name="Name" value="pipe"><param name="Local" value="posix_2pipe_8hpp.html#afefbea8a88b84bed66580372accb18a9"><param name="ImageNumber" value="11"></OBJECT>
                   </UL>
                 <LI><OBJECT type="text/sitemap"><param name="Name" value="read.hpp"><param name="Local" value="3rdparty_2stout_2include_2stout_2os_2posix_2read_8hpp.html"><param name="ImageNumber" value="11"></OBJECT>
                 <LI><OBJECT type="text/sitemap"><param name="Name" value="realpath.hpp"><param name="Local" value="posix_2realpath_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
@@ -14030,8 +14036,8 @@
                       <LI><OBJECT type="text/sitemap"><param name="Name" value="HANDLE"><param name="Local" value="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f"><param name="ImageNumber" value="11"></OBJECT>
                       <LI><OBJECT type="text/sitemap"><param name="Name" value="SOCKET"><param name="Local" value="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa"><param name="ImageNumber" value="11"></OBJECT>
                       </UL>
-                    <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#a9e8a511230c23e3210e7a0268bb74e62"><param name="ImageNumber" value="11"></OBJECT>
-                    <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#a6cd1a34bb8239a9ad84bfd1dcb506b97"><param name="ImageNumber" value="11"></OBJECT>
+                    <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#a421497a56ee02f01dd4f0773d07eaa76"><param name="ImageNumber" value="11"></OBJECT>
+                    <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#a33cd936b5641a029b1ea2da80d71c748"><param name="ImageNumber" value="11"></OBJECT>
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#a43994eeb484a426990af657f691f66e0"><param name="ImageNumber" value="11"></OBJECT>
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#a278285643f263655c5f64f45451fc6e6"><param name="ImageNumber" value="11"></OBJECT>
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#a68733e16ee25fe8602557e6e9f534bc9"><param name="ImageNumber" value="11"></OBJECT>
@@ -14039,6 +14045,7 @@
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#a79c98e3c78c0a7155a8ed9f42832fd5d"><param name="ImageNumber" value="11"></OBJECT>
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="~WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#ad2ce21d9f77710472e19843e3e86343e"><param name="ImageNumber" value="11"></OBJECT>
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="crt"><param name="Local" value="classos_1_1WindowsFD.html#a94b69cae4edb8f3549845fbfa0355b7c"><param name="ImageNumber" value="11"></OBJECT>
+                    <LI><OBJECT type="text/sitemap"><param name="Name" value="is_overlapped"><param name="Local" value="classos_1_1WindowsFD.html#a4dce5dbc3d019589b4b61d6d17e1da45"><param name="ImageNumber" value="11"></OBJECT>
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="is_valid"><param name="Local" value="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33"><param name="ImageNumber" value="11"></OBJECT>
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="operator HANDLE"><param name="Local" value="classos_1_1WindowsFD.html#a8ba56c5251264ab13aeaaa34cde39bdb"><param name="ImageNumber" value="11"></OBJECT>
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="operator intptr_t"><param name="Local" value="classos_1_1WindowsFD.html#aa58f87561c2785c34ae7f34ce59abfe2"><param name="ImageNumber" value="11"></OBJECT>
@@ -14185,11 +14192,12 @@
                   </UL>
                 <LI><OBJECT type="text/sitemap"><param name="Name" value="pipe.hpp"><param name="Local" value="windows_2pipe_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
                   <UL>
-                  <LI><OBJECT type="text/sitemap"><param name="Name" value="pipe"><param name="Local" value="windows_2pipe_8hpp.html#aada7738a90123ea91fcd4b60693c2a51"><param name="ImageNumber" value="11"></OBJECT>
+                  <LI><OBJECT type="text/sitemap"><param name="Name" value="pipe"><param name="Local" value="windows_2pipe_8hpp.html#aaf74ddc18d833f8cbea1bdc81a4b24b8"><param name="ImageNumber" value="11"></OBJECT>
                   </UL>
                 <LI><OBJECT type="text/sitemap"><param name="Name" value="read.hpp"><param name="Local" value="3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
                   <UL>
                   <LI><OBJECT type="text/sitemap"><param name="Name" value="read"><param name="Local" value="3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp.html#a7e99bac0fb06315c051358c7916fe692"><param name="ImageNumber" value="11"></OBJECT>
+                  <LI><OBJECT type="text/sitemap"><param name="Name" value="read_async"><param name="Local" value="3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp.html#a00b6398808bc7afef46f705c1f92a2fe"><param name="ImageNumber" value="11"></OBJECT>
                   </UL>
                 <LI><OBJECT type="text/sitemap"><param name="Name" value="realpath.hpp"><param name="Local" value="windows_2realpath_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
                   <UL>
@@ -14212,6 +14220,7 @@
                 <LI><OBJECT type="text/sitemap"><param name="Name" value="sendfile.hpp"><param name="Local" value="windows_2sendfile_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
                   <UL>
                   <LI><OBJECT type="text/sitemap"><param name="Name" value="sendfile"><param name="Local" value="windows_2sendfile_8hpp.html#ac4d8cf58aea1781753bb27e1d40bdee0"><param name="ImageNumber" value="11"></OBJECT>
+                  <LI><OBJECT type="text/sitemap"><param name="Name" value="sendfile_async"><param name="Local" value="windows_2sendfile_8hpp.html#ad8eec8c973d58ad0db1a7b6d81e77e96"><param name="ImageNumber" value="11"></OBJECT>
                   </UL>
                 <LI><OBJECT type="text/sitemap"><param name="Name" value="shell.hpp"><param name="Local" value="windows_2shell_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
                   <UL>
@@ -14278,6 +14287,7 @@
                 <LI><OBJECT type="text/sitemap"><param name="Name" value="write.hpp"><param name="Local" value="windows_2write_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
                   <UL>
                   <LI><OBJECT type="text/sitemap"><param name="Name" value="write"><param name="Local" value="windows_2write_8hpp.html#a73da9d49515dfff761c4887c3d6032c0"><param name="ImageNumber" value="11"></OBJECT>
+                  <LI><OBJECT type="text/sitemap"><param name="Name" value="write_async"><param name="Local" value="windows_2write_8hpp.html#a1af52685ba3e8fe8676af86cd16a1eb8"><param name="ImageNumber" value="11"></OBJECT>
                   </UL>
                 <LI><OBJECT type="text/sitemap"><param name="Name" value="xattr.hpp"><param name="Local" value="windows_2xattr_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
                   <UL>


[06/13] mesos-site git commit: Updated the website built from mesos SHA: 21305ab.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/index.hhp
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/index.hhp b/content/api/latest/c++/index.hhp
index b16edc8..9f630ca 100644
--- a/content/api/latest/c++/index.hhp
+++ b/content/api/latest/c++/index.hhp
@@ -120,6 +120,7 @@ hashset_8hpp_source.html
 grp_8hpp_source.html
 inherit_8hpp_source.html
 longpath_8hpp_source.html
+overlapped_8hpp_source.html
 pwd_8hpp_source.html
 reparsepoint_8hpp_source.html
 symlink_8hpp_source.html
@@ -834,6 +835,7 @@ hashset_8hpp.html
 grp_8hpp.html
 inherit_8hpp.html
 longpath_8hpp.html
+overlapped_8hpp.html
 pwd_8hpp.html
 reparsepoint_8hpp.html
 symlink_8hpp.html

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/namespaceinternal_1_1windows.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespaceinternal_1_1windows.html b/content/api/latest/c++/namespaceinternal_1_1windows.html
index 0f4690e..d69cdf8 100644
--- a/content/api/latest/c++/namespaceinternal_1_1windows.html
+++ b/content/api/latest/c++/namespaceinternal_1_1windows.html
@@ -81,6 +81,10 @@ Functions</h2></td></tr>
 <tr class="separator:abd7dbdbc8d95626d0c66455078380aa1"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a9eb75fd12cc66dbf3f61c8f5156694e1"><td class="memItemLeft" align="right" valign="top">std::wstring&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceinternal_1_1windows.html#a9eb75fd12cc66dbf3f61c8f5156694e1">longpath</a> (const std::wstring &amp;path)</td></tr>
 <tr class="separator:a9eb75fd12cc66dbf3f61c8f5156694e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a388bd9a30ab487f5d035e542187e379a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; OVERLAPPED &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceinternal_1_1windows.html#a388bd9a30ab487f5d035e542187e379a">init_overlapped_for_sync_io</a> ()</td></tr>
+<tr class="separator:a388bd9a30ab487f5d035e542187e379a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4ed4d1bae6b01fb85f8e6fad0b10599d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classResult.html">Result</a>&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">process_async_io_result</a> (bool successful_return_code, size_t bytes_transfered)</td></tr>
+<tr class="separator:a4ed4d1bae6b01fb85f8e6fad0b10599d"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a9205fe9be7dc028375cd24338483152b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceinternal_1_1windows.html#a9205fe9be7dc028375cd24338483152b">reparse_point_attribute_set</a> (const std::wstring &amp;absolute_path)</td></tr>
 <tr class="separator:a9205fe9be7dc028375cd24338483152b"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:afd9a4ce68b9e02355cf2a92c49828081"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; <a class="el" href="structinternal_1_1windows_1_1SymbolicLink.html">SymbolicLink</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceinternal_1_1windows.html#afd9a4ce68b9e02355cf2a92c49828081">build_symbolic_link</a> (const <a class="el" href="namespaceinternal_1_1windows.html#ac3625d90ddd93b6c9a889610263990c1">REPARSE_DATA_BUFFER</a> &amp;data)</td></tr>
@@ -399,6 +403,29 @@ Functions</h2></td></tr>
 
 </div>
 </div>
+<a class="anchor" id="a388bd9a30ab487f5d035e542187e379a"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classTry.html">Try</a>&lt;OVERLAPPED&gt; internal::windows::init_overlapped_for_sync_io </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
 <a class="anchor" id="abd7dbdbc8d95626d0c66455078380aa1"></a>
 <div class="memitem">
 <div class="memproto">
@@ -447,6 +474,40 @@ Functions</h2></td></tr>
 
 </div>
 </div>
+<a class="anchor" id="a4ed4d1bae6b01fb85f8e6fad0b10599d"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classResult.html">Result</a>&lt;size_t&gt; internal::windows::process_async_io_result </td>
+          <td>(</td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>successful_return_code</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>bytes_transfered</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
 <a class="anchor" id="a39ca8fa0643b489f6bef951bef207c92"></a>
 <div class="memitem">
 <div class="memproto">

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/namespacemembers_func_i.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_func_i.html b/content/api/latest/c++/namespacemembers_func_i.html
index 4c894c7..4bd28e3 100644
--- a/content/api/latest/c++/namespacemembers_func_i.html
+++ b/content/api/latest/c++/namespacemembers_func_i.html
@@ -95,6 +95,9 @@
 <li>infos()
 : <a class="el" href="namespacerouting_1_1diagnosis_1_1socket.html#a8937277756951dcc28f2dbdbd9ea24d7">routing::diagnosis::socket</a>
 </li>
+<li>init_overlapped_for_sync_io()
+: <a class="el" href="namespaceinternal_1_1windows.html#a388bd9a30ab487f5d035e542187e379a">internal::windows</a>
+</li>
 <li>initialize()
 : <a class="el" href="namespacemesos_1_1internal_1_1logging.html#a6f808fe557cb1dc68502e24a6345bc30">mesos::internal::logging</a>
 , <a class="el" href="namespacenet.html#a418ace8fe7728f38b2124b5445e52775">net</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/namespacemembers_func_p.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_func_p.html b/content/api/latest/c++/namespacemembers_func_p.html
index 7cdaf6b..4696d65 100644
--- a/content/api/latest/c++/namespacemembers_func_p.html
+++ b/content/api/latest/c++/namespacemembers_func_p.html
@@ -174,11 +174,11 @@
 : <a class="el" href="namespaceos.html#a3fc3402e6d83c2e2f1dc680d77489a29">os</a>
 </li>
 <li>pids()
-: <a class="el" href="namespaceos.html#abdecf7ea8278e2d8b2110ecd2e8ca0ec">os</a>
+: <a class="el" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">os</a>
 , <a class="el" href="namespaceproc.html#a810141e1502dd8b9a7a410da6caf7ed7">proc</a>
 </li>
 <li>pipe()
-: <a class="el" href="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51">os</a>
+: <a class="el" href="namespaceos.html#afefbea8a88b84bed66580372accb18a9">os</a>
 </li>
 <li>pivot_root()
 : <a class="el" href="namespacemesos_1_1internal_1_1fs.html#a6ca148a3dbe24af71c5b08edc0c5d753">mesos::internal::fs</a>
@@ -198,13 +198,16 @@
 <li>post()
 : <a class="el" href="namespaceprocess_1_1http.html#ae18e508ddf8cd65d7778320fa57550f3">process::http</a>
 , <a class="el" href="namespaceprocess_1_1http_1_1streaming.html#ae8a18c7263d4aefb7b1973c12590c688">process::http::streaming</a>
-, <a class="el" href="namespaceprocess.html#ab52d25f9fe4b28df7268c688725894d9">process</a>
+, <a class="el" href="namespaceprocess.html#a2b0f5478fa6a52497167aa994ff600d9">process</a>
 </li>
 <li>prepare()
 : <a class="el" href="namespacecgroups.html#a4bf20862574beb5b0f9af7799489866f">cgroups</a>
 </li>
 <li>process()
-: <a class="el" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">os</a>
+: <a class="el" href="namespaceos.html#acd11eaf54627e394ca79979ee884f6c4">os</a>
+</li>
+<li>process_async_io_result()
+: <a class="el" href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">internal::windows</a>
 </li>
 <li>process_entry()
 : <a class="el" href="namespaceos.html#a64774f3176080d29eedcee42ae23c747">os</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/namespacemembers_func_r.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_func_r.html b/content/api/latest/c++/namespacemembers_func_r.html
index 753101c..158ecfd 100644
--- a/content/api/latest/c++/namespacemembers_func_r.html
+++ b/content/api/latest/c++/namespacemembers_func_r.html
@@ -109,6 +109,9 @@
 <li>read&lt; std::string &gt;()
 : <a class="el" href="namespacemesos_1_1internal_1_1slave_1_1state.html#a19c92fe2f0998dbbc281938ca636b3ca">mesos::internal::slave::state</a>
 </li>
+<li>read_async()
+: <a class="el" href="namespaceos.html#a00b6398808bc7afef46f705c1f92a2fe">os</a>
+</li>
 <li>readCredential()
 : <a class="el" href="namespacemesos_1_1internal_1_1credentials.html#a69e23d6d4e7b9d1c64671c28915a3ab3">mesos::internal::credentials</a>
 </li>
@@ -185,7 +188,7 @@
 : <a class="el" href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5662ec35da05fa">process::http</a>
 </li>
 <li>requestDelete()
-: <a class="el" href="namespaceprocess_1_1http.html#aa37acfb70e0b901b6f10c3d4a9b33c95">process::http</a>
+: <a class="el" href="namespaceprocess_1_1http.html#a1443ad581d0388a87013f0284906c2b3">process::http</a>
 </li>
 <li>reregisterSlave()
 : <a class="el" href="namespacemesos_1_1internal_1_1master_1_1validation_1_1master_1_1message.html#aa161808296e305b8b17479f2f7b70fa4">mesos::internal::master::validation::master::message</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/namespacemembers_func_s.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_func_s.html b/content/api/latest/c++/namespacemembers_func_s.html
index 60a318c..23e773f 100644
--- a/content/api/latest/c++/namespacemembers_func_s.html
+++ b/content/api/latest/c++/namespacemembers_func_s.html
@@ -108,6 +108,9 @@
 <li>sendfile()
 : <a class="el" href="namespaceos.html#a625f02f99e88345b3e8f59223d7aa237">os</a>
 </li>
+<li>sendfile_async()
+: <a class="el" href="namespaceos.html#ad8eec8c973d58ad0db1a7b6d81e77e96">os</a>
+</li>
 <li>serialize()
 : <a class="el" href="namespacemesos_1_1internal.html#a9c1f91de8a8a389b357b81f7b51b0554">mesos::internal</a>
 , <a class="el" href="namespaceprotobuf.html#aaebb7981284b7eddc065276b7eaa674d">protobuf</a>
@@ -212,7 +215,7 @@
 </li>
 <li>size()
 : <a class="el" href="namespacefs.html#a60a9e5ca4119866d80691ce3c4701dc9">fs</a>
-, <a class="el" href="namespaceos_1_1stat.html#a8e5d1965ab97592fe1e15ea8201d135c">os::stat</a>
+, <a class="el" href="namespaceos_1_1stat.html#af7fab12f2f4bf8ec51d5791202d41abc">os::stat</a>
 </li>
 <li>sleep()
 : <a class="el" href="namespaceos.html#ab2b826c68a25af9e9ef47c570c36e137">os</a>
@@ -225,11 +228,11 @@
 , <a class="el" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">routing</a>
 </li>
 <li>soft_limit_in_bytes()
-: <a class="el" href="namespacecgroups_1_1memory.html#a1839563c856a81176f928d3fd6012b9d">cgroups::memory</a>
+: <a class="el" href="namespacecgroups_1_1memory.html#a8773afb0ceff81705f1579585333f9fd">cgroups::memory</a>
 </li>
 <li>spawn()
 : <a class="el" href="namespaceos.html#a18f614e5bdf40984c33888a5fa9599ca">os</a>
-, <a class="el" href="namespaceprocess.html#aa3e3f539080a94857e07401dd26b2f8f">process</a>
+, <a class="el" href="namespaceprocess.html#aff22904a83567125d3b4d0d88e5a2270">process</a>
 </li>
 <li>split()
 : <a class="el" href="namespacestrings.html#a1f86a4a73f20056475dc065ec984eb7a">strings</a>
@@ -243,7 +246,7 @@
 <li>stat()
 : <a class="el" href="namespacecgroups_1_1cpuacct.html#a0aa25320dd324ad06619c2d650020102">cgroups::cpuacct</a>
 , <a class="el" href="namespacecgroups.html#a78e3c7ca2e422779908eec45f859d757">cgroups</a>
-, <a class="el" href="namespaceos_1_1stat_1_1internal.html#a1e8d1b1fd61d53e84b399c10bb67520d">os::stat::internal</a>
+, <a class="el" href="namespaceos_1_1stat_1_1internal.html#aaa15e8ca46f9a135dc642eeb8340d0c1">os::stat::internal</a>
 </li>
 <li>statistics()
 : <a class="el" href="namespacerouting_1_1link.html#a8486fce953717fcb949bfdc17a2dd3e1">routing::link</a>
@@ -277,7 +280,7 @@
 : <a class="el" href="namespaceprocess.html#acd3d31ab4db7e39286a689b69ff8be3e">process</a>
 </li>
 <li>subsystems()
-: <a class="el" href="namespacecgroups.html#a43ff5aa5dec5f24b0a3620847e9dd6b6">cgroups</a>
+: <a class="el" href="namespacecgroups.html#a155d0ce30a15e5b8b3ca02b189a7ead8">cgroups</a>
 </li>
 <li>supported()
 : <a class="el" href="namespacemesos_1_1internal_1_1fs.html#a0c6fe63428ca6e781338ed507a5952bd">mesos::internal::fs</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/namespacemembers_func_w.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_func_w.html b/content/api/latest/c++/namespacemembers_func_w.html
index 3970531..0039be7 100644
--- a/content/api/latest/c++/namespacemembers_func_w.html
+++ b/content/api/latest/c++/namespacemembers_func_w.html
@@ -107,7 +107,10 @@
 , <a class="el" href="namespaceos_1_1signal__safe.html#a67bf0cd3aa924b5584a8744f15430835">os::signal_safe</a>
 , <a class="el" href="namespaceos.html#a1b67d073837cf74e5cdfa785d5c95fac">os</a>
 , <a class="el" href="namespaceprocess_1_1io.html#a49105dc036ad04225c92bd673da5ce39">process::io</a>
-, <a class="el" href="namespaceprotobuf.html#ad7c5a30c2e972caaed6b3896ac7e477f">protobuf</a>
+, <a class="el" href="namespaceprotobuf.html#aaedc9cc58ee2711a7b5e8831ba02a899">protobuf</a>
+</li>
+<li>write_async()
+: <a class="el" href="namespaceos.html#a1af52685ba3e8fe8676af86cd16a1eb8">os</a>
 </li>
 <li>write_impl()
 : <a class="el" href="namespaceos_1_1signal__safe.html#ad42f0ba6d36e7d9611f80820add8424a">os::signal_safe</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/namespacemembers_i.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_i.html b/content/api/latest/c++/namespacemembers_i.html
index 4b199ca..7a2fc74 100644
--- a/content/api/latest/c++/namespacemembers_i.html
+++ b/content/api/latest/c++/namespacemembers_i.html
@@ -107,6 +107,9 @@
 <li>INHERITABLE
 : <a class="el" href="namespacemesos_1_1internal_1_1capabilities.html#aaa5ec6d56ccbeba718b9e8fc6ec2f7c9a7bd4cdec2607b4dea165cdd1b7a935e2">mesos::internal::capabilities</a>
 </li>
+<li>init_overlapped_for_sync_io()
+: <a class="el" href="namespaceinternal_1_1windows.html#a388bd9a30ab487f5d035e542187e379a">internal::windows</a>
+</li>
 <li>initialize()
 : <a class="el" href="namespacemesos_1_1internal_1_1logging.html#a6f808fe557cb1dc68502e24a6345bc30">mesos::internal::logging</a>
 , <a class="el" href="namespacenet.html#a418ace8fe7728f38b2124b5445e52775">net</a>
@@ -208,7 +211,7 @@
 : <a class="el" href="namespaceos.html#a32281111157c19876d8dd6dac7cdbc13">os</a>
 </li>
 <li>isdir()
-: <a class="el" href="namespaceos_1_1stat.html#a0797b18b32940eefae0d4db235e2167d">os::stat</a>
+: <a class="el" href="namespaceos_1_1stat.html#aa86aaa21fefc0e9cab89050b60aeca40">os::stat</a>
 </li>
 <li>isfile()
 : <a class="el" href="namespaceos_1_1stat.html#a178d1c99fc88dae58f9a5fc4fc3167d5">os::stat</a>
@@ -217,7 +220,7 @@
 : <a class="el" href="namespaceos_1_1stat.html#a0ba4d272b938da76e404648103077480">os::stat</a>
 </li>
 <li>isNonblock()
-: <a class="el" href="namespaceos.html#a08ab99fba32c9cb61929be457a150fca">os</a>
+: <a class="el" href="namespaceos.html#a238d27a90a749967761c1019d27b7e83">os</a>
 </li>
 <li>isolate()
 : <a class="el" href="namespacecgroups.html#aceb245d6ea6362ac1c2b1247556179d6">cgroups</a>
@@ -241,7 +244,7 @@
 : <a class="el" href="namespacemesos_1_1roles.html#a70ebdbe08b14acfb4ef2571ce909cc86">mesos::roles</a>
 </li>
 <li>isTerminalState()
-: <a class="el" href="namespacemesos_1_1internal_1_1protobuf.html#ade777537955dc212aea80866edd089f3">mesos::internal::protobuf</a>
+: <a class="el" href="namespacemesos_1_1internal_1_1protobuf.html#aa31907fb62769822a77c06ffbf10451f">mesos::internal::protobuf</a>
 </li>
 <li>isUp()
 : <a class="el" href="namespacerouting_1_1link.html#a7d1c8b69ea1c451975f9275fd11466e3">routing::link</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/namespacemembers_m.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_m.html b/content/api/latest/c++/namespacemembers_m.html
index 2b3de0f..024653d 100644
--- a/content/api/latest/c++/namespacemembers_m.html
+++ b/content/api/latest/c++/namespacemembers_m.html
@@ -389,7 +389,7 @@
 : <a class="el" href="namespacestrings.html#a6ebac6b171c6b20adb298cb020915b03">strings</a>
 </li>
 <li>model()
-: <a class="el" href="namespacemesos_1_1internal.html#a0f1e16f608664041e365cbf89dbd4739">mesos::internal</a>
+: <a class="el" href="namespacemesos_1_1internal.html#af4e0b860b9f388537ecdd51c8f993441">mesos::internal</a>
 </li>
 <li>ModuleID
 : <a class="el" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6">mesos::internal::tests</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/namespacemembers_p.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_p.html b/content/api/latest/c++/namespacemembers_p.html
index c8af066..c4d5ebf 100644
--- a/content/api/latest/c++/namespacemembers_p.html
+++ b/content/api/latest/c++/namespacemembers_p.html
@@ -190,7 +190,7 @@
 , <a class="el" href="namespaceproc.html#a810141e1502dd8b9a7a410da6caf7ed7">proc</a>
 </li>
 <li>pipe()
-: <a class="el" href="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51">os</a>
+: <a class="el" href="namespaceos.html#afefbea8a88b84bed66580372accb18a9">os</a>
 </li>
 <li>pivot_root()
 : <a class="el" href="namespacemesos_1_1internal_1_1fs.html#a6ca148a3dbe24af71c5b08edc0c5d753">mesos::internal::fs</a>
@@ -215,7 +215,7 @@
 </li>
 <li>post()
 : <a class="el" href="namespaceprocess_1_1http.html#ae18e508ddf8cd65d7778320fa57550f3">process::http</a>
-, <a class="el" href="namespaceprocess_1_1http_1_1streaming.html#af998266af21e3156eca4f8c2c7e16e5a">process::http::streaming</a>
+, <a class="el" href="namespaceprocess_1_1http_1_1streaming.html#ae8a18c7263d4aefb7b1973c12590c688">process::http::streaming</a>
 , <a class="el" href="namespaceprocess.html#a2b0f5478fa6a52497167aa994ff600d9">process</a>
 </li>
 <li>POST_RESERVATION_REFINEMENT
@@ -237,7 +237,10 @@
 : <a class="el" href="namespacecgroups.html#a4bf20862574beb5b0f9af7799489866f">cgroups</a>
 </li>
 <li>process()
-: <a class="el" href="namespaceos.html#acd11eaf54627e394ca79979ee884f6c4">os</a>
+: <a class="el" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">os</a>
+</li>
+<li>process_async_io_result()
+: <a class="el" href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">internal::windows</a>
 </li>
 <li>process_entry()
 : <a class="el" href="namespaceos.html#a64774f3176080d29eedcee42ae23c747">os</a>
@@ -251,7 +254,7 @@
 , <a class="el" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a3b1f8bd7b18c51af9d1f58842950b545">mesos::internal::log::protocol</a>
 </li>
 <li>protobuf()
-: <a class="el" href="namespaceJSON.html#a1d44660d98caa78d154c47b5f60ba7f8">JSON</a>
+: <a class="el" href="namespaceJSON.html#a93c179a1a5bd4164169d47cb1803f2a6">JSON</a>
 </li>
 <li>pstree()
 : <a class="el" href="namespaceos.html#a0b553259c4b9eaee7c3228502fa2406b">os</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/namespacemembers_r.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_r.html b/content/api/latest/c++/namespacemembers_r.html
index 7613395..c4545bd 100644
--- a/content/api/latest/c++/namespacemembers_r.html
+++ b/content/api/latest/c++/namespacemembers_r.html
@@ -120,6 +120,9 @@
 <li>read&lt; std::string &gt;()
 : <a class="el" href="namespacemesos_1_1internal_1_1slave_1_1state.html#a19c92fe2f0998dbbc281938ca636b3ca">mesos::internal::slave::state</a>
 </li>
+<li>read_async()
+: <a class="el" href="namespaceos.html#a00b6398808bc7afef46f705c1f92a2fe">os</a>
+</li>
 <li>readCredential()
 : <a class="el" href="namespacemesos_1_1internal_1_1credentials.html#a69e23d6d4e7b9d1c64671c28915a3ab3">mesos::internal::credentials</a>
 </li>
@@ -227,7 +230,7 @@
 : <a class="el" href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5662ec35da05fa">process::http</a>
 </li>
 <li>requestDelete()
-: <a class="el" href="namespaceprocess_1_1http.html#aa37acfb70e0b901b6f10c3d4a9b33c95">process::http</a>
+: <a class="el" href="namespaceprocess_1_1http.html#a1443ad581d0388a87013f0284906c2b3">process::http</a>
 </li>
 <li>REQUEUES
 : <a class="el" href="namespacerouting_1_1queueing_1_1statistics.html#a9a6c9ceca9da969ea8a5536ea6551b0e">routing::queueing::statistics</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/namespacemembers_s.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_s.html b/content/api/latest/c++/namespacemembers_s.html
index 38bcceb..5a5ddc6 100644
--- a/content/api/latest/c++/namespacemembers_s.html
+++ b/content/api/latest/c++/namespacemembers_s.html
@@ -114,6 +114,9 @@
 <li>sendfile()
 : <a class="el" href="namespaceos.html#a625f02f99e88345b3e8f59223d7aa237">os</a>
 </li>
+<li>sendfile_async()
+: <a class="el" href="namespaceos.html#ad8eec8c973d58ad0db1a7b6d81e77e96">os</a>
+</li>
 <li>serialize()
 : <a class="el" href="namespacemesos_1_1internal.html#a9c1f91de8a8a389b357b81f7b51b0554">mesos::internal</a>
 , <a class="el" href="namespaceprotobuf.html#aaebb7981284b7eddc065276b7eaa674d">protobuf</a>
@@ -259,7 +262,7 @@
 : <a class="el" href="namespaceprocess.html#a355bad70041c7d49455fb810578a72cf">process</a>
 </li>
 <li>soft_limit_in_bytes()
-: <a class="el" href="namespacecgroups_1_1memory.html#a1839563c856a81176f928d3fd6012b9d">cgroups::memory</a>
+: <a class="el" href="namespacecgroups_1_1memory.html#a8773afb0ceff81705f1579585333f9fd">cgroups::memory</a>
 </li>
 <li>spawn()
 : <a class="el" href="namespaceos.html#a18f614e5bdf40984c33888a5fa9599ca">os</a>
@@ -296,7 +299,7 @@
 , <a class="el" href="namespacerouting_1_1queueing_1_1internal.html#a91cfc1e150fcd66e41ce327b7e1908de">routing::queueing::internal</a>
 </li>
 <li>status()
-: <a class="el" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">proc</a>
+: <a class="el" href="namespaceproc.html#a1bf2b02dcb579ebc87a75d4bccce97b1">proc</a>
 </li>
 <li>STATUS_FILE
 : <a class="el" href="namespacemesos_1_1internal_1_1slave_1_1containerizer_1_1paths.html#a5d67fb766dc84ea674a43507346c322a">mesos::internal::slave::containerizer::paths</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/namespacemembers_w.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_w.html b/content/api/latest/c++/namespacemembers_w.html
index 8e2e0bd..2bf8f2a 100644
--- a/content/api/latest/c++/namespacemembers_w.html
+++ b/content/api/latest/c++/namespacemembers_w.html
@@ -129,16 +129,19 @@
 : <a class="el" href="namespacecgroups.html#ad199dcd922eab26b23b7011c7e0ca34a">cgroups</a>
 , <a class="el" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a66ff2d5af4db53227f787281c0765d8d">mesos::internal::log::protocol</a>
 , <a class="el" href="namespacemesos_1_1internal_1_1log.html#a644a438399ebd57381f8c3eb9261c9bc">mesos::internal::log</a>
-, <a class="el" href="namespaceos_1_1signal__safe.html#a1fe471bfb9a8e827779d24a58ba155d3">os::signal_safe</a>
-, <a class="el" href="namespaceos.html#aa0e3acff8992055da620cae8b455d93d">os</a>
+, <a class="el" href="namespaceos_1_1signal__safe.html#a35b77e10ddf35fa4569cb1a7d1e3532b">os::signal_safe</a>
+, <a class="el" href="namespaceos.html#a1b67d073837cf74e5cdfa785d5c95fac">os</a>
 </li>
 <li>WRITE
 : <a class="el" href="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc">process::io</a>
 </li>
 <li>write()
-: <a class="el" href="namespaceprocess_1_1io.html#a49105dc036ad04225c92bd673da5ce39">process::io</a>
+: <a class="el" href="namespaceprocess_1_1io.html#a4c2c8de8f0750ab0f0ba40283774dfb6">process::io</a>
 , <a class="el" href="namespaceprotobuf.html#a1c2352b3f232044d4e960e227d530a92">protobuf</a>
 </li>
+<li>write_async()
+: <a class="el" href="namespaceos.html#a1af52685ba3e8fe8676af86cd16a1eb8">os</a>
+</li>
 <li>write_impl()
 : <a class="el" href="namespaceos_1_1signal__safe.html#ad42f0ba6d36e7d9611f80820add8424a">os::signal_safe</a>
 </li>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/namespaceos.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespaceos.html b/content/api/latest/c++/namespaceos.html
index fdc6884..88ff341 100644
--- a/content/api/latest/c++/namespaceos.html
+++ b/content/api/latest/c++/namespaceos.html
@@ -180,8 +180,8 @@ Functions</h2></td></tr>
 <tr class="separator:aaf5d5468adc1b85cf9bb7126e70807ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:af0898f40a19c3804347e30b9efa0984a"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#af0898f40a19c3804347e30b9efa0984a">pagesize</a> ()</td></tr>
 <tr class="separator:af0898f40a19c3804347e30b9efa0984a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aada7738a90123ea91fcd4b60693c2a51"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; std::array&lt; int, 2 &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51">pipe</a> ()</td></tr>
-<tr class="separator:aada7738a90123ea91fcd4b60693c2a51"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afefbea8a88b84bed66580372accb18a9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; std::array&lt; int, 2 &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#afefbea8a88b84bed66580372accb18a9">pipe</a> ()</td></tr>
+<tr class="separator:afefbea8a88b84bed66580372accb18a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aa533c79d98af12b40b567a851e442373"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classResult.html">Result</a>&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#aa533c79d98af12b40b567a851e442373">realpath</a> (const std::string &amp;path)</td></tr>
 <tr class="separator:aa533c79d98af12b40b567a851e442373"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a4cdd0a41f89eeb7cc908f3dec0f7f15a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; <a class="el" href="structNothing.html">Nothing</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#a4cdd0a41f89eeb7cc908f3dec0f7f15a">rename</a> (const std::string &amp;from, const std::string &amp;to)</td></tr>
@@ -326,8 +326,14 @@ Functions</h2></td></tr>
 <tr class="separator:a706dc9d1287978f358a9a23b77037fb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a8181969d159a69d91d1e265f1bb1eddc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; <a class="el" href="structNothing.html">Nothing</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#a8181969d159a69d91d1e265f1bb1eddc">kill_job</a> (<a class="el" href="classSharedHandle.html">SharedHandle</a> job_handle)</td></tr>
 <tr class="separator:a8181969d159a69d91d1e265f1bb1eddc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaf74ddc18d833f8cbea1bdc81a4b24b8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; std::array&lt; <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>, 2 &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#aaf74ddc18d833f8cbea1bdc81a4b24b8">pipe</a> (bool read_overlapped=true, bool write_overlapped=true)</td></tr>
+<tr class="separator:aaf74ddc18d833f8cbea1bdc81a4b24b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a00b6398808bc7afef46f705c1f92a2fe"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classResult.html">Result</a>&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#a00b6398808bc7afef46f705c1f92a2fe">read_async</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, void *data, size_t size, OVERLAPPED *overlapped)</td></tr>
+<tr class="separator:a00b6398808bc7afef46f705c1f92a2fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a7e99bac0fb06315c051358c7916fe692"><td class="memItemLeft" align="right" valign="top"><a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#a7e99bac0fb06315c051358c7916fe692">read</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, void *data, size_t size)</td></tr>
 <tr class="separator:a7e99bac0fb06315c051358c7916fe692"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad8eec8c973d58ad0db1a7b6d81e77e96"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classResult.html">Result</a>&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#ad8eec8c973d58ad0db1a7b6d81e77e96">sendfile_async</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;s, const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, size_t length, OVERLAPPED *overlapped)</td></tr>
+<tr class="separator:ad8eec8c973d58ad0db1a7b6d81e77e96"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ac4d8cf58aea1781753bb27e1d40bdee0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; <a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a>, <a class="el" href="error_8hpp.html#a176f6fc34ea37d40201853a52a475762">SocketError</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#ac4d8cf58aea1781753bb27e1d40bdee0">sendfile</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;s, const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, off_t offset, size_t length)</td></tr>
 <tr class="separator:ac4d8cf58aea1781753bb27e1d40bdee0"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:abedec07e6e468b54920d3b921a49eb36"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classOption.html">Option</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#abedec07e6e468b54920d3b921a49eb36">spawn</a> (const std::string &amp;command, const std::vector&lt; std::string &gt; &amp;arguments, const <a class="el" href="classOption.html">Option</a>&lt; std::map&lt; std::string, std::string &gt;&gt; &amp;<a class="el" href="namespaceos.html#a00a73ff5de812b0d6e1ffbbb16fc1f27">environment</a>=<a class="el" href="structNone.html">None</a>())</td></tr>
@@ -336,6 +342,8 @@ Functions</h2></td></tr>
 <tr class="separator:a1de77f208d0bc72cf79e7eb9a6b487c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aebc3586b2be0d2b9093ccfbf25dfcde8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#aebc3586b2be0d2b9093ccfbf25dfcde8">execvpe</a> (const std::string &amp;command, const std::vector&lt; std::string &gt; &amp;argv, const std::map&lt; std::string, std::string &gt; &amp;envp)</td></tr>
 <tr class="separator:aebc3586b2be0d2b9093ccfbf25dfcde8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1af52685ba3e8fe8676af86cd16a1eb8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classResult.html">Result</a>&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#a1af52685ba3e8fe8676af86cd16a1eb8">write_async</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, const void *data, size_t size, OVERLAPPED *overlapped)</td></tr>
+<tr class="separator:a1af52685ba3e8fe8676af86cd16a1eb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a73da9d49515dfff761c4887c3d6032c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">write</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, const void *data, size_t size)</td></tr>
 <tr class="separator:a73da9d49515dfff761c4887c3d6032c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a1b67d073837cf74e5cdfa785d5c95fac"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; <a class="el" href="structNothing.html">Nothing</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#a1b67d073837cf74e5cdfa785d5c95fac">write</a> (<a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, const std::string &amp;message)</td></tr>
@@ -3093,7 +3101,7 @@ template&lt;typename... T&gt; </div>
 
 </div>
 </div>
-<a class="anchor" id="aada7738a90123ea91fcd4b60693c2a51"></a>
+<a class="anchor" id="afefbea8a88b84bed66580372accb18a9"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -3101,7 +3109,7 @@ template&lt;typename... T&gt; </div>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="classTry.html">Try</a>&lt; std::array&lt; <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>, 2 &gt; &gt; os::pipe </td>
+          <td class="memname"><a class="el" href="classTry.html">Try</a>&lt;std::array&lt;int, 2&gt; &gt; os::pipe </td>
           <td>(</td>
           <td class="paramname"></td><td>)</td>
           <td></td>
@@ -3116,6 +3124,40 @@ template&lt;typename... T&gt; </div>
 
 </div>
 </div>
+<a class="anchor" id="aaf74ddc18d833f8cbea1bdc81a4b24b8"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classTry.html">Try</a>&lt;std::array&lt;<a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>, 2&gt; &gt; os::pipe </td>
+          <td>(</td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>read_overlapped</em> = <code>true</code>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>write_overlapped</em> = <code>true</code>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
 <a class="anchor" id="ae19e4161a51b86a1f330f3bf1dc75389"></a>
 <div class="memitem">
 <div class="memproto">
@@ -3360,7 +3402,7 @@ template&lt;typename... T&gt; </div>
 
 </div>
 </div>
-<a class="anchor" id="a7e99bac0fb06315c051358c7916fe692"></a>
+<a class="anchor" id="aa1d97ff0a93229e1fe6b33e3e2d567f7"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -3368,20 +3410,14 @@ template&lt;typename... T&gt; </div>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> os::read </td>
+          <td class="memname"><a class="el" href="classResult.html">Result</a>&lt;std::string&gt; os::read </td>
           <td>(</td>
-          <td class="paramtype">const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;&#160;</td>
+          <td class="paramtype"><a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&#160;</td>
           <td class="paramname"><em>fd</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">void *&#160;</td>
-          <td class="paramname"><em>data</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
           <td class="paramtype">size_t&#160;</td>
           <td class="paramname"><em>size</em>&#160;</td>
         </tr>
@@ -3400,7 +3436,7 @@ template&lt;typename... T&gt; </div>
 
 </div>
 </div>
-<a class="anchor" id="aa1d97ff0a93229e1fe6b33e3e2d567f7"></a>
+<a class="anchor" id="a7e99bac0fb06315c051358c7916fe692"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -3408,14 +3444,20 @@ template&lt;typename... T&gt; </div>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="classResult.html">Result</a>&lt;std::string&gt; os::read </td>
+          <td class="memname"><a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> os::read </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&#160;</td>
+          <td class="paramtype">const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;&#160;</td>
           <td class="paramname"><em>fd</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
+          <td class="paramtype">void *&#160;</td>
+          <td class="paramname"><em>data</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
           <td class="paramtype">size_t&#160;</td>
           <td class="paramname"><em>size</em>&#160;</td>
         </tr>
@@ -3458,6 +3500,52 @@ template&lt;typename... T&gt; </div>
 
 </div>
 </div>
+<a class="anchor" id="a00b6398808bc7afef46f705c1f92a2fe"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classResult.html">Result</a>&lt;size_t&gt; os::read_async </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;&#160;</td>
+          <td class="paramname"><em>fd</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&#160;</td>
+          <td class="paramname"><em>data</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">OVERLAPPED *&#160;</td>
+          <td class="paramname"><em>overlapped</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
 <a class="anchor" id="aa533c79d98af12b40b567a851e442373"></a>
 <div class="memitem">
 <div class="memproto">
@@ -3644,7 +3732,7 @@ template&lt;typename... T&gt; </div>
 
 </div>
 </div>
-<a class="anchor" id="ac4d8cf58aea1781753bb27e1d40bdee0"></a>
+<a class="anchor" id="a625f02f99e88345b3e8f59223d7aa237"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -3654,13 +3742,13 @@ template&lt;typename... T&gt; </div>
         <tr>
           <td class="memname"><a class="el" href="classTry.html">Try</a>&lt;<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a>, <a class="el" href="error_8hpp.html#a176f6fc34ea37d40201853a52a475762">SocketError</a>&gt; os::sendfile </td>
           <td>(</td>
-          <td class="paramtype">const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;&#160;</td>
+          <td class="paramtype">int&#160;</td>
           <td class="paramname"><em>s</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;&#160;</td>
+          <td class="paramtype">int&#160;</td>
           <td class="paramname"><em>fd</em>, </td>
         </tr>
         <tr>
@@ -3690,7 +3778,7 @@ template&lt;typename... T&gt; </div>
 
 </div>
 </div>
-<a class="anchor" id="a625f02f99e88345b3e8f59223d7aa237"></a>
+<a class="anchor" id="ac4d8cf58aea1781753bb27e1d40bdee0"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -3700,13 +3788,13 @@ template&lt;typename... T&gt; </div>
         <tr>
           <td class="memname"><a class="el" href="classTry.html">Try</a>&lt;<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a>, <a class="el" href="error_8hpp.html#a176f6fc34ea37d40201853a52a475762">SocketError</a>&gt; os::sendfile </td>
           <td>(</td>
-          <td class="paramtype">int&#160;</td>
+          <td class="paramtype">const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;&#160;</td>
           <td class="paramname"><em>s</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">int&#160;</td>
+          <td class="paramtype">const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;&#160;</td>
           <td class="paramname"><em>fd</em>, </td>
         </tr>
         <tr>
@@ -3736,6 +3824,52 @@ template&lt;typename... T&gt; </div>
 
 </div>
 </div>
+<a class="anchor" id="ad8eec8c973d58ad0db1a7b6d81e77e96"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classResult.html">Result</a>&lt;size_t&gt; os::sendfile_async </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;&#160;</td>
+          <td class="paramname"><em>s</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;&#160;</td>
+          <td class="paramname"><em>fd</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>length</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">OVERLAPPED *&#160;</td>
+          <td class="paramname"><em>overlapped</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
 <a class="anchor" id="a66d4371272f7c8f52ffb4f440c5a3762"></a>
 <div class="memitem">
 <div class="memproto">
@@ -4819,6 +4953,52 @@ template&lt;typename T &gt; </div>
 
 </div>
 </div>
+<a class="anchor" id="a1af52685ba3e8fe8676af86cd16a1eb8"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classResult.html">Result</a>&lt;size_t&gt; os::write_async </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;&#160;</td>
+          <td class="paramname"><em>fd</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void *&#160;</td>
+          <td class="paramname"><em>data</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">OVERLAPPED *&#160;</td>
+          <td class="paramname"><em>overlapped</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
 <h2 class="groupheader">Variable Documentation</h2>
 <a class="anchor" id="a8d90278daa51c4fe9fcb9e54757187b5"></a>
 <div class="memitem">

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/overlapped_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/overlapped_8hpp.html b/content/api/latest/c++/overlapped_8hpp.html
new file mode 100644
index 0000000..82524ab
--- /dev/null
+++ b/content/api/latest/c++/overlapped_8hpp.html
@@ -0,0 +1,88 @@
+<!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.11"/>
+<title>Apache Mesos: 3rdparty/stout/include/stout/internal/windows/overlapped.hpp File Reference</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="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">Apache Mesos
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.11 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="examples.html"><span>Examples</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_aa547de1d719d14adccfca1dfb1735b3.html">stout</a></li><li class="navelem"><a class="el" href="dir_1a1b923d951dd999d43396870333fc33.html">include</a></li><li class="navelem"><a class="el" href="dir_dbd52553d038069c1ed93e3477ea333d.html">stout</a></li><li class="navelem"><a class="el" href="dir_35c8ff4668e5819502b5d29320c39425.html">internal</a></li><li class="navelem"><a class="el" href="dir_3bd05d674f9d85fce6785660a08f69c2.html">windows</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#namespaces">Namespaces</a> &#124;
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">overlapped.hpp File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;climits&gt;</code><br />
+<code>#include &lt;type_traits&gt;</code><br />
+<code>#include &lt;<a class="el" href="result_8hpp_source.html">stout/result.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp_source.html">stout/windows.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="int__fd_8hpp_source.html">stout/os/int_fd.hpp</a>&gt;</code><br />
+</div>
+<p><a href="overlapped_8hpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceinternal"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceinternal.html">internal</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:namespaceinternal_1_1windows"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceinternal_1_1windows.html">internal::windows</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a388bd9a30ab487f5d035e542187e379a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; OVERLAPPED &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceinternal_1_1windows.html#a388bd9a30ab487f5d035e542187e379a">internal::windows::init_overlapped_for_sync_io</a> ()</td></tr>
+<tr class="separator:a388bd9a30ab487f5d035e542187e379a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4ed4d1bae6b01fb85f8e6fad0b10599d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classResult.html">Result</a>&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">internal::windows::process_async_io_result</a> (bool successful_return_code, size_t bytes_transfered)</td></tr>
+<tr class="separator:a4ed4d1bae6b01fb85f8e6fad0b10599d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/overlapped_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/overlapped_8hpp_source.html b/content/api/latest/c++/overlapped_8hpp_source.html
new file mode 100644
index 0000000..23e5531
--- /dev/null
+++ b/content/api/latest/c++/overlapped_8hpp_source.html
@@ -0,0 +1,76 @@
+<!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.11"/>
+<title>Apache Mesos: 3rdparty/stout/include/stout/internal/windows/overlapped.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="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">Apache Mesos
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.11 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="examples.html"><span>Examples</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_aa547de1d719d14adccfca1dfb1735b3.html">stout</a></li><li class="navelem"><a class="el" href="dir_1a1b923d951dd999d43396870333fc33.html">include</a></li><li class="navelem"><a class="el" href="dir_dbd52553d038069c1ed93e3477ea333d.html">stout</a></li><li class="navelem"><a class="el" href="dir_35c8ff4668e5819502b5d29320c39425.html">internal</a></li><li class="navelem"><a class="el" href="dir_3bd05d674f9d85fce6785660a08f69c2.html">windows</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">overlapped.hpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="overlapped_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">//</s
 pan></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class="
 line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_INTERNAL_WINDOWS_OVERLAPPED_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_INTERNAL_WINDOWS_OVERLAPPED_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;climits&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="result_8hpp.html">stout/result.hpp</a>&gt;</span></div><div class="line"><a nam
 e="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="keyword">namespace </span>windows {</div><div class="line"><a name
 ="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment">// Helper function that creates an overlapped object that can be used</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">// safely for synchronous IO.</span></div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#a388bd9a30ab487f5d035e542187e379a">   30</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;OVERLAPPED&gt;</a> <a class="code" href="namespaceinternal_1_1windows.html#a388bd9a30ab487f5d035e542187e379a">init_overlapped_for_sync_io</a>()</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;{</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;  OVERLAPPED overlapped = {};</div><div class="li
 ne"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;  <span class="comment">// Creating the event is a defensive measure in the case where multiple</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;  <span class="comment">// simultaneous overlapped operations are happening on the same file.</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;  <span class="comment">// If there is no event, then any IO completion on the file can signal</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;  <span class="comment">// the overlapped object, instead of just the requested IO event.</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;  <span class="comment">// For more details, see</span></div><div class="line"><a name="l00039"></a><span class="l
 ineno">   39</span>&#160;  <span class="comment">// https://msdn.microsoft.com/en-us/library/windows/desktop/ms686358(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;  <span class="comment">// The parameters to `::CreateEventW` will create a non-inheritable,</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;  <span class="comment">// auto-resetting, non-signaled, unamed event.</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;  overlapped.hEvent = ::CreateEventW(<span class="keyword">nullptr</span>, FALSE, FALSE, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;  <span class="keywordflow">if</span> (overlapped.hEvent == <span cla
 ss="keyword">nullptr</span>) {</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;  }</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;  <span class="comment">// According to the MSDN docs, &quot;a valid event handle whose low-order bit</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;  <span class="comment">// is set keeps I/O completion from being queued to the completion port&quot; [1].</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;  <span class="comment">// This is another defensive measure to prevent memory corruption if this</span></div><div class="line"><a
  name="l00051"></a><span class="lineno">   51</span>&#160;  <span class="comment">// function is called when the fd is associated with a completion port.</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  <span class="comment">// [1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa364986(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  overlapped.hEvent = <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a><span class="keyword">&gt;</span>(</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;      <span class="keyword">reinterpret_cast&lt;</span>uintptr_t<span class="keyword">&gt;</span>(ov
 erlapped.hEvent) | 1);</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;  <span class="keywordflow">return</span> overlapped;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;}</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="comment">// Windows uses a combination of the return code and the Win32 error code to</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="comment">// determine that status of the overlapped IO functions (success, failure,</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="comment">// pending). This f
 unction wraps that logic into a `Result` type so it&#39;s</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="comment">// easier to process.</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="comment">// This function returns:</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="comment">//   - `Some`:  The number of bytes read/written if the async function had</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="comment">//              finished synchronously.</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="comment">//   - `Error`: The error code of the failed asynchronous function.</span></div><div class="line"><a 
 name="l00070"></a><span class="lineno">   70</span>&#160;<span class="comment">//   - `None`:  None if the asynchronous function was scheduled and is pending.</span></div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">   71</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classResult.html">Result&lt;size_t&gt;</a> <a class="code" href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">process_async_io_result</a>(</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    <span class="keywordtype">bool</span> successful_return_code, <span class="keywordtype">size_t</span> bytes_transfered)</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;{</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;  <span class="comment">// IO is already complete, so the
  result is already in `bytes_transfered`.</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  <span class="keywordflow">if</span> (successful_return_code) {</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    <span class="keywordflow">return</span> bytes_transfered;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  }</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;  <span class="keyword">const</span> <a class="code" href="classWindowsError.html">WindowsError</a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <span class="keywordflow">if</span> (error.<a class="code" href="classWindowsErrorBase.html#
 a0901c393db6d19b248f24faeb638275d">code</a> == ERROR_IO_PENDING) {</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    <span class="comment">// IO is pending.</span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  }</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  <span class="comment">// Other errors are fatal errors.</span></div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;</div><div class="line"><a name="l00087"></a><span 
 class="lineno">   87</span>&#160;}</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;} <span class="comment">// namespace windows {</span></div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="preprocessor">#endif // __STOUT_INTERNAL_WINDOWS_OVERLAPPED_HPP__</span></div><div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
+<div class="ttc" id="namespaceinternal_1_1windows_html_a388bd9a30ab487f5d035e542187e379a"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a388bd9a30ab487f5d035e542187e379a">internal::windows::init_overlapped_for_sync_io</a></div><div class="ttdeci">Try&lt; OVERLAPPED &gt; init_overlapped_for_sync_io()</div><div class="ttdef"><b>Definition:</b> overlapped.hpp:30</div></div>
+<div class="ttc" id="namespaceinternal_1_1windows_html_a4ed4d1bae6b01fb85f8e6fad0b10599d"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">internal::windows::process_async_io_result</a></div><div class="ttdeci">Result&lt; size_t &gt; process_async_io_result(bool successful_return_code, size_t bytes_transfered)</div><div class="ttdef"><b>Definition:</b> overlapped.hpp:71</div></div>
+<div class="ttc" id="classWindowsError_html"><div class="ttname"><a href="classWindowsError.html">WindowsError</a></div><div class="ttdef"><b>Definition:</b> error.hpp:108</div></div>
+<div class="ttc" id="result_8hpp_html"><div class="ttname"><a href="result_8hpp.html">result.hpp</a></div></div>
+<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">windows.hpp</a></div></div>
+<div class="ttc" id="classResult_html"><div class="ttname"><a href="classResult.html">Result</a></div><div class="ttdef"><b>Definition:</b> check.hpp:30</div></div>
+<div class="ttc" id="classWindowsErrorBase_html_a0901c393db6d19b248f24faeb638275d"><div class="ttname"><a href="classWindowsErrorBase.html#a0901c393db6d19b248f24faeb638275d">WindowsErrorBase::code</a></div><div class="ttdeci">const DWORD code</div><div class="ttdef"><b>Definition:</b> error.hpp:29</div></div>
+<div class="ttc" id="namespacerouting_1_1queueing_1_1ingress_html_a934208b6017d0a9aed90b6594bb8292f"><div class="ttname"><a href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">routing::queueing::ingress::HANDLE</a></div><div class="ttdeci">constexpr Handle HANDLE</div><div class="ttdef"><b>Definition:</b> ingress.hpp:37</div></div>
+<div class="ttc" id="structNone_html"><div class="ttname"><a href="structNone.html">None</a></div><div class="ttdef"><b>Definition:</b> none.hpp:27</div></div>
+<div class="ttc" id="namespaceinternal_html"><div class="ttname"><a href="namespaceinternal.html">internal</a></div><div class="ttdef"><b>Definition:</b> attributes.hpp:24</div></div>
+<div class="ttc" id="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec_html_ae58e703656ab4a1bd5d9870441236727"><div class="ttname"><a href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">mesos::internal::slave::cni::spec::error</a></div><div class="ttdeci">std::string error(const std::string &amp;msg, uint32_t code)</div></div>
+<div class="ttc" id="int__fd_8hpp_html"><div class="ttname"><a href="int__fd_8hpp.html">int_fd.hpp</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/posix_2pipe_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2pipe_8hpp.html b/content/api/latest/c++/posix_2pipe_8hpp.html
index 43901ac..1170f58 100644
--- a/content/api/latest/c++/posix_2pipe_8hpp.html
+++ b/content/api/latest/c++/posix_2pipe_8hpp.html
@@ -69,8 +69,8 @@ Namespaces</h2></td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
 Functions</h2></td></tr>
-<tr class="memitem:aada7738a90123ea91fcd4b60693c2a51"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; std::array&lt; int, 2 &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51">os::pipe</a> ()</td></tr>
-<tr class="separator:aada7738a90123ea91fcd4b60693c2a51"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afefbea8a88b84bed66580372accb18a9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; std::array&lt; int, 2 &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#afefbea8a88b84bed66580372accb18a9">os::pipe</a> ()</td></tr>
+<tr class="separator:afefbea8a88b84bed66580372accb18a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 </div><!-- contents -->
 <!-- start footer part -->

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/posix_2pipe_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2pipe_8hpp_source.html b/content/api/latest/c++/posix_2pipe_8hpp_source.html
index 7559222..beb37e9 100644
--- a/content/api/latest/c++/posix_2pipe_8hpp_source.html
+++ b/content/api/latest/c++/posix_2pipe_8hpp_source.html
@@ -52,12 +52,12 @@
 <div class="title">pipe.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="posix_2pipe_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">//</
 span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class=
 "line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_POSIX_PIPE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_POSIX_PIPE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/erro
 r.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment">// Create pipes for interprocess communication.</span></div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51">   26</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;std::array&lt;int, 2&gt;</a>&gt; <a class="code
 " href="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51">pipe</a>()</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;  std::array&lt;int, 2&gt; result;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;  <span class="keywordflow">if</span> (::<a class="code" href="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51">pipe</a>(result.data()) &lt; 0) {</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;  }</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160
 ;}</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_POSIX_PIPE_HPP__</span></div><div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
+<a href="posix_2pipe_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">//</
 span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class=
 "line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_POSIX_PIPE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_POSIX_PIPE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/erro
 r.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment">// Create pipes for interprocess communication.</span></div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="namespaceos.html#afefbea8a88b84bed66580372accb18a9">   26</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;std::array&lt;int, 2&gt;</a>&gt; <a class="code
 " href="namespaceos.html#afefbea8a88b84bed66580372accb18a9">pipe</a>()</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;  std::array&lt;int, 2&gt; result;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;  <span class="keywordflow">if</span> (::<a class="code" href="namespaceos.html#afefbea8a88b84bed66580372accb18a9">pipe</a>(result.data()) &lt; 0) {</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;  }</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160
 ;}</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_POSIX_PIPE_HPP__</span></div><div class="ttc" id="namespaceos_html_afefbea8a88b84bed66580372accb18a9"><div class="ttname"><a href="namespaceos.html#afefbea8a88b84bed66580372accb18a9">os::pipe</a></div><div class="ttdeci">Try&lt; std::array&lt; int, 2 &gt; &gt; pipe()</div><div class="ttdef"><b>Definition:</b> pipe.hpp:26</div></div>
+<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
 <div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
 <div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
 <div class="ttc" id="error_8hpp_html"><div class="ttname"><a href="error_8hpp.html">error.hpp</a></div></div>
 <div class="ttc" id="try_8hpp_html"><div class="ttname"><a href="try_8hpp.html">try.hpp</a></div></div>
-<div class="ttc" id="namespaceos_html_aada7738a90123ea91fcd4b60693c2a51"><div class="ttname"><a href="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51">os::pipe</a></div><div class="ttdeci">Try&lt; std::array&lt; int, 2 &gt; &gt; pipe()</div><div class="ttdef"><b>Definition:</b> pipe.hpp:26</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>


[09/13] mesos-site git commit: Updated the website built from mesos SHA: 21305ab.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/fd_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/fd_8hpp_source.html b/content/api/latest/c++/fd_8hpp_source.html
index 6dc8b23..3c17a24 100644
--- a/content/api/latest/c++/fd_8hpp_source.html
+++ b/content/api/latest/c++/fd_8hpp_source.html
@@ -52,40 +52,41 @@
 <div class="title">fd.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="fd_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">//</span></di
 v><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class="line"><a
  name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_FD_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_FD_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;fcntl.h&gt;</span> <span class="comment">// For `O_RDWR`.</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;io.h&gt;</span> <span class="comment">// For `_open_osfhandle`.</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span></div><div class="line"><a 
 name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;ostream&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2check_8hpp.html">stout/check.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="p
 reprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span> <span class="comment">// For `WinSock2.h`.</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#16
 0;<span class="comment">// The `WindowsFD` class exists to provide an common interface with the POSIX</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">// file descriptor. While the bare `int` representation of the POSIX file</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">// descriptor API is undesirable, we rendezvous there in order to maintain the</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">// existing code in Mesos.</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">// In the platform-agnostic code paths, the `int_fd` type is aliased to</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</s
 pan>&#160;<span class="comment">// `WindowsFD`. The `os::*` functions return a type appropriate to the platform,</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">// which allows us to write code like this:</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">//   Try&lt;int_fd&gt; fd = os::open(...);</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">// The `WindowsFD` constructs off one of:</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">//   (1) `HANDLE` - from the Win32 API</span></div><div class="line"><a name=
 "l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">//   (2) `SOCKET` - from the WinSock API</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">// The `os::*` functions then take an instance of `WindowsFD`, examines</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">// the state and dispatches to the appropriate API.</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html">   50</a></span>&#160;<span class="keyword">class </span><a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;{</div><div
  class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">   53</a></span>&#160;  <span class="keyword">enum class</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">Type</a></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  {</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">HANDLE</a>,</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">SOCKET</a></div><div class="line"><a name="l00057"></a><span class="lineno"> 
   57</span>&#160;  };</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;  <span class="comment">// The `HANDLE` here is expected to be file handles. Specifically,</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  <span class="comment">// `HANDLE`s returned by file API such as `CreateFile`. There are</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="comment">// APIs that return `HANDLE`s with different error values, and</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="comment">// therefore must be handled accordingly. For example, a thread API</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  <span class="comment">// such as `CreateThread` returns `NULL` as the error value, rat
 her</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;  <span class="comment">// than `INVALID_HANDLE_VALUE`.</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  <span class="comment">// TODO(mpark): Consider adding a second parameter which tells us</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  <span class="comment">//              what the error values are.</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;  static_assert(</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;      std::is_same&lt;HANDLE, void*&gt;::value,</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;      <span class="stringliteral">&quot;Expected `HANDLE` to be of type 
 `void*`.&quot;</span>);</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a9e8a511230c23e3210e7a0268bb74e62">   71</a></span>&#160;  <span class="keyword">explicit</span> <a class="code" href="classos_1_1WindowsFD.html#a9e8a511230c23e3210e7a0268bb74e62">WindowsFD</a>(<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">HANDLE</a> handle) : type_(<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">Type</a>::<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">HANDLE</a>), <a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a>(handle) {}</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;  <span class="comment">// T
 he `SOCKET` here is expected to be Windows sockets, such as that</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;  <span class="comment">// used by the Windows Sockets 2 library. The only expected error</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  <span class="comment">// value is `INVALID_SOCKET`.</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;  static_assert(</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;      std::is_same&lt;SOCKET, unsigned __int64&gt;::value,</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;      <span class="stringliteral">&quot;Expected `SOCKET` to be of type `unsigned __int64`.&quot;</span>);</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a6cd1a34bb8239a9ad84bfd1dcb506b97">   79</a></span>&#160
 ;  <span class="keyword">explicit</span> <a class="code" href="classos_1_1WindowsFD.html#a6cd1a34bb8239a9ad84bfd1dcb506b97">WindowsFD</a>(SOCKET <a class="code" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">socket</a>) : type_(<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">Type</a>::SOCKET), <a class="code" href="classos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">socket_</a>(socket) {}</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  <span class="comment">// On Windows, libevent&#39;s `evutil_socket_t` is set to `intptr_t`.</span></div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a43994eeb484a426990af657f691f66e0">   82</a></span>&#160;  <span class="keyword">explicit</span> <a class="code" href="classos_1_1WindowsFD.html#a43994eeb484a426990
 af657f691f66e0">WindowsFD</a>(intptr_t <a class="code" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">socket</a>) : <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>(static_cast&lt;SOCKET&gt;(socket))</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  {}</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  <span class="comment">// This constructor is provided in so that the canonical integer</span></div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <span class="comment">// file descriptors representing `stdin` (0), `stdout` (1), and</span></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  <span class="comment">// `stderr` (2), and the invalid value of -1 can be used.</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 
   88</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;  <span class="comment">// TODO(andschwa): Consider constraining to the range [-1, 2].</span></div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a278285643f263655c5f64f45451fc6e6">   90</a></span>&#160;  <a class="code" href="classos_1_1WindowsFD.html#a278285643f263655c5f64f45451fc6e6">WindowsFD</a>(<span class="keywordtype">int</span> <a class="code" href="classos_1_1WindowsFD.html#a94b69cae4edb8f3549845fbfa0355b7c">crt</a>) : <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>(INVALID_HANDLE_VALUE)</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  {</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    <span class="keywordflow">if</span> (crt == 0) {</div><div class="line"><a name="l00093"></a><span class="line
 no">   93</span>&#160;      <a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a> = ::GetStdHandle(STD_INPUT_HANDLE);</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (crt == 1) {</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;      <a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a> = ::GetStdHandle(STD_OUTPUT_HANDLE);</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (crt == 2) {</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;      <a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a> = ::GetStdHandle(STD_ERROR_HANDLE);</div><div class="line"><a name="l00098"></a><
 span class="lineno">   98</span>&#160;    }</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    <span class="comment">// All others default to `INVALID_HANDLE_VALUE`.</span></div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;  }</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  <span class="comment">// Default construct with invalid handle semantics.</span></div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a68733e16ee25fe8602557e6e9f534bc9">  103</a></span>&#160;  <a class="code" href="classos_1_1WindowsFD.html#a68733e16ee25fe8602557e6e9f534bc9">WindowsFD</a>() : <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>(INVALID_HANDLE_VALUE) {}</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><
 div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;  <a class="code" href="classos_1_1WindowsFD.html#a68733e16ee25fe8602557e6e9f534bc9">WindowsFD</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp;) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;  <a class="code" href="classos_1_1WindowsFD.html#a68733e16ee25fe8602557e6e9f534bc9">WindowsFD</a>(<a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;  <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; <a class="code" href="classos_1_1WindowsFD.html#ab780d87119c772425aa855260056d1a1">operator=</a>(<span class="keyword">const</span> <a c
 lass="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp;) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;  <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; <a class="code" href="classos_1_1WindowsFD.html#ab780d87119c772425aa855260056d1a1">operator=</a>(<a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;  <a class="code" href="classos_1_1WindowsFD.html#ad2ce21d9f77710472e19843e3e86343e">~WindowsFD</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#ab961444ee
 c07c587c9a67122daf4fd33">  113</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33">is_valid</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="keywordflow">switch</span> (<a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>()) {</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;      <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">Type::HANDLE</a>: {</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        <span class="comment">// Remember that both of these values can represent an inval
 id</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;        <span class="comment">// handle.</span></div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a> != <span class="keyword">nullptr</span> &amp;&amp; <a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a> != INVALID_HANDLE_VALUE;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      }</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;      <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">Type::SOCKET</a>: {</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;        <span class="c
 omment">// Only this value is used for an invalid socket.</span></div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">socket_</a> != INVALID_SOCKET;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;      }</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;      <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;      }</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    }</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  }</div><div class="line"><a nam
 e="l00130"></a><span class="lineno">  130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;  <span class="comment">// NOTE: This allocates a C run-time file descriptor and associates</span></div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  <span class="comment">// it with the handle. At this point, the `HANDLE` should no longer</span></div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  <span class="comment">// be closed via `CloseHandle`, but instead close the returned `int`</span></div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  <span class="comment">// with `_close`. This method should almost never be used, and</span></div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;  <span class="comment">// exists only for compatibility with 3rdparty dependencies.</span></div><div class="line"><a name="l00136"></a
 ><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a94b69cae4edb8f3549845fbfa0355b7c">  136</a></span>&#160;  <span class="keywordtype">int</span> <a class="code" href="classos_1_1WindowsFD.html#a94b69cae4edb8f3549845fbfa0355b7c">crt</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    CHECK_EQ(<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">Type::HANDLE</a>, <a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>());</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    <span class="comment">// TODO(andschwa): Consider if we should overwrite `handle_`.</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;
     return ::_open_osfhandle(reinterpret_cast&lt;intptr_t&gt;(<a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a>), O_RDWR);</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  }</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a8ba56c5251264ab13aeaaa34cde39bdb">  143</a></span>&#160;  <span class="keyword">operator</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">HANDLE</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    CHECK_EQ(<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97db
 d69c79ae5ad09c4cb1265f1772bb757a7af277b49f">Type::HANDLE</a>, <a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>());</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a>;</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;  }</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a0826bf646e11186502039fcf869b2afc">  149</a></span>&#160;  <span class="keyword">operator</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">SOCKET</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00150"></a><span class="lineno">  150<
 /span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    CHECK_EQ(<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">Type::SOCKET</a>, <a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>());</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">socket_</a>;</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;  }</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;  <span class="comment">// On Windows, libevent&#39;s `evutil_socket_t` is set to `intptr_t`.</span></div><div class="line"><a name="l00156"></a><spa
 n class="lineno"><a class="line" href="classos_1_1WindowsFD.html#aa58f87561c2785c34ae7f34ce59abfe2">  156</a></span>&#160;  <span class="keyword">operator</span> intptr_t()<span class="keyword"> const</span></div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    CHECK_EQ(<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">Type::SOCKET</a>, <a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>());</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>intptr_t<span class="keyword">&gt;</span>(<a class="code" href="classos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">socket_</a>);</div><div class="line"><a name="l0016
 0"></a><span class="lineno">  160</span>&#160;  }</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">  162</a></span>&#160;  <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">Type</a> <a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> type_; }</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;  <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">Type</a> type_;</div><div class="line"><a name
 ="l00166"></a><span class="lineno">  166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;  <span class="keyword">union</span></div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;  {</div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">  169</a></span>&#160;    <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">HANDLE</a> <a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a>;</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">  170</a></span>&#160;    SOCKET <a class="code" href="classos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">socket_</a>;</div><div class="line"><a name="l00171"></a><span class="linen
 o">  171</span>&#160;  };</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  <span class="comment">// NOTE: This function is provided only for checking validity, thus</span></div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;  <span class="comment">// it is private. It provides a view of a `WindowsFD` as an `int`.</span></div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;  <span class="comment">// TODO(andschwa): Fix all uses of this conversion to use `is_valid`</span></div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;  <span class="comment">// directly instead, then remove the comparison operators. This</span></div><div class="line"><a name="l00178"></a><s
 pan class="lineno">  178</span>&#160;  <span class="comment">// would require writing an `int_fd` class for POSIX too, instead of</span></div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;  <span class="comment">// just using `int`.</span></div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;  <span class="keywordtype">int</span> get_valid()<span class="keyword"> const</span></div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33">is_valid</a>()) {</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;      <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;
     } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;      <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;    }</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;  }</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;  <span class="comment">// NOTE: These operators are used solely to support checking a</span></div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;  <span class="comment">// `WindowsFD` against e.g. -1 or 0 for validity. Nothing else</span></div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  <span class="comment">// should have access to `get_valid()`.</span></div><div class="line"><a name="l00192"></a><span 
 class="lineno">  192</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a64a9d1d43e26808ec565056c183ae56f">operator&lt;</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right);</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a64a9d1d43e26808ec565056c183ae56f">operator&lt;</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right);</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#aabdbd9806af44
 043dfff1cf9aeeee869">operator&gt;</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right);</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#aabdbd9806af44043dfff1cf9aeeee869">operator&gt;</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right);</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#afd05a43697b99aa8b7da8d56155b1a49">operator&lt;=</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">Windo
 wsFD</a>&amp; right);</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#afd05a43697b99aa8b7da8d56155b1a49">operator&lt;=</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right);</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a23d70e92fe2ee8da692f4e9b1b9e1e43">operator&gt;=</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right);</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">
 bool</span> <a class="code" href="classos_1_1WindowsFD.html#a23d70e92fe2ee8da692f4e9b1b9e1e43">operator&gt;=</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right);</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a833e23bea1f10420bbd7139d1e8539ad">operator==</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right);</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a833e23bea1f10420bbd7139d1e8539ad">operator==</a>(<span class="keyword">const</span> <a class="code" href="class
 os_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right);</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a342803d2a16f81ca20f0e0c1c2e598d0">operator!=</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right);</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a342803d2a16f81ca20f0e0c1c2e598d0">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right);</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;
 };</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="namespaceos.html#abc0226f448b014a39a8113f06482d6c9">  207</a></span>&#160;<span class="keyword">inline</span> std::ostream&amp; <a class="code" href="namespaceos.html#adf8abf607ec106e38317de03bcdda834">operator&lt;&lt;</a>(std::ostream&amp; stream, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">WindowsFD::Type</a>&amp; fd)</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;{</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;  <span class="keywordflow">switch</span> (fd) {</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    <span class="keywordflow">case</span> <
 a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;      stream &lt;&lt; <span class="stringliteral">&quot;WindowsFD::Type::HANDLE&quot;</span>;</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;      <span class="keywordflow">return</span> stream;</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    }</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;      stream &lt;&lt; <span class="stringliteral">&quot;WindowsFD::Type::SOCKET&quot;</span>;
 </div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;      <span class="keywordflow">return</span> stream;</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    }</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;      stream &lt;&lt; <span class="stringliteral">&quot;WindowsFD::Type::UNKNOWN&quot;</span>;</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;      <span class="keywordflow">return</span> stream;</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;    }</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;  }</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;}</div><div class="line"><a name="l00224"></a><span class="lineno
 ">  224</span>&#160;</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="namespaceos.html#ae7cfc38dfd6783b8d347893cb1dd6b8f">  226</a></span>&#160;<span class="keyword">inline</span> std::ostream&amp; <a class="code" href="namespaceos.html#adf8abf607ec106e38317de03bcdda834">operator&lt;&lt;</a>(std::ostream&amp; stream, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; fd)</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;{</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;  stream &lt;&lt; fd.<a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>() &lt;&lt; <span class="stringliteral">&quot;=&quot;</span>;</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;  <span class="keywordfl
 ow">switch</span> (fd.<a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>()) {</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;      stream &lt;&lt; static_cast&lt;HANDLE&gt;(fd);</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;      <span class="keywordflow">return</span> stream;</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    }</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">Win
 dowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;      stream &lt;&lt; static_cast&lt;SOCKET&gt;(fd);</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;      <span class="keywordflow">return</span> stream;</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    }</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;    <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;      stream &lt;&lt; <span class="stringliteral">&quot;UNKNOWN&quot;</span>;</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;      <span class="keywordflow">return</span> stream;</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;    }</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;  }</d
 iv><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;}</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;<span class="comment">// NOTE: The following operators implement all the comparisons</span></div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;<span class="comment">// possible a `WindowsFD` type and an `int`. The point of this is that</span></div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;<span class="comment">// the `WindowsFD` type must act like an `int` for compatibility</span></div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;<span class="comment">// reasons (e.g. checking validity through `fd &lt; 0`), without actually</span></div><div class="line"><a
  name="l00250"></a><span class="lineno">  250</span>&#160;<span class="comment">// being castable to an `int` to avoid ambiguous types.</span></div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="namespaceos.html#a50365c5112577886332b1072de202c5f">  251</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a64a9d1d43e26808ec565056c183ae56f">operator&lt;</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right)</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;{</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;  <span class="keywordflow">return</span> left &lt; right.get_valid();</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;}</div><div class="line"><a name="l00255"></
 a><span class="lineno">  255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="namespaceos.html#a3d7a472710fa4652c0074074fec9973d">  257</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a64a9d1d43e26808ec565056c183ae56f">operator&lt;</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right)</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;{</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;  <span class="keywordflow">return</span> left.get_valid() &lt; right;</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;}</div><div class="line"><a name="l00261"></a><span class="li
 neno">  261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="namespaceos.html#a01c61a529abd402f5c7e1307d24f5378">  263</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#aabdbd9806af44043dfff1cf9aeeee869">operator&gt;</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right)</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;{</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;  <span class="keywordflow">return</span> left &gt; right.get_valid();</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;}</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span
 >&#160;</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;</div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="namespaceos.html#a9b3ec4a9596510ae4f5147b50d50178b">  269</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#aabdbd9806af44043dfff1cf9aeeee869">operator&gt;</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right)</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;{</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;  <span class="keywordflow">return</span> left.get_valid() &gt; right;</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;}</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;</div><div
  class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;</div><div class="line"><a name="l00275"></a><span class="lineno"><a class="line" href="namespaceos.html#ae0567bbfde960caa1f0e7282ebba1129">  275</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#afd05a43697b99aa8b7da8d56155b1a49">operator&lt;=</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right)</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;{</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;  <span class="keywordflow">return</span> left &lt;= right.get_valid();</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;}</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;</div><div class="line"><
 a name="l00280"></a><span class="lineno">  280</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="namespaceos.html#a4a0677e666a295e048cf4c65100a9e19">  281</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#afd05a43697b99aa8b7da8d56155b1a49">operator&lt;=</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right)</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;{</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;  <span class="keywordflow">return</span> left.get_valid() &lt;= right;</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;}</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;</div><div class="line"><a name="l00286"
 ></a><span class="lineno">  286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="namespaceos.html#aff40faf624abae939675cdfff558570b">  287</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a23d70e92fe2ee8da692f4e9b1b9e1e43">operator&gt;=</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right)</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;{</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;  <span class="keywordflow">return</span> left &gt;= right.get_valid();</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;}</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;</div><div class="line"><a name="l00292"></a><span clas
 s="lineno">  292</span>&#160;</div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="namespaceos.html#a7212150e865b156fdae90c1052407042">  293</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a23d70e92fe2ee8da692f4e9b1b9e1e43">operator&gt;=</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right)</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;{</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;  <span class="keywordflow">return</span> left.get_valid() &gt;= right;</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;}</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno">  29
 8</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="namespaceos.html#a964a363626326ed56a030b26813124a7">  299</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a833e23bea1f10420bbd7139d1e8539ad">operator==</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right)</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;{</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;  <span class="keywordflow">return</span> left == right.get_valid();</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;}</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;</div><
 div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="namespaceos.html#a5c6de77e356412060c38c5e41cdd5ba1">  305</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a833e23bea1f10420bbd7139d1e8539ad">operator==</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right)</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;{</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;  <span class="keywordflow">return</span> left.get_valid() == right;</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;}</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;</div><div class="line"><a n
 ame="l00311"></a><span class="lineno"><a class="line" href="namespaceos.html#ab3f13e530d689c5eb2d15b921a55c2df">  311</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a342803d2a16f81ca20f0e0c1c2e598d0">operator!=</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right)</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;{</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;  <span class="keywordflow">return</span> left != right.get_valid();</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;}</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;</div><div class="line"><a name="l00317"></a><spa
 n class="lineno"><a class="line" href="namespaceos.html#adfa6e9183e6bc24e95a45fa3f095ea37">  317</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a342803d2a16f81ca20f0e0c1c2e598d0">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right)</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;{</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;  <span class="keywordflow">return</span> left.get_valid() != right;</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;}</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno">  32
 3</span>&#160;<span class="comment">// NOTE: This operator exists so that `WindowsFD` can be used in an</span></div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;<span class="comment">// `unordered_map` (and other STL containers requiring equality).</span></div><div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="namespaceos.html#a233ee9ab58e9c214bb9dada3b4cde87a">  325</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a833e23bea1f10420bbd7139d1e8539ad">operator==</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right)</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;{</div><div class="line"><a name="l00327"></a><span class="lineno">  327<
 /span>&#160;  <span class="comment">// This is `true` even if the types mismatch because we want</span></div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;  <span class="comment">// `WindowsFD(-1)` to compare as equivalent to an invalid `HANDLE`</span></div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;  <span class="comment">// or `SOCKET`, even though it is technically of type `HANDLE`.</span></div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;  <span class="keywordflow">if</span> (!left.<a class="code" href="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33">is_valid</a>() &amp;&amp; !right.<a class="code" href="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33">is_valid</a>()) {</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a n
 ame="l00332"></a><span class="lineno">  332</span>&#160;  }</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;  <span class="comment">// Otherwise mismatched types are not equivalent.</span></div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;  <span class="keywordflow">if</span> (left.<a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>() != right.<a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>()) {</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;  }</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;</div><div class="line"><a na
 me="l00339"></a><span class="lineno">  339</span>&#160;  <span class="keywordflow">switch</span> (left.<a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>()) {</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">HANDLE</a><span class="keyword">&gt;</span>(left) == static_cast&lt;HANDLE&gt;(right);</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;    }</div><div class="line"><a name="l00343"></a><span class="lin
 eno">  343</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">SOCKET</a><span class="keyword">&gt;</span>(left) == static_cast&lt;SOCKET&gt;(right);</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;    }</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;  }</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be
 7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;}</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a> {</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;<span class="comment">// NOTE: This specialization exists so that `WindowsFD` can be used in</span></div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;<span class="comment">// an `unordered_map` (and other 
 STL containers requiring a hash).</span></div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01os_1_1WindowsFD_01_4.html">  358</a></span>&#160;<span class="keyword">struct </span>hash&lt;<a class="code" href="namespaceos.html">os</a>::<a class="code" href="classos_1_1WindowsFD.html#a68733e16ee25fe8602557e6e9f534bc9">WindowsFD</a>&gt;</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;{</div><div class="line"><a name="l00360"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01os_1_1WindowsFD_01_4.html#a2a5618e5e307b2d36c98f14d1600636c">  360</a></span>&#160;  <span class="keyword">using</span> <a class="code" href="classos_1_1WindowsFD.html">argument_type</a> = <a class="code" href="classos_1_1WindowsFD.html">os::WindowsFD</a>;</div><div class="line"><
 a name="l00361"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01os_1_1WindowsFD_01_4.html#a784a468593b723beb6be44656cc9f67a">  361</a></span>&#160;  <span class="keyword">using</span> <a class="code" href="structstd_1_1hash_3_01os_1_1WindowsFD_01_4.html#a784a468593b723beb6be44656cc9f67a">result_type</a> = size_t;</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;</div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01os_1_1WindowsFD_01_4.html#ace282835b0ca66ecf2753a5671449f4e">  363</a></span>&#160;  <a class="code" href="structstd_1_1hash_3_01os_1_1WindowsFD_01_4.html#a784a468593b723beb6be44656cc9f67a">result_type</a> <a class="code" href="structstd_1_1hash_3_01os_1_1WindowsFD_01_4.html#ace282835b0ca66ecf2753a5671449f4e">operator()</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">argument_type</a>&amp; fd) <span class="keyword">const</sp
 an> noexcept</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;  {</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;    <span class="keywordflow">switch</span> (fd.type()) {</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;      <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">os::WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;        <span class="keywordflow">return</span> std::hash&lt;HANDLE&gt;{}(<span class="keyword">static_cast&lt;</span><a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">HANDLE</a><span class="keyword">&gt;</span>(fd));</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;      }</div><div class="lin
 e"><a name="l00369"></a><span class="lineno">  369</span>&#160;      <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">os::WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;        <span class="keywordflow">return</span> std::hash&lt;SOCKET&gt;{}(<span class="keyword">static_cast&lt;</span><a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">SOCKET</a><span class="keyword">&gt;</span>(fd));</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;      }</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;    }</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;    <a class="code" href=
 "unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;  }</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;};</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;} <span class="comment">// namespace std {</span></div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_WINDOWS_FD_HPP__</span></div><div class="ttc" id="classos_1_1WindowsFD_html_ab961444eec07c587c9a67122daf4fd33"><div class="ttname"><a href="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33">os::WindowsFD::is_valid</a></div><div class="ttdeci">bool is_valid() const </div><div class="ttdef"><b>Definition:
 </b> fd.hpp:113</div></div>
-<div class="ttc" id="classos_1_1WindowsFD_html_a3ce17a730ace5352a1fc6d49f8336d52"><div class="ttname"><a href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">os::WindowsFD::type</a></div><div class="ttdeci">Type type() const </div><div class="ttdef"><b>Definition:</b> fd.hpp:162</div></div>
-<div class="ttc" id="classos_1_1WindowsFD_html_a05016bee9531c79ce4576c9b8d9c9922"><div class="ttname"><a href="classos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">os::WindowsFD::socket_</a></div><div class="ttdeci">SOCKET socket_</div><div class="ttdef"><b>Definition:</b> fd.hpp:170</div></div>
+<a href="fd_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//  http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">//</span></di
 v><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class="line"><a
  name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_FD_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_FD_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;fcntl.h&gt;</span> <span class="comment">// For `O_RDWR`.</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;io.h&gt;</span> <span class="comment">// For `_open_osfhandle`.</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span></div><div class="line"><a 
 name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;ostream&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2check_8hpp.html">stout/check.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="p
 reprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span> <span class="comment">// For `WinSock2.h`.</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#16
 0;<span class="comment">// The `WindowsFD` class exists to provide an common interface with the POSIX</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">// file descriptor. While the bare `int` representation of the POSIX file</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">// descriptor API is undesirable, we rendezvous there in order to maintain the</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">// existing code in Mesos.</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">// In the platform-agnostic code paths, the `int_fd` type is aliased to</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</s
 pan>&#160;<span class="comment">// `WindowsFD`. The `os::*` functions return a type appropriate to the platform,</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">// which allows us to write code like this:</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">//   Try&lt;int_fd&gt; fd = os::open(...);</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">// The `WindowsFD` constructs off one of:</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">//   (1) `HANDLE` - from the Win32 API</span></div><div class="line"><a name=
 "l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">//   (2) `SOCKET` - from the WinSock API</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">// The `os::*` functions then take an instance of `WindowsFD`, examines</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">// the state and dispatches to the appropriate API.</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html">   50</a></span>&#160;<span class="keyword">class </span><a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;{</div><div
  class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">   53</a></span>&#160;  <span class="keyword">enum class</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">Type</a></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  {</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">HANDLE</a>,</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">SOCKET</a></div><div class="line"><a name="l00057"></a><span class="lineno"> 
   57</span>&#160;  };</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;  <span class="comment">// The `HANDLE` here is expected to be file handles. Specifically,</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  <span class="comment">// `HANDLE`s returned by file API such as `CreateFile`. There are</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="comment">// APIs that return `HANDLE`s with different error values, and</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="comment">// therefore must be handled accordingly. For example, a thread API</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  <span class="comment">// such as `CreateThread` returns `NULL` as the error value, rat
 her</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;  <span class="comment">// than `INVALID_HANDLE_VALUE`.</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  <span class="comment">// TODO(mpark): Consider adding a second parameter which tells us</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  <span class="comment">//              what the error values are.</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;  static_assert(</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;      std::is_same&lt;HANDLE, void*&gt;::value,</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;      <span class="stringliteral">&quot;Expected `HANDLE` to be of type 
 `void*`.&quot;</span>);</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a421497a56ee02f01dd4f0773d07eaa76">   71</a></span>&#160;  <span class="keyword">explicit</span> <a class="code" href="classos_1_1WindowsFD.html#a421497a56ee02f01dd4f0773d07eaa76">WindowsFD</a>(<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">HANDLE</a> handle, <span class="keywordtype">bool</span> overlapped = <span class="keyword">false</span>)</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    : type_(<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">Type</a>::<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">HANDLE</a>), <a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a>(handle), overlapped_(overlapped)
 </div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;  {}</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  <span class="comment">// The `SOCKET` here is expected to be Windows sockets, such as that</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;  <span class="comment">// used by the Windows Sockets 2 library. The only expected error</span></div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  <span class="comment">// value is `INVALID_SOCKET`.</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;  <span class="comment">// Note that sockets should almost always be overlapped. We do provide</span></div><div class
 ="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <span class="comment">// a way in stout to create non-overlapped sockets, so for completeness, we</span></div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  <span class="comment">// have an overlapped parameter in the constructor.</span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;  static_assert(</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;      std::is_same&lt;SOCKET, unsigned __int64&gt;::value,</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;      <span class="stringliteral">&quot;Expected `SOCKET` to be of type `unsigned __int64`.&quot;</span>);</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a33cd936b5641a029b1ea2da80d71c748">   85</a></span>&#160;  <span class="keyword">explicit</span> <a class="code
 " href="classos_1_1WindowsFD.html#a33cd936b5641a029b1ea2da80d71c748">WindowsFD</a>(SOCKET <a class="code" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">socket</a>, <span class="keywordtype">bool</span> overlapped = <span class="keyword">true</span>)</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    : type_(<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">Type</a>::SOCKET), <a class="code" href="classos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">socket_</a>(socket), overlapped_(overlapped)</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  {}</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;  <span class="comment">// On Windows, libevent&#39;s `evutil_socket_t` is set to `intptr_t`.</span></div><div class="line"><a name="l00090"></a><span
  class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a43994eeb484a426990af657f691f66e0">   90</a></span>&#160;  <span class="keyword">explicit</span> <a class="code" href="classos_1_1WindowsFD.html#a43994eeb484a426990af657f691f66e0">WindowsFD</a>(intptr_t <a class="code" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">socket</a>) : <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>(static_cast&lt;SOCKET&gt;(socket))</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  {}</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  <span class="comment">// This constructor is provided in so that the canonical integer</span></div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  <span class="comment">// file descriptors representing `stdin` (0), `stdout` (1), and</span></div><div 
 class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  <span class="comment">// `stderr` (2), and the invalid value of -1 can be used.</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  <span class="comment">// TODO(andschwa): Consider constraining to the range [-1, 2].</span></div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a278285643f263655c5f64f45451fc6e6">   98</a></span>&#160;  <a class="code" href="classos_1_1WindowsFD.html#a278285643f263655c5f64f45451fc6e6">WindowsFD</a>(<span class="keywordtype">int</span> <a class="code" href="classos_1_1WindowsFD.html#a94b69cae4edb8f3549845fbfa0355b7c">crt</a>) : <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>(INVALID_HANDLE_VALUE)</div><div class="line"><a name="l00099"></a><span class=
 "lineno">   99</span>&#160;  {</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <span class="keywordflow">if</span> (crt == 0) {</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;      <a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a> = ::GetStdHandle(STD_INPUT_HANDLE);</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (crt == 1) {</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;      <a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a> = ::GetStdHandle(STD_OUTPUT_HANDLE);</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (crt == 2) {</div><div class="line"><a name="l0010
 5"></a><span class="lineno">  105</span>&#160;      <a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a> = ::GetStdHandle(STD_ERROR_HANDLE);</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    }</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="comment">// All others default to `INVALID_HANDLE_VALUE`.</span></div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;  }</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  <span class="comment">// Default construct with invalid handle semantics.</span></div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a68733e16ee25fe8602557e6e9f534bc9">  111</a></span>&#160;  <a class="code" href="classos_1_1WindowsFD.html#a68
 733e16ee25fe8602557e6e9f534bc9">WindowsFD</a>() : <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>(INVALID_HANDLE_VALUE) {}</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;  <a class="code" href="classos_1_1WindowsFD.html#a68733e16ee25fe8602557e6e9f534bc9">WindowsFD</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp;) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00114"></a>

<TRUNCATED>

[11/13] mesos-site git commit: Updated the website built from mesos SHA: 21305ab.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/0a0aa73e/content/api/latest/c++/decoder_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/decoder_8hpp_source.html b/content/api/latest/c++/decoder_8hpp_source.html
index eb69f63..4a2576c 100644
--- a/content/api/latest/c++/decoder_8hpp_source.html
+++ b/content/api/latest/c++/decoder_8hpp_source.html
@@ -52,9 +52,10 @@
 <div class="title">decoder.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="decoder_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//     http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">//</s
 pan></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class="l
 ine"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __DECODER_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __DECODER_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment">// `http_parser.h` defines an enum `flags` which conflicts</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment">// with, e.g., a namespace in stout. Rename it with a macro.</span></div><div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="decoder_8hpp.html#abb0829cce9dd20a40ae0d86890ae85c6">   18</a></span>&#160;<span class="preprocessor">#define flags http_parser_flags</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>
 &#160;<span class="preprocessor">#include &lt;http_parser.h&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#undef flags</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;glog/logging.h&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;deque&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00027"></a><span class="
 lineno">   27</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2http_8hpp.html">process/http.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="gzip_8hpp.html">stout/gzip.hpp</a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<
 a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#if !(HTTP_PARSER_VERSION_MAJOR &gt;= 2)</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#error HTTP Parser version &gt;= 2 required.</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"><
 /a><span class="lineno">   41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1http__parsing.html">   44</a></span>&#160;<span class="keyword">namespace </span>http_parsing {</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">// We expect callbacks to return 0 on success and 1 on failure. These constants</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">// are introduced solely to make decoders&#39; code easier to read and are not meant</span></div><div cla
 ss="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">// to be used outside.</span></div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1http__parsing.html#aafd4f335653a52c4c13fa094d8943969">   49</a></span>&#160;constexpr <span class="keywordtype">int</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#aafd4f335653a52c4c13fa094d8943969">SUCCESS</a> = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1http__parsing.html#a1728c94cb446c34b1a8506f5dd6d0f6c">   50</a></span>&#160;constexpr <span class="keywordtype">int</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#a1728c94cb446c34b1a8506f5dd6d0f6c">FAILURE</a> = 1;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;} <span class="comment
 ">// namespace http_parsing {</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="comment">// TODO(benh): Make DataDecoder abstract and make RequestDecoder a</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="comment">// concrete subclass.</span></div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classprocess_1_1DataDecoder.html">   56</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1DataDecoder.html">DataDecoder</a></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;{</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classprocess_1_1DataD
 ecoder.html#a5f9fb074617646df166cef6adb5750f6">   59</a></span>&#160;  <a class="code" href="classprocess_1_1DataDecoder.html#a5f9fb074617646df166cef6adb5750f6">DataDecoder</a>()</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    : failure(false), <a class="code" href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5662ec35da05fa">request</a>(nullptr)</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  {</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    http_parser_settings_init(&amp;settings);</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    settings.on_message_begin = &amp;DataDecoder::on_message_begin;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    settings.on_url = &amp;DataDecoder::on_url;</div><div class="line">
 <a name="l00066"></a><span class="lineno">   66</span>&#160;    settings.on_header_field = &amp;DataDecoder::on_header_field;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    settings.on_header_value = &amp;DataDecoder::on_header_value;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    settings.on_headers_complete = &amp;DataDecoder::on_headers_complete;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    settings.on_body = &amp;DataDecoder::on_body;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    settings.on_message_complete = &amp;DataDecoder::on_message_complete;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    settings.on_chunk_complete = &amp;DataDecoder::on_chunk_complete;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    settings.on_chunk_header = &amp;Dat
 aDecoder::on_chunk_header;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    http_parser_init(&amp;parser, HTTP_REQUEST);</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    parser.data = <span class="keyword">this</span>;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  }</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classprocess_1_1DataDecoder.html#a0851b42409baa7e9399c1fffddc4299b">   79</a></span>&#160;  <a class="code" href="classprocess_1_1DataDecoder.html#a0851b42409baa7e9399c1fffddc4299b">~DataDecoder</a>()</div><div class="line"><a name="l00080"></a><span class="lineno">   80</spa
 n>&#160;  {</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    <span class="keyword">delete</span> <a class="code" href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5662ec35da05fa">request</a>;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    <span class="keywordflow">foreach</span> (<a class="code" href="structprocess_1_1http_1_1Request.html">http::Request</a>* <a class="code" href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5662ec35da05fa">request</a>, requests) {</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;      <span class="keyword">delete</span> <a class="code" href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5662ec35da05fa">request</a>;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    }</div><div class="line"><a name="l00086"></a
 ><span class="lineno">   86</span>&#160;  }</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classprocess_1_1DataDecoder.html#a86ae2a264437c9c13249d11473536eec">   88</a></span>&#160;  std::deque&lt;http::Request*&gt; <a class="code" href="classprocess_1_1DataDecoder.html#a86ae2a264437c9c13249d11473536eec">decode</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* data, <span class="keywordtype">size_t</span> length)</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;  {</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    <span class="keywordtype">size_t</span> parsed = http_parser_execute(&amp;parser, &amp;settings, data, length);</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="l
 ineno">   92</span>&#160;    <span class="keywordflow">if</span> (parsed != length) {</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;      <span class="comment">// TODO(bmahler): joyent/http-parser exposes error reasons.</span></div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;      failure = <span class="keyword">true</span>;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    }</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    <span class="keywordflow">if</span> (!requests.empty()) {</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;      std::deque&lt;http::Request*&gt; result = requests;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;      requests.clear();</div><div class="line"><a name="l
 00100"></a><span class="lineno">  100</span>&#160;      <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    }</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="keywordflow">return</span> std::deque&lt;http::Request*&gt;();</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;  }</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classprocess_1_1DataDecoder.html#a60a6e994b390d3e48ceaaa5f078e0569">  106</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classprocess_1_1DataDecoder.html#a60a6e994b390d3e48ceaaa5f078e0569">failed</a>()<span class="keyword"> const</span></div><div class="line"><a name=
 "l00107"></a><span class="lineno">  107</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="keywordflow">return</span> failure;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;  }</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> on_message_begin(http_parser* p)</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;  {</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <a class="code" href="classprocess_1_1DataDecoder.html">DataDecoder</a>* decoder = (<a class="code" href="classprocess_
 1_1DataDecoder.html">DataDecoder</a>*) p-&gt;data;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    CHECK(!decoder-&gt;failure);</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    decoder-&gt;header = HEADER_FIELD;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    decoder-&gt;field.clear();</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    decoder-&gt;value.clear();</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    decoder-&gt;query.clear();</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    decoder-&gt;url.clear();</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</d
 iv><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    CHECK(decoder-&gt;request == <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    decoder-&gt;request = <span class="keyword">new</span> <a class="code" href="structprocess_1_1http_1_1Request.html">http::Request</a>();</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#aafd4f335653a52c4c13fa094d8943969">http_parsing::SUCCESS</a>;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  }</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;</div><div class="line"><a name=
 "l00131"></a><span class="lineno">  131</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> on_chunk_complete(http_parser* p)</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  {</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#aafd4f335653a52c4c13fa094d8943969">http_parsing::SUCCESS</a>;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  }</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> on_chunk_header(http_parser* p)</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  {</div><div class="line"><a name="l00138"></a><span c
 lass="lineno">  138</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#aafd4f335653a52c4c13fa094d8943969">http_parsing::SUCCESS</a>;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  }</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> on_url(http_parser* p, <span class="keyword">const</span> <span class="keywordtype">char</span>* data, <span class="keywordtype">size_t</span> length)</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  {</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    <a class="code" href="classprocess_1_1DataDecoder.html">DataDecoder</a>* decoder = (<a class="code" href="classprocess_1_1DataDecoder.html">Data
 Decoder</a>*) p-&gt;data;</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    CHECK_NOTNULL(decoder-&gt;request);</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    <span class="comment">// The current http_parser library (version 2.6.2 and below)</span></div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    <span class="comment">// does not support incremental parsing of URLs. To compensate</span></div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    <span class="comment">// we incrementally collect the data and parse it in</span></div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    <span class="comment">// `on_message_complete`.</span></div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;    decoder-&g
 t;url.append(data, length);</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#aafd4f335653a52c4c13fa094d8943969">http_parsing::SUCCESS</a>;</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;  }</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> on_header_field(http_parser* p, <span class="keyword">const</span> <span class="keywordtype">char</span>* data, <span class="keywordtype">size_t</span> length)</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;  {</div><div class="line"><a name="l00157"></a><span class="li
 neno">  157</span>&#160;    <a class="code" href="classprocess_1_1DataDecoder.html">DataDecoder</a>* decoder = (<a class="code" href="classprocess_1_1DataDecoder.html">DataDecoder</a>*) p-&gt;data;</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    CHECK_NOTNULL(decoder-&gt;request);</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    <span class="keywordflow">if</span> (decoder-&gt;header != HEADER_FIELD) {</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;      decoder-&gt;request-&gt;<a class="code" href="structprocess_1_1http_1_1Request.html#a53555a597f9376d2dd71daa799a90494">headers</a>[decoder-&gt;field] = decoder-&gt;value;</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;      decoder-&gt;field.clear();</div><div class="line"><a name="l00163"></a><span clas
 s="lineno">  163</span>&#160;      decoder-&gt;value.clear();</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    }</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    decoder-&gt;field.append(data, length);</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    decoder-&gt;header = HEADER_FIELD;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#aafd4f335653a52c4c13fa094d8943969">http_parsing::SUCCESS</a>;</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;  }</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;</div><di
 v class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> on_header_value(http_parser* p, <span class="keyword">const</span> <span class="keywordtype">char</span>* data, <span class="keywordtype">size_t</span> length)</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  {</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    <a class="code" href="classprocess_1_1DataDecoder.html">DataDecoder</a>* decoder = (<a class="code" href="classprocess_1_1DataDecoder.html">DataDecoder</a>*) p-&gt;data;</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    CHECK_NOTNULL(decoder-&gt;request);</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    decoder-&gt;value.append(data, length);</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    decode
 r-&gt;header = HEADER_VALUE;</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#aafd4f335653a52c4c13fa094d8943969">http_parsing::SUCCESS</a>;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;  }</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> on_headers_complete(http_parser* p)</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;  {</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    <a class="code" href="classprocess_1_1DataDecoder.html">DataDecoder</a>* decoder = (<a class="code" href="classprocess_1_1DataDecoder.html">DataDecoder</a>*) p-&gt;data;</div><div
  class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    CHECK_NOTNULL(decoder-&gt;request);</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    <span class="comment">// Add final header.</span></div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    decoder-&gt;request-&gt;<a class="code" href="structprocess_1_1http_1_1Request.html#a53555a597f9376d2dd71daa799a90494">headers</a>[decoder-&gt;field] = decoder-&gt;value;</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;    decoder-&gt;field.clear();</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    decoder-&gt;value.clear();</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;</div><di
 v class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    decoder-&gt;request-&gt;<a class="code" href="structprocess_1_1http_1_1Request.html#a2e81202fca3244a7de00ac7bb253d59d">method</a> =</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;      http_method_str((http_method) decoder-&gt;parser.method);</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;    decoder-&gt;request-&gt;<a class="code" href="structprocess_1_1http_1_1Request.html#a3a459e9dbce042511e6359533f6925d4">keepAlive</a> = http_should_keep_alive(&amp;decoder-&gt;parser) != 0;</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#aafd4f3
 35653a52c4c13fa094d8943969">http_parsing::SUCCESS</a>;</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;  }</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> on_body(http_parser* p, <span class="keyword">const</span> <span class="keywordtype">char</span>* data, <span class="keywordtype">size_t</span> length)</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;  {</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    <a class="code" href="classprocess_1_1DataDecoder.html">DataDecoder</a>* decoder = (<a class="code" href="classprocess_1_1DataDecoder.html">DataDecoder</a>*) p-&gt;data;</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    CHECK_NOTNULL(decoder-&gt;requ
 est);</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    decoder-&gt;request-&gt;<a class="code" href="structprocess_1_1http_1_1Request.html#a78dfcfa785afc80e221d92543ff617f1">body</a>.append(data, length);</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#aafd4f335653a52c4c13fa094d8943969">http_parsing::SUCCESS</a>;</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;  }</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> on_message_complete(http_parser* p)</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;  {</div><div class="line"><a name="l00210"></a><span cl
 ass="lineno">  210</span>&#160;    <a class="code" href="classprocess_1_1DataDecoder.html">DataDecoder</a>* decoder = (<a class="code" href="classprocess_1_1DataDecoder.html">DataDecoder</a>*) p-&gt;data;</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;    CHECK_NOTNULL(decoder-&gt;request);</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    <span class="comment">// Parse the URL. This data was incrementally built up during calls</span></div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;    <span class="comment">// to `on_url`.</span></div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;    http_parser_url url;</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>
 &#160;    http_parser_url_init(&amp;url);</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    <span class="keywordtype">int</span> parse_url =</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;      http_parser_parse_url(decoder-&gt;url.data(), decoder-&gt;url.size(), 0, &amp;url);</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;    <span class="keywordflow">if</span> (parse_url != 0) {</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;      decoder-&gt;failure = <span class="keyword">true</span>;</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;      <span class="keywordflow">return</span> parse_url;</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    }</div><div class="line"><a name="l00225"></a><
 span class="lineno">  225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    <span class="keywordflow">if</span> (url.field_set &amp; (1 &lt;&lt; UF_PATH)) {</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;      decoder-&gt;request-&gt;<a class="code" href="structprocess_1_1http_1_1Request.html#aba3024fe3e1028d19f5fb4e92519cb56">url</a>.<a class="code" href="structprocess_1_1http_1_1URL.html#a184ec5f02b451f1d53b1ac5032a68dac">path</a> = std::string(</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;          decoder-&gt;url.data() + url.field_data[UF_PATH].off,</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;          url.field_data[UF_PATH].len);</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    }</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;</div><div class=
 "line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    <span class="keywordflow">if</span> (url.field_set &amp; (1 &lt;&lt; UF_FRAGMENT)) {</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;      decoder-&gt;request-&gt;<a class="code" href="structprocess_1_1http_1_1Request.html#aba3024fe3e1028d19f5fb4e92519cb56">url</a>.<a class="code" href="structprocess_1_1http_1_1URL.html#ae1a6af7f79e3e3662345f71cd4782c92">fragment</a> = std::string(</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;          decoder-&gt;url.data() + url.field_data[UF_FRAGMENT].off,</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;          url.field_data[UF_FRAGMENT].len);</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    }</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;</div><div class="line"><a name="l00238"></a><span class
 ="lineno">  238</span>&#160;    <span class="keywordflow">if</span> (url.field_set &amp; (1 &lt;&lt; UF_QUERY)) {</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;      decoder-&gt;query = std::string(</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;          decoder-&gt;url.data() + url.field_data[UF_QUERY].off,</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;          url.field_data[UF_QUERY].len);</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;    }</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;    <span class="comment">// Parse the query key/values.</span></div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    <a class="code" href="classTry.html">Try&lt;hashmap&lt;std::string, std::string&gt
 ;</a>&gt; decoded =</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;      <a class="code" href="namespaceprocess_1_1http_1_1query.html#a5e9e85365fc2a1a7cd2e1a2d39cb1f15">http::query::decode</a>(decoder-&gt;query);</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    <span class="keywordflow">if</span> (decoded.isError()) {</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;      decoder-&gt;failure = <span class="keyword">true</span>;</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#a1728c94cb446c34b1a8506f5dd6d0f6c">http_parsing::FAILURE</a>;</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;    }</div><div class="line"><a name="
 l00252"></a><span class="lineno">  252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;    decoder-&gt;request-&gt;<a class="code" href="structprocess_1_1http_1_1Request.html#aba3024fe3e1028d19f5fb4e92519cb56">url</a>.<a class="code" href="structprocess_1_1http_1_1URL.html#af2d0454d281cfe79f382c0dbc91bc251">query</a> = decoded.<a class="code" href="classhashmap.html#a41f14039c11b5a1ab6c81add74192c9a">get</a>();</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> encoding =</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;      decoder-&gt;request-&gt;<a class="code" href="structprocess_1_1http_1_1Request.html#a53555a597f9376d2dd71daa799a90494">headers</a>.<a class="code" href="classprocess_1_1http_1_1Headers.html#ace
 314043b5f44f854097d321246a26c0">get</a>(<span class="stringliteral">&quot;Content-Encoding&quot;</span>);</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;    <span class="keywordflow">if</span> (encoding.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>() &amp;&amp; encoding.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>() == <span class="stringliteral">&quot;gzip&quot;</span>) {</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;      <a class="code" href="classTry.html">Try&lt;std::string&gt;</a> decompressed = <a class="code" href="namespacegzip.html#a3bbc44fdaf5d546e4399fbf5d479477c">gzip::decompress</a>(decoder-&gt;request-&gt;<a class="code" href="structprocess_1_1http_1_1Request.html#a78dfcfa785afc80e221d92543ff617f1">body</a>);</div><div class="line"><a name
 ="l00260"></a><span class="lineno">  260</span>&#160;      <span class="keywordflow">if</span> (decompressed.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;        decoder-&gt;failure = <span class="keyword">true</span>;</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#a1728c94cb446c34b1a8506f5dd6d0f6c">http_parsing::FAILURE</a>;</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;      }</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;      decoder-&gt;request-&gt;<a class="code" href="structprocess_1_1http_1_1Request.html#a78dfcfa785afc80e221d92543ff617f1">body</a> = decompressed.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get<
 /a>();</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;      CHECK_LE(static_cast&lt;long&gt;(decoder-&gt;request-&gt;<a class="code" href="structprocess_1_1http_1_1Request.html#a78dfcfa785afc80e221d92543ff617f1">body</a>.length()),</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;        <a class="code" href="option_8hpp.html#ac4b53d77033a5d2405ef12ceb3dc6498">std::numeric_limits&lt;char&gt;::max</a>());</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;      decoder-&gt;request-&gt;<a class="code" href="structprocess_1_1http_1_1Request.html#a53555a597f9376d2dd71daa799a90494">headers</a>[<span class="stringliteral">&quot;Content-Length&quot;</span>] =</div><div class="line"><a name="l00270"></a><span class="lineno"> 
  270</span>&#160;        <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(decoder-&gt;request-&gt;<a class="code" href="structprocess_1_1http_1_1Request.html#a78dfcfa785afc80e221d92543ff617f1">body</a>.length());</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;    }</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;    decoder-&gt;requests.push_back(decoder-&gt;request);</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;    decoder-&gt;request = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#aafd4f335653a52c4c13fa094d8943969">http_parsing::SUCCESS</a>;</div><di
 v class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;  }</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;  <span class="keywordtype">bool</span> failure;</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;  http_parser parser;</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;  http_parser_settings settings;</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;  <span class="keyword">enum</span></div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;  {</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    HEADER_FIELD,</div><
 div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;    HEADER_VALUE</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;  } header;</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;  std::string field;</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;  std::string value;</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;  std::string query;</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;  std::string url;</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;  <a class="code" href="structprocess_1_1http_1_1Request.html">http::Request</a>* <a class="code" href="namespaceprocess_1_1http.html#ad8f400b5
 e54038df7e5662ec35da05fa">request</a>;</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;  std::deque&lt;http::Request*&gt; requests;</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;};</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="classprocess_1_1ResponseDecoder.html">  300</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1ResponseDecoder.html">ResponseDecoder</a></div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;{</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a
  name="l00303"></a><span class="lineno"><a class="line" href="classprocess_1_1ResponseDecoder.html#ab30005070b52416979638e2e76137717">  303</a></span>&#160;  <a class="code" href="classprocess_1_1ResponseDecoder.html#ab30005070b52416979638e2e76137717">ResponseDecoder</a>()</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;    : failure(false), header(HEADER_FIELD), response(nullptr)</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;  {</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;    http_parser_settings_init(&amp;settings);</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    settings.on_message_begin = &amp;ResponseDecoder::on_message_begin;</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;    settings.on_url = &amp;ResponseDecod
 er::on_url;</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    settings.on_header_field = &amp;ResponseDecoder::on_header_field;</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    settings.on_header_value = &amp;ResponseDecoder::on_header_value;</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;    settings.on_headers_complete = &amp;ResponseDecoder::on_headers_complete;</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;    settings.on_body = &amp;ResponseDecoder::on_body;</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;    settings.on_message_complete = &amp;ResponseDecoder::on_message_complete;</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;    settings.on_status = &amp;ResponseDecoder::on_status;</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#
 160;    settings.on_chunk_complete = &amp;ResponseDecoder::on_chunk_complete;</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;    settings.on_chunk_header = &amp;ResponseDecoder::on_chunk_header;</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;    http_parser_init(&amp;parser, HTTP_RESPONSE);</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;    parser.data = <span class="keyword">this</span>;</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;  }</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;</div><div class="line"><a name="l00324"></a><span class="lineno"><a class="line" href="classprocess_1_1ResponseDecoder.html#a862c58527378b043b2779a28bc448dbb"
 >  324</a></span>&#160;  <a class="code" href="classprocess_1_1ResponseDecoder.html#a862c58527378b043b2779a28bc448dbb">~ResponseDecoder</a>()</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;  {</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;    <span class="keyword">delete</span> response;</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;    <span class="keywordflow">foreach</span> (<a class="code" href="structprocess_1_1http_1_1Response.html">http::Response</a>* response, responses) {</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;      <span class="keyword">delete</span> response;</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;    }</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;  }</div><
 div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;</div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="classprocess_1_1ResponseDecoder.html#a56b4e8825e59a2321268eabfbf714b70">  333</a></span>&#160;  std::deque&lt;http::Response*&gt; <a class="code" href="classprocess_1_1ResponseDecoder.html#a56b4e8825e59a2321268eabfbf714b70">decode</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* data, <span class="keywordtype">size_t</span> length)</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;  {</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    <span class="keywordtype">size_t</span> parsed = http_parser_execute(&amp;parser, &amp;settings, data, length);</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;    <span class=
 "keywordflow">if</span> (parsed != length) {</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;      <span class="comment">// TODO(bmahler): joyent/http-parser exposes error reasons.</span></div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;      failure = <span class="keyword">true</span>;</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;    }</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;    <span class="keywordflow">if</span> (!responses.empty()) {</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;      std::deque&lt;http::Response*&gt; result = responses;</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;      responses.clear();</div><div class="line"><a name="l00345"></a><span class="lineno">  345
 </span>&#160;      <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;    }</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;    <span class="keywordflow">return</span> std::deque&lt;http::Response*&gt;();</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;  }</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="classprocess_1_1ResponseDecoder.html#a5d32f69bc877e26509324f6aea2de46a">  351</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classprocess_1_1ResponseDecoder.html#a5d32f69bc877e26509324f6aea2de46a">failed</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00352"></a><span class="li
 neno">  352</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;    <span class="keywordflow">return</span> failure;</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;  }</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> on_message_begin(http_parser* p)</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;  {</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;    <a class="code" href="classprocess_1_1ResponseDecoder.html">ResponseDecoder</a>* decoder = (<a class="code" href="classprocess_1_1ResponseDecoder.h
 tml">ResponseDecoder</a>*) p-&gt;data;</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;    CHECK(!decoder-&gt;failure);</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;    decoder-&gt;header = HEADER_FIELD;</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;    decoder-&gt;field.clear();</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;    decoder-&gt;value.clear();</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;    CHECK(decoder-&gt;response == <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;<
 /div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;    decoder-&gt;response = <span class="keyword">new</span> <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#a4e7892daaddcb4dd2e4ebb1266715316">http::Response</a>();</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;    decoder-&gt;response-&gt;<a class="code" href="structprocess_1_1http_1_1Response.html#a8fcbd2073ace160af24a9ee531cb4378">status</a>.clear();</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;    decoder-&gt;response-&gt;<a class="code" href="structprocess_1_1http_1_1Response.html#ae463c5c7a083aea98a89cf9b675b59ab">headers</a>.clear();</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;    decoder-&gt;response-&gt;<a class="code" href="structprocess_1_1http_1_1Response.html#a6846045a3c3df3abd8e2735847af3a79">type</a> = <a class="code" href="structprocess_1_1
 http_1_1Response.html#a6dd5881e0450540a106e37257434eaada7d2a4db1b1426c6caab18fa8b484f4f5">http::Response::BODY</a>;</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;    decoder-&gt;response-&gt;<a class="code" href="structprocess_1_1http_1_1Response.html#a5f6d23dd77e1eeb0737dc728e0109905">body</a>.clear();</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;    decoder-&gt;response-&gt;<a class="code" href="structprocess_1_1http_1_1Response.html#aad42d5f8c85b81742de9f3f1a0f6d328">path</a>.clear();</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#aafd4f335653a52c4c13fa094d8943969">http_parsing::SUCCESS</a>;</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;  }</div><di
 v class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> on_chunk_complete(http_parser* p)</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;  {</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#aafd4f335653a52c4c13fa094d8943969">http_parsing::SUCCESS</a>;</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;  }</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> on_chunk_header(http_parser* p)</div><div class="line"><a name=
 "l00385"></a><span class="lineno">  385</span>&#160;  {</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#aafd4f335653a52c4c13fa094d8943969">http_parsing::SUCCESS</a>;</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;  }</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> on_url(http_parser* p, <span class="keyword">const</span> <span class="keywordtype">char</span>* data, <span class="keywordtype">size_t</span> length)</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;  {</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;    <span class="keywordflow">return</spa
 n> <a class="code" href="namespaceprocess_1_1http__parsing.html#aafd4f335653a52c4c13fa094d8943969">http_parsing::SUCCESS</a>;</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;  }</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> on_header_field(http_parser* p, <span class="keyword">const</span> <span class="keywordtype">char</span>* data, <span class="keywordtype">size_t</span> length)</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;  {</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;    <a class="code" href="classprocess_1_1ResponseDecoder.html">ResponseDecoder</a>* decoder = (<a class="code" href="classprocess_1_1ResponseDecoder.html">ResponseDecoder</a>*) p-&gt;data;</div><div class="line"
 ><a name="l00397"></a><span class="lineno">  397</span>&#160;    CHECK_NOTNULL(decoder-&gt;response);</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;    <span class="keywordflow">if</span> (decoder-&gt;header != HEADER_FIELD) {</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;      decoder-&gt;response-&gt;<a class="code" href="structprocess_1_1http_1_1Response.html#ae463c5c7a083aea98a89cf9b675b59ab">headers</a>[decoder-&gt;field] = decoder-&gt;value;</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;      decoder-&gt;field.clear();</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;      decoder-&gt;value.clear();</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;    }</div><div class="line"><a name="l00404"></a><span class="lineno"> 
  404</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;    decoder-&gt;field.append(data, length);</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;    decoder-&gt;header = HEADER_FIELD;</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#aafd4f335653a52c4c13fa094d8943969">http_parsing::SUCCESS</a>;</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;  }</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> on_header_value(http_parser* p, <span class="keyword">const</span> 
 <span class="keywordtype">char</span>* data, <span class="keywordtype">size_t</span> length)</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;  {</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;    <a class="code" href="classprocess_1_1ResponseDecoder.html">ResponseDecoder</a>* decoder = (<a class="code" href="classprocess_1_1ResponseDecoder.html">ResponseDecoder</a>*) p-&gt;data;</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;    CHECK_NOTNULL(decoder-&gt;response);</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;    decoder-&gt;value.append(data, length);</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;    decoder-&gt;header = HEADER_VALUE;</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1ht
 tp__parsing.html#aafd4f335653a52c4c13fa094d8943969">http_parsing::SUCCESS</a>;</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;  }</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> on_headers_complete(http_parser* p)</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;  {</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;    <a class="code" href="classprocess_1_1ResponseDecoder.html">ResponseDecoder</a>* decoder = (<a class="code" href="classprocess_1_1ResponseDecoder.html">ResponseDecoder</a>*) p-&gt;data;</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;    CHECK_NOTNULL(decoder-
 &gt;response);</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;    <span class="comment">// Add final header.</span></div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;    decoder-&gt;response-&gt;<a class="code" href="structprocess_1_1http_1_1Response.html#ae463c5c7a083aea98a89cf9b675b59ab">headers</a>[decoder-&gt;field] = decoder-&gt;value;</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;    decoder-&gt;field.clear();</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;    decoder-&gt;value.clear();</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#a
 afd4f335653a52c4c13fa094d8943969">http_parsing::SUCCESS</a>;</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;  }</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> on_body(http_parser* p, <span class="keyword">const</span> <span class="keywordtype">char</span>* data, <span class="keywordtype">size_t</span> length)</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;  {</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;    <a class="code" href="classprocess_1_1ResponseDecoder.html">ResponseDecoder</a>* decoder = (<a class="code" href="classprocess_1_1ResponseDecoder.html">ResponseDecoder</a>*) p-&gt;data;</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;    CHECK_NO
 TNULL(decoder-&gt;response);</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;    decoder-&gt;response-&gt;<a class="code" href="structprocess_1_1http_1_1Response.html#a5f6d23dd77e1eeb0737dc728e0109905">body</a>.append(data, length);</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#aafd4f335653a52c4c13fa094d8943969">http_parsing::SUCCESS</a>;</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;  }</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> on_message_complete(http_parser* p)</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;  {</div><div class="line"><a n
 ame="l00444"></a><span class="lineno">  444</span>&#160;    <a class="code" href="classprocess_1_1ResponseDecoder.html">ResponseDecoder</a>* decoder = (<a class="code" href="classprocess_1_1ResponseDecoder.html">ResponseDecoder</a>*) p-&gt;data;</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;    CHECK_NOTNULL(decoder-&gt;response);</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="namespaceprocess_1_1http.html#a061749759c8d327692f4dbb3bb8b8440">http::statuses</a>-&gt;<a class="code" href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">contains</a>(decoder-&gt;parser.status_code)) {</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;      decoder-&
 gt;response-&gt;<a class="code" href="structprocess_1_1http_1_1Response.html#ad6530fddd03380dbb3b23b17523cb242">code</a> = decoder-&gt;parser.status_code;</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;      decoder-&gt;response-&gt;<a class="code" href="structprocess_1_1http_1_1Response.html#a8fcbd2073ace160af24a9ee531cb4378">status</a> =</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;        <a class="code" href="structprocess_1_1http_1_1Status.html#a49f854c52adce69bc1d4cc5c15cdccac">http::Status::string</a>(decoder-&gt;parser.status_code);</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;      decoder-&gt;failure = <span class="keyword">true</span>;</div><div class="
 line"><a name="l00455"></a><span class="lineno">  455</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#a1728c94cb446c34b1a8506f5dd6d0f6c">http_parsing::FAILURE</a>;</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;    }</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;    <span class="comment">// We can only provide the gzip encoding.</span></div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> encoding =</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;      decoder-&gt;response-&gt;<a class="code" href="structprocess_1_1http_1_1Response.html#ae463c5c7a083aea98a89cf9b675b59ab">headers</a>.<a class="code" href="classprocess_1_1htt
 p_1_1Headers.html#ace314043b5f44f854097d321246a26c0">get</a>(<span class="stringliteral">&quot;Content-Encoding&quot;</span>);</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;    <span class="keywordflow">if</span> (encoding.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>() &amp;&amp; encoding.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>() == <span class="stringliteral">&quot;gzip&quot;</span>) {</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;      <a class="code" href="classTry.html">Try&lt;std::string&gt;</a> decompressed = <a class="code" href="namespacegzip.html#a3bbc44fdaf5d546e4399fbf5d479477c">gzip::decompress</a>(decoder-&gt;response-&gt;<a class="code" href="structprocess_1_1http_1_1Response.html#a5f6d23dd77e1eeb0737dc728e0109905">body</a>);</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;      <s
 pan class="keywordflow">if</span> (decompressed.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;        decoder-&gt;failure = <span class="keyword">true</span>;</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#a1728c94cb446c34b1a8506f5dd6d0f6c">http_parsing::FAILURE</a>;</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;      }</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;      decoder-&gt;response-&gt;<a class="code" href="structprocess_1_1http_1_1Response.html#a5f6d23dd77e1eeb0737dc728e0109905">body</a> = decompressed.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00468"></a><span cl
 ass="lineno">  468</span>&#160;</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;      CHECK_LE(static_cast&lt;long&gt;(decoder-&gt;response-&gt;<a class="code" href="structprocess_1_1http_1_1Response.html#a5f6d23dd77e1eeb0737dc728e0109905">body</a>.length()),</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;        <a class="code" href="option_8hpp.html#ac4b53d77033a5d2405ef12ceb3dc6498">std::numeric_limits&lt;char&gt;::max</a>());</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;      decoder-&gt;response-&gt;<a class="code" href="structprocess_1_1http_1_1Response.html#ae463c5c7a083aea98a89cf9b675b59ab">headers</a>[<span class="stringliteral">&quot;Content-Length&quot;</span>] =</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;        <span class="keyword">static_c
 ast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(decoder-&gt;response-&gt;<a class="code" href="structprocess_1_1http_1_1Response.html#a5f6d23dd77e1eeb0737dc728e0109905">body</a>.length());</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;    }</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;    decoder-&gt;responses.push_back(decoder-&gt;response);</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;    decoder-&gt;response = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#aafd4f335653a52c4c13fa094d8943969">http_parsing::SUCCESS</a>;</div><div class="line"><a name="l00479"></a><span class="l
 ineno">  479</span>&#160;  }</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> on_status(http_parser* p, <span class="keyword">const</span> <span class="keywordtype">char</span>* data, <span class="keywordtype">size_t</span> length)</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;  {</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1http__parsing.html#aafd4f335653a52c4c13fa094d8943969">http_parsing::SUCCESS</a>;</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;  }</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;</div><div class="line"><a name="l00486"></a><span class="lineno"
 >  486</span>&#160;  <span class="keywordtype">bool</span> failure;</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;  http_parser parser;</div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;  http_parser_settings settings;</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;  <span class="keyword">enum</span></div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;  {</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;    HEADER_FIELD,</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;    HEADER_VALUE</div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;  } header;</div><div class="line"><a name="l00496
 "></a><span class="lineno">  496</span>&#160;</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;  std::string field;</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;  std::string value;</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;</div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;  <a class="code" href="structprocess_1_1http_1_1Response.html">http::Response</a>* response;</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;  std::deque&lt;http::Response*&gt; responses;</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;};</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;</div><div clas
 s="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;<span class="comment">// Provides a response decoder that returns &#39;PIPE&#39; responses once</span></div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;<span class="comment">// the response headers are received, but before the body data</span></div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;<span class="comment">// is received. Callers are expected to read the body from the</span></div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;<span class="comment">// Pipe::Reader in the response.</span></div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;<span class="comment">// TODO(bmahler): Consolidate streaming and non-streaming response</span></div><div class="line"><a name="l005
 12"></a><span class="lineno">  512</span>&#160;<span class="comment">// decoders.</span></div><div class="line"><a name="l00513"></a><span class="lineno"><a class="line" href="classprocess_1_1StreamingResponseDecoder.html">  513</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1StreamingResponseDecoder.html">StreamingResponseDecoder</a></div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;{</div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00516"></a><span class="lineno"><a class="line" href="classprocess_1_1StreamingResponseDecoder.html#ab1b1d689df9ee3f716232ed0d9b85812">  516</a></span>&#160;  <a class="code" href="classprocess_1_1StreamingResponseDecoder.html#ab1b1d689df9ee3f716232ed0d9b85812">StreamingResponseDecoder</a>()</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;    :
  failure(false), header(HEADER_FIELD), response(nullptr)</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;  {</div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;    http_parser_settings_init(&amp;settings);</div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;</div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;    settings.on_message_begin =</div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;      &amp;StreamingResponseDecoder::on_message_begin;</div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;    settings.on_url =</div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;      &amp;StreamingResponseDecoder::on_url;</div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;    settings.on_header_field =</div><div class="line"><a name="l00526">
 </a><span class="lineno">  526</span>&#160;      &amp;StreamingResponseDecoder::on_header_field;</div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;    settings.on_header_value =</div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;      &amp;StreamingResponseDecoder::on_header_value;</div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;    settings.on_headers_complete =</div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;      &amp;StreamingResponseDecoder::on_headers_complete;</div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;    settings.on_body =</div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;      &amp;StreamingResponseDecoder::on_body;</div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;    settings.on_message_complete =</div><div class="line"><a name="l0053
 4"></a><span class="lineno">  534</span>&#160;      &amp;StreamingResponseDecoder::on_message_complete;</div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;    settings.on_status =</div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;      &amp;StreamingResponseDecoder::on_status;</div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;    settings.on_chunk_complete =</div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;      &amp;StreamingResponseDecoder::on_chunk_complete;</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;    settings.on_chunk_header =</div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;      &amp;StreamingResponseDecoder::on_chunk_header;</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;</div><div class="line"><a name="l00542"></a><span class="lineno"
 >  542</span>&#160;    http_parser_init(&amp;parser, HTTP_RESPONSE);</div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;</div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;    parser.data = <span class="keyword">this</span>;</div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;  }</div><div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;</div><div class="line"><a name="l00547"></a><span class="lineno"><a class="line" href="classprocess_1_1StreamingResponseDecoder.html#ad7c6287ca5347a3d37c2ac9183c8a88d">  547</a></span>&#160;  <a class="code" href="classprocess_1_1StreamingResponseDecoder.html#ad7c6287ca5347a3d37c2ac9183c8a88d">~StreamingResponseDecoder</a>()</div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;  {</div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;    <span class="keyword">delete</span> 
 response;</div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;</div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;    <span class="keywordflow">if</span> (writer.isSome()) {</div><div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;      writer-&gt;fail(<span class="stringliteral">&quot;Decoder is being deleted&quot;</span>);</div><div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;    }</div><div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;</div><div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;    <span class="keywordflow">foreach</span> (<a class="code" href="structprocess_1_1http_1_1Response.html">http::Response</a>* response, responses) {</div><div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;      <span class="keyword">delete</span> response;</div><div class="line"><a name="l00557"
 ></a><span class="lineno">  557</span>&#160;    }</div><div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;  }</div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;</div><div class="line"><a name="l00560"></a><span class="lineno"><a class="line" href="classprocess_1_1StreamingResponseDecoder.html#aa49ca0c8710b47302097a206dc161708">  560</a></span>&#160;  std::deque&lt;http::Response*&gt; <a class="code" href="classprocess_1_1StreamingResponseDecoder.html#aa49ca0c8710b47302097a206dc161708">decode</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* data, <span class="keywordtype">size_t</span> length)</div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;  {</div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;    <span class="keywordtype">size_t</span> parsed = http_parser_execute(&amp;parser, &amp;settings, data, length);</div><div class="line"
 ><a name="l00563"></a><span class="lineno">  563</span>&#160;</div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;    <span class="keywordflow">if</span> (parsed != length) {</div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;      <span class="comment">// TODO(bmahler): joyent/http-parser exposes error reasons.</span></div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;      failure = <span class="keyword">true</span>;</div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;</div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;      <span class="comment">// If we&#39;re still writing the body, fail the writer!</span></div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;      <span class="keywordflow">if</span> (writer.isSome()) {</div><div class="line"><a name="l00570"></a><span class="lineno">  570</spa
 n>&#160;        <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Writer.html">http::Pipe::Writer</a> writer_ = writer.get(); <span class="comment">// Remove const.</span></div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;        writer_.<a class="code" href="classprocess_1_1http_1_1Pipe_1_1Writer.html#adeb385b6897ff3c4a514b67dc6d7d7cf">fail</a>(<span class="stringliteral">&quot;failed to decode body&quot;</span>);</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;        writer = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;      }</div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;    }</div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;</div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;    <span class="keywordflow">if</span> (!r
 esponses.empty()) {</div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;      std::deque&lt;http::Response*&gt; result = responses;</div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;      responses.clear();</div><div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;      <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;    }</div><div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;</div><div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;    <span class="keywordflow">return</span> std::deque&lt;http::Response*&gt;();</div><div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;  }</div><div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;</div><div class="line"><a name="l00585"></a><span class="lineno"><a class="line" 
 href="classprocess_1_1StreamingResponseDecoder.html#ae7db33e85c98ef39426aa06f44f36fd9">  585</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classprocess_1_1StreamingResponseDecoder.html#ae7db33e85c98ef39426aa06f44f36fd9">failed</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;    <span class="keywordflow">return</span> failure;</div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;  }</div><div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;</div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;  <span class="comment">// Returns whether the decoder is currently writing a response</span></div><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;  <span class=
 "comment">// body. Helpful for knowing if the latest response is complete.</span></div><div class="line"><a name="l00592"></a><span class="lineno"><a class="line" href="classprocess_1_1StreamingResponseDecoder.html#ad6ee0f2076ab5fa042c83525bacd02ca">  592</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classprocess_1_1StreamingResponseDecoder.html#ad6ee0f2076ab5fa042c83525bacd02ca">writingBody</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;    <span class="keywordflow">return</span> writer.isSome();</div><div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;  }</div><div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;</div><div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;<span class="ke
 yword">private</span>:</div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">int</span> on_message_begin(http_parser* p

<TRUNCATED>