http://git-wip-us.apache.org/repos/asf/mesos-site/blob/db43ea8a/content/api/latest/c++/status__update__manager__process_8hpp_source.html
----------------------------------------------------------------------
diff --git 
a/content/api/latest/c++/status__update__manager__process_8hpp_source.html 
b/content/api/latest/c++/status__update__manager__process_8hpp_source.html
index fff3090..f21b772 100644
--- a/content/api/latest/c++/status__update__manager__process_8hpp_source.html
+++ b/content/api/latest/c++/status__update__manager__process_8hpp_source.html
@@ -688,390 +688,403 @@
 <div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160; 
       <span class="comment">// Open the updates file.</span></div>
 <div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160; 
       <a class="code" href="classTry.html">Try&lt;int_fd&gt;</a> result = <a 
class="code" 
href="namespaceos.html#abbdbbbe902fd8dc271077d94b99994e7">os::open</a>(</div>
 <div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160; 
           path.<a class="code" 
href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>(),</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160; 
           <a class="code" 
href="windows_2fcntl_8hpp.html#a1cf6b1de1fffedaa1d26b189e9a8d2cc">O_CREAT</a> | 
<a class="code" 
href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a2ecbb6269fcd18d1c24f57e832e0c826">O_SYNC</a>
 | <a class="code" 
href="windows_2fcntl_8hpp.html#a11b644a8526139c4cc1850dac1271ced">O_WRONLY</a> 
| <a class="code" 
href="windows_2fcntl_8hpp.html#ad6d8fbe4e494b4dbe051612572d3f757">O_CLOEXEC</a>,</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160; 
           <a class="code" 
href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a66cff14a0638cde9f422c7a4b0938e61">S_IRUSR</a>
 | <a class="code" 
href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#aead39710af2622ee9b0d412f62e90aa5">S_IWUSR</a>
 | <a class="code" 
href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a55fad1c3746e1b8a6a00c10998e91d91">S_IRGRP</a>
 | <a class="code" 
href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a90d7514882640a8cd7b8da14138103b7">S_IROTH</a>);</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  
639</span>&#160;</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160; 
       <span class="keywordflow">if</span> (result.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160; 
         <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160; 
             <span class="stringliteral">&quot;Failed to open 
&#39;&quot;</span> + path.<a class="code" 
href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>() + <span 
class="stringliteral">&quot;&#39; : &quot;</span> + result.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160; 
       }</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  
644</span>&#160;</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160; 
       fd = result.<a class="code" 
href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>();</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160; 
     }</div>
+<div class="line"><a name="l00637"></a><span class="lineno">  
637</span>&#160;<span class="preprocessor">#ifdef __WINDOWS__</span></div>
+<div class="line"><a name="l00638"></a><span class="lineno">  
638</span>&#160;<span class="preprocessor"></span>            O_BINARY |</div>
+<div class="line"><a name="l00639"></a><span class="lineno">  
639</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div>
+<div class="line"><a name="l00640"></a><span class="lineno">  
640</span>&#160;<span class="preprocessor"></span>            <a class="code" 
href="windows_2fcntl_8hpp.html#a1cf6b1de1fffedaa1d26b189e9a8d2cc">O_CREAT</a> | 
<a class="code" 
href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a2ecbb6269fcd18d1c24f57e832e0c826">O_SYNC</a>
 | <a class="code" 
href="windows_2fcntl_8hpp.html#a11b644a8526139c4cc1850dac1271ced">O_WRONLY</a> 
| <a class="code" 
href="windows_2fcntl_8hpp.html#ad6d8fbe4e494b4dbe051612572d3f757">O_CLOEXEC</a>,</div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160; 
           <a class="code" 
href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a66cff14a0638cde9f422c7a4b0938e61">S_IRUSR</a>
 | <a class="code" 
href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#aead39710af2622ee9b0d412f62e90aa5">S_IWUSR</a>
 | <a class="code" 
href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a55fad1c3746e1b8a6a00c10998e91d91">S_IRGRP</a>
 | <a class="code" 
href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a90d7514882640a8cd7b8da14138103b7">S_IROTH</a>);</div>
+<div class="line"><a name="l00642"></a><span class="lineno">  
642</span>&#160;</div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160; 
       <span class="keywordflow">if</span> (result.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160; 
         <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160; 
             <span class="stringliteral">&quot;Failed to open 
&#39;&quot;</span> + path.<a class="code" 
href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>() + <span 
class="stringliteral">&quot;&#39; : &quot;</span> + result.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160; 
       }</div>
 <div class="line"><a name="l00647"></a><span class="lineno">  
647</span>&#160;</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160; 
     process::Owned&lt;StatusUpdateStream&gt; stream(</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160; 
         <span class="keyword">new</span> StatusUpdateStream(statusUpdateType, 
streamId, path, fd));</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160; 
       fd = result.<a class="code" 
href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>();</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160; 
     }</div>
 <div class="line"><a name="l00650"></a><span class="lineno">  
650</span>&#160;</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160; 
     stream-&gt;frameworkId = frameworkId;</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  
652</span>&#160;</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160; 
     <span class="keywordflow">return</span> std::move(stream);</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160; 
   }</div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160; 
     process::Owned&lt;StatusUpdateStream&gt; stream(</div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160; 
         <span class="keyword">new</span> StatusUpdateStream(statusUpdateType, 
streamId, path, fd));</div>
+<div class="line"><a name="l00653"></a><span class="lineno">  
653</span>&#160;</div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160; 
     stream-&gt;frameworkId = frameworkId;</div>
 <div class="line"><a name="l00655"></a><span class="lineno">  
655</span>&#160;</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  
656</span>&#160;</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160; 
   <span class="keyword">static</span> <a class="code" 
href="classResult.html">Result&lt;std::pair&lt;process::Owned&lt;StatusUpdateStream&gt;</a>,
 State&gt;&gt; <a class="code" 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#ab8a393d0453cc8174d71dad6f1e45d6f">recover</a>(</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160; 
       <span class="keyword">const</span> std::string&amp; 
statusUpdateType,</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160; 
       <span class="keyword">const</span> IDType&amp; streamId,</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160; 
       <span class="keyword">const</span> std::string&amp; path,</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160; 
       <span class="keywordtype">bool</span> strict)</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160; 
   {</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160; 
     <span class="keywordflow">if</span> (<a class="code" 
href="namespaceos.html#a69b3969276ffa4cb698b9431ee43bd7c">os::exists</a>(<a 
class="code" href="classPath.html">Path</a>(path).dirname()) &amp;&amp; !<a 
class="code" 
href="namespaceos.html#a69b3969276ffa4cb698b9431ee43bd7c">os::exists</a>(path)) 
{</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160; 
       <span class="comment">// This could happen if the process died before it 
checkpointed any</span></div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160; 
       <span class="comment">// status updates.</span></div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="structNone.html">None</a>();</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160; 
     }</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  
668</span>&#160;</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160; 
     <span class="comment">// Open the status updates file for reading and 
writing.</span></div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;int_fd&gt;</a> fd = <a 
class="code" 
href="namespaceos.html#abbdbbbe902fd8dc271077d94b99994e7">os::open</a>(path, <a 
class="code" 
href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a2ecbb6269fcd18d1c24f57e832e0c826">O_SYNC</a>
 | <a class="code" 
href="windows_2fcntl_8hpp.html#abb0586253488ee61072b73557eeb873b">O_RDWR</a> | 
<a class="code" 
href="windows_2fcntl_8hpp.html#ad6d8fbe4e494b4dbe051612572d3f757">O_CLOEXEC</a>);</div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160; 
     <span class="keywordflow">return</span> std::move(stream);</div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160; 
   }</div>
+<div class="line"><a name="l00658"></a><span class="lineno">  
658</span>&#160;</div>
+<div class="line"><a name="l00659"></a><span class="lineno">  
659</span>&#160;</div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160; 
   <span class="keyword">static</span> <a class="code" 
href="classResult.html">Result&lt;std::pair&lt;process::Owned&lt;StatusUpdateStream&gt;</a>,
 State&gt;&gt; <a class="code" 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#ab8a393d0453cc8174d71dad6f1e45d6f">recover</a>(</div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160; 
       <span class="keyword">const</span> std::string&amp; 
statusUpdateType,</div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160; 
       <span class="keyword">const</span> IDType&amp; streamId,</div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160; 
       <span class="keyword">const</span> std::string&amp; path,</div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160; 
       <span class="keywordtype">bool</span> strict)</div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160; 
   {</div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160; 
     <span class="keywordflow">if</span> (<a class="code" 
href="namespaceos.html#a69b3969276ffa4cb698b9431ee43bd7c">os::exists</a>(<a 
class="code" href="classPath.html">Path</a>(path).dirname()) &amp;&amp; !<a 
class="code" 
href="namespaceos.html#a69b3969276ffa4cb698b9431ee43bd7c">os::exists</a>(path)) 
{</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160; 
       <span class="comment">// This could happen if the process died before it 
checkpointed any</span></div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160; 
       <span class="comment">// status updates.</span></div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="structNone.html">None</a>();</div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160; 
     }</div>
 <div class="line"><a name="l00671"></a><span class="lineno">  
671</span>&#160;</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160; 
     <span class="keywordflow">if</span> (fd.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<span class="stringliteral">&quot;Failed to 
open &#39;&quot;</span> + path + <span class="stringliteral">&quot;&#39;: 
&quot;</span> + fd.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160; 
     }</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  
675</span>&#160;</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160; 
     process::Owned&lt;StatusUpdateStream&gt; stream(</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160; 
         <span class="keyword">new</span> StatusUpdateStream(statusUpdateType, 
streamId, path, fd.<a class="code" 
href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>()));</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  
678</span>&#160;</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160; 
     VLOG(1) &lt;&lt; <span class="stringliteral">&quot;Replaying &quot;</span> 
&lt;&lt; statusUpdateType &lt;&lt; <span class="stringliteral">&quot; stream 
&quot;</span></div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160; 
             &lt;&lt; <a class="code" 
href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(streamId);</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  
681</span>&#160;</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160; 
     <span class="comment">// Read the updates/acknowledgments, building both 
the stream&#39;s in-memory</span></div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160; 
     <span class="comment">// structures and the state object which will be 
returned.</span></div>
-<div class="line"><a name="l00684"></a><span class="lineno">  
684</span>&#160;</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160; 
     State state;</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160; 
     <a class="code" href="classResult.html">Result&lt;CheckpointType&gt;</a> 
record = <a class="code" href="structNone.html">None</a>();</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160; 
     <span class="keywordflow">while</span> (<span class="keyword">true</span>) 
{</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160; 
       <span class="comment">// Ignore errors due to partial protobuf read and 
enable undoing failed</span></div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160; 
       <span class="comment">// reads by reverting to the previous seek 
position.</span></div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160; 
       record = ::protobuf::read&lt;CheckpointType&gt;(fd.<a class="code" 
href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>(), <span 
class="keyword">true</span>, <span class="keyword">true</span>);</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  
691</span>&#160;</div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160; 
       <span class="keywordflow">if</span> (!record.<a class="code" 
href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160; 
         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160; 
       }</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  
695</span>&#160;</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160; 
       <span class="keywordflow">switch</span> (record-&gt;type()) {</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160; 
         <span class="keywordflow">case</span> CheckpointType::ACK: {</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160; 
           <span class="comment">// Get the corresponding update for this 
ACK.</span></div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160; 
           <span class="keyword">const</span> <a class="code" 
href="classResult.html">Result&lt;UpdateType&gt;</a>&amp; update = 
stream-&gt;next();</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160; 
           <span class="keywordflow">if</span> (update.<a class="code" 
href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160; 
             <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(update.<a class="code" 
href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160; 
           }</div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160; 
     <span class="comment">// Open the status updates file for reading and 
writing.</span></div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;int_fd&gt;</a> fd = <a 
class="code" 
href="namespaceos.html#abbdbbbe902fd8dc271077d94b99994e7">os::open</a>(</div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160; 
         path,</div>
+<div class="line"><a name="l00675"></a><span class="lineno">  
675</span>&#160;#ifdef __WINDOWS__</div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160; 
         O_BINARY |</div>
+<div class="line"><a name="l00677"></a><span class="lineno">  
677</span>&#160;#endif <span class="comment">// __WINDOWS__</span></div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160; 
         <a class="code" 
href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a2ecbb6269fcd18d1c24f57e832e0c826">O_SYNC</a>
 | <a class="code" 
href="windows_2fcntl_8hpp.html#abb0586253488ee61072b73557eeb873b">O_RDWR</a> | 
<a class="code" 
href="windows_2fcntl_8hpp.html#ad6d8fbe4e494b4dbe051612572d3f757">O_CLOEXEC</a>);</div>
+<div class="line"><a name="l00679"></a><span class="lineno">  
679</span>&#160;</div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160; 
     <span class="keywordflow">if</span> (fd.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<span class="stringliteral">&quot;Failed to 
open &#39;&quot;</span> + path + <span class="stringliteral">&quot;&#39;: 
&quot;</span> + fd.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160; 
     }</div>
+<div class="line"><a name="l00683"></a><span class="lineno">  
683</span>&#160;</div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160; 
     process::Owned&lt;StatusUpdateStream&gt; stream(</div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160; 
         <span class="keyword">new</span> StatusUpdateStream(statusUpdateType, 
streamId, path, fd.<a class="code" 
href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>()));</div>
+<div class="line"><a name="l00686"></a><span class="lineno">  
686</span>&#160;</div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160; 
     VLOG(1) &lt;&lt; <span class="stringliteral">&quot;Replaying &quot;</span> 
&lt;&lt; statusUpdateType &lt;&lt; <span class="stringliteral">&quot; stream 
&quot;</span></div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160; 
             &lt;&lt; <a class="code" 
href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(streamId);</div>
+<div class="line"><a name="l00689"></a><span class="lineno">  
689</span>&#160;</div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160; 
     <span class="comment">// Read the updates/acknowledgments, building both 
the stream&#39;s in-memory</span></div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160; 
     <span class="comment">// structures and the state object which will be 
returned.</span></div>
+<div class="line"><a name="l00692"></a><span class="lineno">  
692</span>&#160;</div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160; 
     State state;</div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160; 
     <a class="code" href="classResult.html">Result&lt;CheckpointType&gt;</a> 
record = <a class="code" href="structNone.html">None</a>();</div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160; 
     <span class="keywordflow">while</span> (<span class="keyword">true</span>) 
{</div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160; 
       <span class="comment">// Ignore errors due to partial protobuf read and 
enable undoing failed</span></div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160; 
       <span class="comment">// reads by reverting to the previous seek 
position.</span></div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160; 
       record = ::protobuf::read&lt;CheckpointType&gt;(fd.<a class="code" 
href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>(), <span 
class="keyword">true</span>, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00699"></a><span class="lineno">  
699</span>&#160;</div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160; 
       <span class="keywordflow">if</span> (!record.<a class="code" 
href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160; 
         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160; 
       }</div>
 <div class="line"><a name="l00703"></a><span class="lineno">  
703</span>&#160;</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160; 
           <span class="keywordflow">if</span> (update.<a class="code" 
href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160; 
             <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160; 
                 <span class="stringliteral">&quot;Unexpected &quot;</span> + 
statusUpdateType + <span class="stringliteral">&quot; 
acknowledgment&quot;</span></div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160; 
                 <span class="stringliteral">&quot; (UUID: &quot;</span> + <a 
class="code" 
href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(record-&gt;uuid())
 +</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160; 
                 <span class="stringliteral">&quot;) for stream &quot;</span> + 
<a class="code" 
href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(streamId));</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160; 
           }</div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160; 
           stream-&gt;_handle(update.<a class="code" 
href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>(), 
record-&gt;type());</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160; 
           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160; 
         }</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160; 
         <span class="keywordflow">case</span> CheckpointType::UPDATE: {</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160; 
           stream-&gt;_handle(record-&gt;update(), record-&gt;type());</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160; 
           state.updates.push_back(record-&gt;update());</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160; 
           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160; 
         }</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160; 
       }</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160; 
     }</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  
720</span>&#160;</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160; 
     <span class="comment">// Always truncate the file to contain only valid 
updates.</span></div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160; 
     <span class="comment">// NOTE: This is safe even though we ignore partial 
protobuf read</span></div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160; 
     <span class="comment">// errors above, because the `fd` is properly set to 
the end of the</span></div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160; 
     <span class="comment">// last valid update by 
`protobuf::read()`.</span></div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;off_t&gt;</a> currentPosition 
= <a class="code" 
href="namespaceos.html#ae933a0291b9f1195709f10b568daccac">os::lseek</a>(fd.<a 
class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>(), 
0, SEEK_CUR);</div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160; 
     <span class="keywordflow">if</span> (currentPosition.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(</div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160; 
           <span class="stringliteral">&quot;Failed to lseek file 
&#39;&quot;</span> + path + <span class="stringliteral">&quot;&#39;: 
&quot;</span> + currentPosition.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160; 
     }</div>
-<div class="line"><a name="l00730"></a><span class="lineno">  
730</span>&#160;</div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> truncated = <a 
class="code" 
href="namespaceos.html#af41b169df092f5afbd41de13c450e959">os::ftruncate</a>(fd.<a
 class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>(), 
currentPosition.<a class="code" 
href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>());</div>
-<div class="line"><a name="l00732"></a><span class="lineno">  
732</span>&#160;</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160; 
     <span class="keywordflow">if</span> (truncated.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(</div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160; 
           <span class="stringliteral">&quot;Failed to truncate file 
&#39;&quot;</span> + path + <span class="stringliteral">&quot;&#39;: 
&quot;</span> + truncated.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160; 
     }</div>
-<div class="line"><a name="l00737"></a><span class="lineno">  
737</span>&#160;</div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160; 
     <span class="comment">// After reading a non-corrupted updates file, 
`record` should be `none`.</span></div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160; 
     <span class="keywordflow">if</span> (record.<a class="code" 
href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160; 
       std::string <a class="code" 
href="classprocess_1_1ProcessBase.html#afb219ae4b5e8dab3f724e78032e03d0c">message</a>
 =</div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160; 
         <span class="stringliteral">&quot;Failed to read file 
&#39;&quot;</span> + path + <span class="stringliteral">&quot;&#39;: 
&quot;</span> + record.<a class="code" 
href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>();</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  
742</span>&#160;</div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160; 
       <span class="keywordflow">if</span> (strict) {</div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160; 
         <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(message);</div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160; 
       }</div>
-<div class="line"><a name="l00746"></a><span class="lineno">  
746</span>&#160;</div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160; 
       LOG(WARNING) &lt;&lt; <a class="code" 
href="classprocess_1_1ProcessBase.html#afb219ae4b5e8dab3f724e78032e03d0c">message</a>;</div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160; 
       state.error = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160; 
     }</div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160; 
       <span class="keywordflow">switch</span> (record-&gt;type()) {</div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160; 
         <span class="keywordflow">case</span> CheckpointType::ACK: {</div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160; 
           <span class="comment">// Get the corresponding update for this 
ACK.</span></div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160; 
           <span class="keyword">const</span> <a class="code" 
href="classResult.html">Result&lt;UpdateType&gt;</a>&amp; update = 
stream-&gt;next();</div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160; 
           <span class="keywordflow">if</span> (update.<a class="code" 
href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160; 
             <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(update.<a class="code" 
href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160; 
           }</div>
+<div class="line"><a name="l00711"></a><span class="lineno">  
711</span>&#160;</div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160; 
           <span class="keywordflow">if</span> (update.<a class="code" 
href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160; 
             <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(</div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160; 
                 <span class="stringliteral">&quot;Unexpected &quot;</span> + 
statusUpdateType + <span class="stringliteral">&quot; 
acknowledgment&quot;</span></div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160; 
                 <span class="stringliteral">&quot; (UUID: &quot;</span> + <a 
class="code" 
href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(record-&gt;uuid())
 +</div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160; 
                 <span class="stringliteral">&quot;) for stream &quot;</span> + 
<a class="code" 
href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(streamId));</div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160; 
           }</div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160; 
           stream-&gt;_handle(update.<a class="code" 
href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>(), 
record-&gt;type());</div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160; 
           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160; 
         }</div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160; 
         <span class="keywordflow">case</span> CheckpointType::UPDATE: {</div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160; 
           stream-&gt;_handle(record-&gt;update(), record-&gt;type());</div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160; 
           state.updates.push_back(record-&gt;update());</div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160; 
           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160; 
         }</div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160; 
       }</div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160; 
     }</div>
+<div class="line"><a name="l00728"></a><span class="lineno">  
728</span>&#160;</div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160; 
     <span class="comment">// Always truncate the file to contain only valid 
updates.</span></div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160; 
     <span class="comment">// NOTE: This is safe even though we ignore partial 
protobuf read</span></div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160; 
     <span class="comment">// errors above, because the `fd` is properly set to 
the end of the</span></div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160; 
     <span class="comment">// last valid update by 
`protobuf::read()`.</span></div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;off_t&gt;</a> currentPosition 
= <a class="code" 
href="namespaceos.html#ae933a0291b9f1195709f10b568daccac">os::lseek</a>(fd.<a 
class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>(), 
0, SEEK_CUR);</div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160; 
     <span class="keywordflow">if</span> (currentPosition.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(</div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160; 
           <span class="stringliteral">&quot;Failed to lseek file 
&#39;&quot;</span> + path + <span class="stringliteral">&quot;&#39;: 
&quot;</span> + currentPosition.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160; 
     }</div>
+<div class="line"><a name="l00738"></a><span class="lineno">  
738</span>&#160;</div>
+<div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> truncated = <a 
class="code" 
href="namespaceos.html#af41b169df092f5afbd41de13c450e959">os::ftruncate</a>(fd.<a
 class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>(), 
currentPosition.<a class="code" 
href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>());</div>
+<div class="line"><a name="l00740"></a><span class="lineno">  
740</span>&#160;</div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160; 
     <span class="keywordflow">if</span> (truncated.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(</div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160; 
           <span class="stringliteral">&quot;Failed to truncate file 
&#39;&quot;</span> + path + <span class="stringliteral">&quot;&#39;: 
&quot;</span> + truncated.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160; 
     }</div>
+<div class="line"><a name="l00745"></a><span class="lineno">  
745</span>&#160;</div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160; 
     <span class="comment">// After reading a non-corrupted updates file, 
`record` should be `none`.</span></div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160; 
     <span class="keywordflow">if</span> (record.<a class="code" 
href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160; 
       std::string <a class="code" 
href="classprocess_1_1ProcessBase.html#afb219ae4b5e8dab3f724e78032e03d0c">message</a>
 =</div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160; 
         <span class="stringliteral">&quot;Failed to read file 
&#39;&quot;</span> + path + <span class="stringliteral">&quot;&#39;: 
&quot;</span> + record.<a class="code" 
href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>();</div>
 <div class="line"><a name="l00750"></a><span class="lineno">  
750</span>&#160;</div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160; 
     state.terminated = stream-&gt;terminated;</div>
-<div class="line"><a name="l00752"></a><span class="lineno">  
752</span>&#160;</div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160; 
     <span class="keywordflow">if</span> (state.updates.empty()) {</div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160; 
       <span class="comment">// A stream is created only once there&#39;s 
something to write to it, so</span></div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160; 
       <span class="comment">// this can only happen if the checkpointing of 
the first update was</span></div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160; 
       <span class="comment">// interrupted.</span></div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160; 
       <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a 
class="code" 
href="namespacerouting_1_1link.html#aec1d046cc8ec45a0265d0522d673ade8">removed</a>
 = <a class="code" 
href="namespaceos.html#ac1c8ce3595084d78291f98c2be9f62ba">os::rm</a>(path);</div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160; 
       <span class="keywordflow">if</span> (strict) {</div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160; 
         <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(message);</div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160; 
       }</div>
+<div class="line"><a name="l00754"></a><span class="lineno">  
754</span>&#160;</div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160; 
       LOG(WARNING) &lt;&lt; <a class="code" 
href="classprocess_1_1ProcessBase.html#afb219ae4b5e8dab3f724e78032e03d0c">message</a>;</div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160; 
       state.error = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160; 
     }</div>
 <div class="line"><a name="l00758"></a><span class="lineno">  
758</span>&#160;</div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160; 
       <span class="keywordflow">if</span> (removed.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160; 
         <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(</div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160; 
             <span class="stringliteral">&quot;Failed to remove file 
&#39;&quot;</span> + path + <span class="stringliteral">&quot;&#39;: 
&quot;</span> + removed.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160; 
       }</div>
-<div class="line"><a name="l00763"></a><span class="lineno">  
763</span>&#160;</div>
-<div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="structNone.html">None</a>();</div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160; 
     }</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  
766</span>&#160;</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160; 
     <span class="keywordflow">return</span> std::make_pair(stream, 
state);</div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160; 
   }</div>
-<div class="line"><a name="l00769"></a><span class="lineno">  
769</span>&#160;</div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160; 
   <span class="comment">// This function handles the update, checkpointing if 
necessary.</span></div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160; 
   <span class="comment">//</span></div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160; 
   <span class="comment">// Returns `true`:  if the update is successfully 
handled.</span></div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160; 
   <span class="comment">//         `false`: if the update is a duplicate or 
has already been</span></div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160; 
   <span class="comment">//                  acknowledged.</span></div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160; 
   <span class="comment">//         `Error`: any errors (e.g., 
checkpointing).</span></div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160; 
   <a class="code" href="classTry.html">Try&lt;bool&gt;</a> <a class="code" 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">update</a>(<span
 class="keyword">const</span> UpdateType&amp; update)</div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160; 
   {</div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160; 
     <span class="keywordflow">if</span> (<a class="code" 
href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>.isSome())
 {</div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<a class="code" 
href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>.get());</div>
-<div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160; 
     }</div>
-<div class="line"><a name="l00781"></a><span class="lineno">  
781</span>&#160;</div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160; 
     <span class="comment">// TODO(gkleiman): This won&#39;t work with 
`StatusUpdate`, because the field</span></div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160; 
     <span class="comment">// containing the status update uuid has a different 
name. In order to</span></div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160; 
     <span class="comment">// make the `TaskStatusUpdateManager` use this 
process, we should avoid</span></div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160; 
     <span class="comment">// depending on identical field names.</span></div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160; 
     <span class="keywordflow">if</span> (!update.status().has_status_uuid()) 
{</div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<span class="stringliteral">&quot;Status 
update is missing &#39;status_uuid&#39;&quot;</span>);</div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160; 
     }</div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;id::UUID&gt;</a> statusUuid 
=</div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160; 
       <a class="code" 
href="structid_1_1UUID.html#afd66db1d29a4ee4be9c82581437dda74">id::UUID::fromBytes</a>(update.status().status_uuid().value());</div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160; 
     <a class="code" 
href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(statusUuid);</div>
-<div class="line"><a name="l00792"></a><span class="lineno">  
792</span>&#160;</div>
-<div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160; 
     <span class="comment">// Check that this status update has not already 
been acknowledged.</span></div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160; 
     <span class="keywordflow">if</span> (acknowledged.contains(statusUuid.<a 
class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>())) 
{</div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160; 
       LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Ignoring 
&quot;</span> &lt;&lt; statusUpdateType &lt;&lt; <span 
class="stringliteral">&quot; &quot;</span> &lt;&lt; update</div>
-<div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160; 
                    &lt;&lt; <span class="stringliteral">&quot; that has 
already been acknowledged&quot;</span>;</div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160; 
       <span class="keywordflow">return</span> <span 
class="keyword">false</span>;</div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160; 
     }</div>
-<div class="line"><a name="l00799"></a><span class="lineno">  
799</span>&#160;</div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160; 
     <span class="comment">// Check that this update has not already been 
received.</span></div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160; 
     <span class="keywordflow">if</span> (received.contains(statusUuid.<a 
class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>())) 
{</div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160; 
       LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Ignoring 
duplicate &quot;</span> &lt;&lt; statusUpdateType &lt;&lt; <span 
class="stringliteral">&quot; &quot;</span></div>
-<div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160; 
                    &lt;&lt; <a class="code" 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">update</a>;</div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160; 
       <span class="keywordflow">return</span> <span 
class="keyword">false</span>;</div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160; 
     }</div>
-<div class="line"><a name="l00806"></a><span class="lineno">  
806</span>&#160;</div>
-<div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160; 
     <span class="comment">// Handle the update, checkpointing if 
necessary.</span></div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> result = 
handle(update, CheckpointType::UPDATE);</div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160; 
     <span class="keywordflow">if</span> (result.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(result.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160; 
     state.terminated = stream-&gt;terminated;</div>
+<div class="line"><a name="l00760"></a><span class="lineno">  
760</span>&#160;</div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160; 
     <span class="keywordflow">if</span> (state.updates.empty()) {</div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160; 
       <span class="comment">// A stream is created only once there&#39;s 
something to write to it, so</span></div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160; 
       <span class="comment">// this can only happen if the checkpointing of 
the first update was</span></div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160; 
       <span class="comment">// interrupted.</span></div>
+<div class="line"><a name="l00765"></a><span class="lineno">  
765</span>&#160;</div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160; 
       <span class="comment">// On Windows you can only delete a file if it is 
not open. The</span></div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160; 
       <span class="comment">// stream&#39;s destructor will close the file, so 
we need to destroy it</span></div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160; 
       <span class="comment">// here.</span></div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160; 
       stream.reset();</div>
+<div class="line"><a name="l00770"></a><span class="lineno">  
770</span>&#160;</div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160; 
       <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a 
class="code" 
href="namespacerouting_1_1link.html#aec1d046cc8ec45a0265d0522d673ade8">removed</a>
 = <a class="code" 
href="namespaceos.html#ac1c8ce3595084d78291f98c2be9f62ba">os::rm</a>(path);</div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160; 
       <span class="keywordflow">if</span> (removed.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160; 
         <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(</div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160; 
             <span class="stringliteral">&quot;Failed to remove file 
&#39;&quot;</span> + path + <span class="stringliteral">&quot;&#39;: 
&quot;</span> + removed.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160; 
       }</div>
+<div class="line"><a name="l00776"></a><span class="lineno">  
776</span>&#160;</div>
+<div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="structNone.html">None</a>();</div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160; 
     }</div>
+<div class="line"><a name="l00779"></a><span class="lineno">  
779</span>&#160;</div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160; 
     <span class="keywordflow">return</span> std::make_pair(stream, 
state);</div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160; 
   }</div>
+<div class="line"><a name="l00782"></a><span class="lineno">  
782</span>&#160;</div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160; 
   <span class="comment">// This function handles the update, checkpointing if 
necessary.</span></div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160; 
   <span class="comment">//</span></div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160; 
   <span class="comment">// Returns `true`:  if the update is successfully 
handled.</span></div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160; 
   <span class="comment">//         `false`: if the update is a duplicate or 
has already been</span></div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160; 
   <span class="comment">//                  acknowledged.</span></div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160; 
   <span class="comment">//         `Error`: any errors (e.g., 
checkpointing).</span></div>
+<div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160; 
   <a class="code" href="classTry.html">Try&lt;bool&gt;</a> <a class="code" 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">update</a>(<span
 class="keyword">const</span> UpdateType&amp; update)</div>
+<div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160; 
   {</div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160; 
     <span class="keywordflow">if</span> (<a class="code" 
href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>.isSome())
 {</div>
+<div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<a class="code" 
href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>.get());</div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160; 
     }</div>
+<div class="line"><a name="l00794"></a><span class="lineno">  
794</span>&#160;</div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160; 
     <span class="comment">// TODO(gkleiman): This won&#39;t work with 
`StatusUpdate`, because the field</span></div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160; 
     <span class="comment">// containing the status update uuid has a different 
name. In order to</span></div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160; 
     <span class="comment">// make the `TaskStatusUpdateManager` use this 
process, we should avoid</span></div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160; 
     <span class="comment">// depending on identical field names.</span></div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160; 
     <span class="keywordflow">if</span> (!update.status().has_status_uuid()) 
{</div>
+<div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<span class="stringliteral">&quot;Status 
update is missing &#39;status_uuid&#39;&quot;</span>);</div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160; 
     }</div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;id::UUID&gt;</a> statusUuid 
=</div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160; 
       <a class="code" 
href="structid_1_1UUID.html#afd66db1d29a4ee4be9c82581437dda74">id::UUID::fromBytes</a>(update.status().status_uuid().value());</div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160; 
     <a class="code" 
href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(statusUuid);</div>
+<div class="line"><a name="l00805"></a><span class="lineno">  
805</span>&#160;</div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160; 
     <span class="comment">// Check that this status update has not already 
been acknowledged.</span></div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160; 
     <span class="keywordflow">if</span> (acknowledged.contains(statusUuid.<a 
class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>())) 
{</div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160; 
       LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Ignoring 
&quot;</span> &lt;&lt; statusUpdateType &lt;&lt; <span 
class="stringliteral">&quot; &quot;</span> &lt;&lt; update</div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160; 
                    &lt;&lt; <span class="stringliteral">&quot; that has 
already been acknowledged&quot;</span>;</div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160; 
       <span class="keywordflow">return</span> <span 
class="keyword">false</span>;</div>
 <div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160; 
     }</div>
 <div class="line"><a name="l00812"></a><span class="lineno">  
812</span>&#160;</div>
-<div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160; 
     <span class="keywordflow">return</span> <span 
class="keyword">true</span>;</div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160; 
   }</div>
-<div class="line"><a name="l00815"></a><span class="lineno">  
815</span>&#160;</div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160; 
   <span class="comment">// This function handles the ACK, checkpointing if 
necessary.</span></div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160; 
   <span class="comment">//</span></div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160; 
   <span class="comment">// Returns `true`: if the acknowledgement is 
successfully handled.</span></div>
-<div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160; 
   <span class="comment">//         `false`: if the acknowledgement is a 
duplicate.</span></div>
-<div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160; 
   <span class="comment">//         `Error`: Any errors (e.g., 
checkpointing).</span></div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160; 
   <a class="code" href="classTry.html">Try&lt;bool&gt;</a> <a class="code" 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a9aa45e70ff97941eefdc582b410c1221">acknowledgement</a>(<span
 class="keyword">const</span> <a class="code" 
href="structid_1_1UUID.html">id::UUID</a>&amp; statusUuid)</div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160; 
   {</div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160; 
     <span class="keywordflow">if</span> (<a class="code" 
href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>.isSome())
 {</div>
-<div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<a class="code" 
href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>.get());</div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160; 
     }</div>
-<div class="line"><a name="l00826"></a><span class="lineno">  
826</span>&#160;</div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160; 
     <span class="comment">// Get the corresponding update for this 
ACK.</span></div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160; 
     <span class="keyword">const</span> <a class="code" 
href="classResult.html">Result&lt;UpdateType&gt;</a>&amp; update_ = 
next();</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160; 
     <span class="keywordflow">if</span> (update_.<a class="code" 
href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(update_.<a class="code" 
href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160; 
     }</div>
-<div class="line"><a name="l00832"></a><span class="lineno">  
832</span>&#160;</div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160; 
     <span class="comment">// This might happen if we retried a status update 
and got back</span></div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160; 
     <span class="comment">// acknowledgments for both the original and the 
retried update.</span></div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160; 
     <span class="keywordflow">if</span> (update_.<a class="code" 
href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(</div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160; 
           <span class="stringliteral">&quot;Unexpected acknowledgment (UUID: 
&quot;</span> + statusUuid.<a class="code" 
href="structid_1_1UUID.html#af024badbc379374ac635031eed57dc5f">toString</a>() 
+</div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160; 
           <span class="stringliteral">&quot;) for &quot;</span> + 
statusUpdateType + <span class="stringliteral">&quot; stream &quot;</span> + <a 
class="code" 
href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(streamId));</div>
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160; 
     }</div>
-<div class="line"><a name="l00840"></a><span class="lineno">  
840</span>&#160;</div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160; 
     <span class="keyword">const</span> UpdateType&amp; update = update_.<a 
class="code" 
href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>();</div>
-<div class="line"><a name="l00842"></a><span class="lineno">  
842</span>&#160;</div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160; 
     <span class="keywordflow">if</span> (acknowledged.contains(statusUuid)) 
{</div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160; 
       LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Duplicate 
acknowledgment for &quot;</span> &lt;&lt; statusUpdateType</div>
-<div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160; 
                    &lt;&lt; <span class="stringliteral">&quot; &quot;</span> 
&lt;&lt; <a class="code" 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">update</a>;</div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160; 
       <span class="keywordflow">return</span> <span 
class="keyword">false</span>;</div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160; 
     }</div>
-<div class="line"><a name="l00848"></a><span class="lineno">  
848</span>&#160;</div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160; 
     <span class="comment">// TODO(gkleiman): This won&#39;t work with 
`StatusUpdate`, because the field</span></div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160; 
     <span class="comment">// containing the status update uuid has a different 
name. In order to</span></div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160; 
     <span class="comment">// make the `TaskStatusUpdateManager` use this 
process, we should avoid</span></div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160; 
     <span class="comment">// depending on identical field names.</span></div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;id::UUID&gt;</a> 
updateStatusUuid =</div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160; 
       <a class="code" 
href="structid_1_1UUID.html#afd66db1d29a4ee4be9c82581437dda74">id::UUID::fromBytes</a>(update.status().status_uuid().value());</div>
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160; 
     <a class="code" 
href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(updateStatusUuid);</div>
-<div class="line"><a name="l00856"></a><span class="lineno">  
856</span>&#160;</div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160; 
     <span class="comment">// This might happen if we retried a status update 
and got back</span></div>
-<div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160; 
     <span class="comment">// acknowledgments for both the original and the 
retried update.</span></div>
-<div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160; 
     <span class="keywordflow">if</span> (statusUuid != updateStatusUuid.<a 
class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>()) 
{</div>
-<div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160; 
       LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Unexpected 
&quot;</span> &lt;&lt; statusUpdateType</div>
-<div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160; 
                    &lt;&lt; <span class="stringliteral">&quot; acknowledgment 
(received &quot;</span> &lt;&lt; statusUuid</div>
-<div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160; 
                    &lt;&lt; <span class="stringliteral">&quot;, expecting 
&quot;</span> &lt;&lt; updateStatusUuid.<a class="code" 
href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>() &lt;&lt; <span 
class="stringliteral">&quot;) for &quot;</span></div>
-<div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160; 
                    &lt;&lt; <a class="code" 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">update</a>;</div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160; 
       <span class="keywordflow">return</span> <span 
class="keyword">false</span>;</div>
-<div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160; 
     }</div>
-<div class="line"><a name="l00866"></a><span class="lineno">  
866</span>&#160;</div>
-<div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160; 
     <span class="comment">// Handle the ACK, checkpointing if 
necessary.</span></div>
-<div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> result = 
handle(update, CheckpointType::ACK);</div>
-<div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160; 
     <span class="keywordflow">if</span> (result.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(result.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
-<div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160; 
     }</div>
-<div class="line"><a name="l00872"></a><span class="lineno">  
872</span>&#160;</div>
-<div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160; 
     <span class="keywordflow">return</span> <span 
class="keyword">true</span>;</div>
-<div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160; 
   }</div>
-<div class="line"><a name="l00875"></a><span class="lineno">  
875</span>&#160;</div>
-<div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160; 
   <span class="comment">// Returns the next update (or none, if empty) in the 
queue.</span></div>
-<div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160; 
   <a class="code" href="classResult.html">Result&lt;UpdateType&gt;</a> 
next()</div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160; 
   {</div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160; 
     <span class="keywordflow">if</span> (<a class="code" 
href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>.isSome())
 {</div>
-<div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<a class="code" 
href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>.get());</div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160; 
     }</div>
-<div class="line"><a name="l00882"></a><span class="lineno">  
882</span>&#160;</div>
-<div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160; 
     <span class="keywordflow">if</span> (!<a class="code" 
href="namespaceos_1_1signals.html#a712c95e437c6ae6caa6fbc6dcce30f26">pending</a>.empty())
 {</div>
-<div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="namespaceos_1_1signals.html#a712c95e437c6ae6caa6fbc6dcce30f26">pending</a>.front();</div>
-<div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160; 
     }</div>
-<div class="line"><a name="l00886"></a><span class="lineno">  
886</span>&#160;</div>
-<div class="line"><a name="l00887"></a><span class="lineno">  887</span>&#160; 
     <span class="keywordflow">return</span> <a class="code" 
href="structNone.html">None</a>();</div>
-<div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160; 
   }</div>
-<div class="line"><a name="l00889"></a><span class="lineno">  
889</span>&#160;</div>
-<div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160; 
   <span class="comment">// Returns `true` if the stream is checkpointed, 
`false` otherwise.</span></div>
-<div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160; 
   <span class="keywordtype">bool</span> checkpointed() { <span 
class="keywordflow">return</span> path.isSome(); }</div>
-<div class="line"><a name="l00892"></a><span class="lineno">  
892</span>&#160;</div>
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160; 
   <span class="keyword">const</span> IDType streamId;</div>
-<div class="line"><a name="l00894"></a><span class="lineno">  
894</span>&#160;</div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160; 
   <span class="keywordtype">bool</span> terminated;</div>
-<div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160; 
   <a class="code" href="classOption.html">Option&lt;FrameworkID&gt;</a> 
frameworkId;</div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160; 
   <a class="code" href="classOption.html">Option&lt;process::Timeout&gt;</a> 
timeout; <span class="comment">// Timeout for resending status 
update.</span></div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160; 
   std::queue&lt;UpdateType&gt; <a class="code" 
href="namespaceos_1_1signals.html#a712c95e437c6ae6caa6fbc6dcce30f26">pending</a>;</div>
+<div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160; 
     <span class="comment">// Check that this update has not already been 
received.</span></div>
+<div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160; 
     <span class="keywordflow">if</span> (received.contains(statusUuid.<a 
class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>())) 
{</div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160; 
       LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Ignoring 
duplicate &quot;</span> &lt;&lt; statusUpdateType &lt;&lt; <span 
class="stringliteral">&quot; &quot;</span></div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160; 
                    &lt;&lt; <a class="code" 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">update</a>;</div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160; 
       <span class="keywordflow">return</span> <span 
class="keyword">false</span>;</div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160; 
     }</div>
+<div class="line"><a name="l00819"></a><span class="lineno">  
819</span>&#160;</div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160; 
     <span class="comment">// Handle the update, checkpointing if 
necessary.</span></div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> result = 
handle(update, CheckpointType::UPDATE);</div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160; 
     <span class="keywordflow">if</span> (result.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(result.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160; 
     }</div>
+<div class="line"><a name="l00825"></a><span class="lineno">  
825</span>&#160;</div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160; 
     <span class="keywordflow">return</span> <span 
class="keyword">true</span>;</div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160; 
   }</div>
+<div class="line"><a name="l00828"></a><span class="lineno">  
828</span>&#160;</div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160; 
   <span class="comment">// This function handles the ACK, checkpointing if 
necessary.</span></div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160; 
   <span class="comment">//</span></div>
+<div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160; 
   <span class="comment">// Returns `true`: if the acknowledgement is 
successfully handled.</span></div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160; 
   <span class="comment">//         `false`: if the acknowledgement is a 
duplicate.</span></div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160; 
   <span class="comment">//         `Error`: Any errors (e.g., 
checkpointing).</span></div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160; 
   <a class="code" href="classTry.html">Try&lt;bool&gt;</a> <a class="code" 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a9aa45e70ff97941eefdc582b410c1221">acknowledgement</a>(<span
 class="keyword">const</span> <a class="code" 
href="structid_1_1UUID.html">id::UUID</a>&amp; statusUuid)</div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160; 
   {</div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160; 
     <span class="keywordflow">if</span> (<a class="code" 
href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>.isSome())
 {</div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<a class="code" 
href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>.get());</div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160; 
     }</div>
+<div class="line"><a name="l00839"></a><span class="lineno">  
839</span>&#160;</div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160; 
     <span class="comment">// Get the corresponding update for this 
ACK.</span></div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160; 
     <span class="keyword">const</span> <a class="code" 
href="classResult.html">Result&lt;UpdateType&gt;</a>&amp; update_ = 
next();</div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160; 
     <span class="keywordflow">if</span> (update_.<a class="code" 
href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(update_.<a class="code" 
href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160; 
     }</div>
+<div class="line"><a name="l00845"></a><span class="lineno">  
845</span>&#160;</div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160; 
     <span class="comment">// This might happen if we retried a status update 
and got back</span></div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160; 
     <span class="comment">// acknowledgments for both the original and the 
retried update.</span></div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160; 
     <span class="keywordflow">if</span> (update_.<a class="code" 
href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(</div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160; 
           <span class="stringliteral">&quot;Unexpected acknowledgment (UUID: 
&quot;</span> + statusUuid.<a class="code" 
href="structid_1_1UUID.html#af024badbc379374ac635031eed57dc5f">toString</a>() 
+</div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160; 
           <span class="stringliteral">&quot;) for &quot;</span> + 
statusUpdateType + <span class="stringliteral">&quot; stream &quot;</span> + <a 
class="code" 
href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(streamId));</div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160; 
     }</div>
+<div class="line"><a name="l00853"></a><span class="lineno">  
853</span>&#160;</div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160; 
     <span class="keyword">const</span> UpdateType&amp; update = update_.<a 
class="code" 
href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>();</div>
+<div class="line"><a name="l00855"></a><span class="lineno">  
855</span>&#160;</div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160; 
     <span class="keywordflow">if</span> (acknowledged.contains(statusUuid)) 
{</div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160; 
       LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Duplicate 
acknowledgment for &quot;</span> &lt;&lt; statusUpdateType</div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160; 
                    &lt;&lt; <span class="stringliteral">&quot; &quot;</span> 
&lt;&lt; <a class="code" 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">update</a>;</div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160; 
       <span class="keywordflow">return</span> <span 
class="keyword">false</span>;</div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160; 
     }</div>
+<div class="line"><a name="l00861"></a><span class="lineno">  
861</span>&#160;</div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160; 
     <span class="comment">// TODO(gkleiman): This won&#39;t work with 
`StatusUpdate`, because the field</span></div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160; 
     <span class="comment">// containing the status update uuid has a different 
name. In order to</span></div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160; 
     <span class="comment">// make the `TaskStatusUpdateManager` use this 
process, we should avoid</span></div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160; 
     <span class="comment">// depending on identical field names.</span></div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;id::UUID&gt;</a> 
updateStatusUuid =</div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160; 
       <a class="code" 
href="structid_1_1UUID.html#afd66db1d29a4ee4be9c82581437dda74">id::UUID::fromBytes</a>(update.status().status_uuid().value());</div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160; 
     <a class="code" 
href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(updateStatusUuid);</div>
+<div class="line"><a name="l00869"></a><span class="lineno">  
869</span>&#160;</div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160; 
     <span class="comment">// This might happen if we retried a status update 
and got back</span></div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160; 
     <span class="comment">// acknowledgments for both the original and the 
retried update.</span></div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160; 
     <span class="keywordflow">if</span> (statusUuid != updateStatusUuid.<a 
class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>()) 
{</div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160; 
       LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Unexpected 
&quot;</span> &lt;&lt; statusUpdateType</div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160; 
                    &lt;&lt; <span class="stringliteral">&quot; acknowledgment 
(received &quot;</span> &lt;&lt; statusUuid</div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160; 
                    &lt;&lt; <span class="stringliteral">&quot;, expecting 
&quot;</span> &lt;&lt; updateStatusUuid.<a class="code" 
href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>() &lt;&lt; <span 
class="stringliteral">&quot;) for &quot;</span></div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160; 
                    &lt;&lt; <a class="code" 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">update</a>;</div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160; 
       <span class="keywordflow">return</span> <span 
class="keyword">false</span>;</div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160; 
     }</div>
+<div class="line"><a name="l00879"></a><span class="lineno">  
879</span>&#160;</div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160; 
     <span class="comment">// Handle the ACK, checkpointing if 
necessary.</span></div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> result = 
handle(update, CheckpointType::ACK);</div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160; 
     <span class="keywordflow">if</span> (result.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a na

<TRUNCATED>

Reply via email to