http://git-wip-us.apache.org/repos/asf/mesos-site/blob/aac7827c/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 a4df9c8..5a0683f 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
@@ -297,9 +297,9 @@
 <div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160; 
 <span class="comment">//         `false` same as above except the status 
update stream is</span></div>
 <div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160; 
 <span class="comment">//                terminated.</span></div>
 <div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160; 
 <span class="comment">//         `Failure` if there are any errors (e.g., 
duplicate, checkpointing).</span></div>
-<div class="line"><a name="l00246"></a><span class="lineno"><a class="line" 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#aaae7192b8a53cb1ad5b745cddeacc42b">
  246</a></span>&#160;  <a class="code" 
href="classprocess_1_1Future.html">process::Future&lt;bool&gt;</a> <a 
class="code" 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#aaae7192b8a53cb1ad5b745cddeacc42b">acknowledgement</a>(</div>
+<div class="line"><a name="l00246"></a><span class="lineno"><a class="line" 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a9aa45e70ff97941eefdc582b410c1221">
  246</a></span>&#160;  <a class="code" 
href="classprocess_1_1Future.html">process::Future&lt;bool&gt;</a> <a 
class="code" 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a9aa45e70ff97941eefdc582b410c1221">acknowledgement</a>(</div>
 <div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160; 
     <span class="keyword">const</span> IDType&amp; streamId,</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160; 
     <span class="keyword">const</span> <a class="code" 
href="structid_1_1UUID.html">UUID</a>&amp; uuid)</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160; 
     <span class="keyword">const</span> <a class="code" 
href="structid_1_1UUID.html">id::UUID</a>&amp; uuid)</div>
 <div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160; 
 {</div>
 <div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160; 
   LOG(INFO) &lt;&lt; <span class="stringliteral">&quot;Received &quot;</span> 
&lt;&lt; statusUpdateType</div>
 <div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160; 
             &lt;&lt; <span class="stringliteral">&quot; acknowledgement (UUID: 
&quot;</span> &lt;&lt; uuid &lt;&lt; <span 
class="stringliteral">&quot;)&quot;</span></div>
@@ -756,7 +756,7 @@
 <div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160; 
           <span class="keywordflow">if</span> (update.<a class="code" 
href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div>
 <div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160; 
             <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(</div>
 <div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160; 
                 <span class="stringliteral">&quot;Unexpected &quot;</span> + 
statusUpdateType + <span class="stringliteral">&quot; 
acknowledgment&quot;</span></div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160; 
                 <span class="stringliteral">&quot; (UUID: &quot;</span> + 
UUID::fromBytes(record-&gt;uuid())-&gt;toString() +</div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</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="l00706"></a><span class="lineno">  706</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="l00707"></a><span class="lineno">  707</span>&#160; 
           }</div>
 <div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160; 
           stream-&gt;_handle(update.<a class="code" 
href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>(), 
record-&gt;type());</div>
@@ -838,236 +838,238 @@
 <div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160; 
     <span class="keywordflow">if</span> (!update.status().has_status_uuid()) 
{</div>
 <div class="line"><a name="l00785"></a><span class="lineno">  785</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="l00786"></a><span class="lineno">  786</span>&#160; 
     }</div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;UUID&gt;</a> statusUuid = 
UUID::fromBytes(update.status().status_uuid());</div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160; 
     <a class="code" 
href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(statusUuid);</div>
-<div class="line"><a name="l00789"></a><span class="lineno">  
789</span>&#160;</div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160; 
     <span class="comment">// Check that this status update has not already 
been acknowledged.</span></div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</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="l00792"></a><span class="lineno">  792</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="l00793"></a><span class="lineno">  793</span>&#160; 
                    &lt;&lt; <span class="stringliteral">&quot; that has 
already been acknowledged&quot;</span>;</div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160; 
       <span class="keywordflow">return</span> <span 
class="keyword">false</span>;</div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160; 
     }</div>
-<div class="line"><a name="l00796"></a><span class="lineno">  
796</span>&#160;</div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160; 
     <span class="comment">// Check that this update has not already been 
received.</span></div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</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="l00799"></a><span class="lineno">  799</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="l00800"></a><span class="lineno">  800</span>&#160; 
                    &lt;&lt; <a class="code" 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">update</a>;</div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160; 
       <span class="keywordflow">return</span> <span 
class="keyword">false</span>;</div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160; 
     }</div>
-<div class="line"><a name="l00803"></a><span class="lineno">  
803</span>&#160;</div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160; 
     <span class="comment">// Handle the update, checkpointing if 
necessary.</span></div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> result = 
handle(update, CheckpointType::UPDATE);</div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160; 
     <span class="keywordflow">if</span> (result.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00807"></a><span class="lineno">  807</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="l00808"></a><span class="lineno">  808</span>&#160; 
     }</div>
-<div class="line"><a name="l00809"></a><span class="lineno">  
809</span>&#160;</div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160; 
     <span class="keywordflow">return</span> <span 
class="keyword">true</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="comment">// This function handles the ACK, checkpointing if 
necessary.</span></div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160; 
   <span class="comment">//</span></div>
-<div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160; 
   <span class="comment">// Returns `true`: if the acknowledgement is 
successfully handled.</span></div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160; 
   <span class="comment">//         `false`: if the acknowledgement is a 
duplicate.</span></div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160; 
   <span class="comment">//         `Error`: Any errors (e.g., 
checkpointing).</span></div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160; 
   <a class="code" href="classTry.html">Try&lt;bool&gt;</a> <a class="code" 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#aaae7192b8a53cb1ad5b745cddeacc42b">acknowledgement</a>(<span
 class="keyword">const</span> <a class="code" 
href="structid_1_1UUID.html">UUID</a>&amp; statusUuid)</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="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="l00821"></a><span class="lineno">  821</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="l00822"></a><span class="lineno">  822</span>&#160; 
     }</div>
-<div class="line"><a name="l00823"></a><span class="lineno">  
823</span>&#160;</div>
-<div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160; 
     <span class="comment">// Get the corresponding update for this 
ACK.</span></div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</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="l00826"></a><span class="lineno">  826</span>&#160; 
     <span class="keywordflow">if</span> (update_.<a class="code" 
href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</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="l00828"></a><span class="lineno">  828</span>&#160; 
     }</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  
829</span>&#160;</div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160; 
     <span class="comment">// This might happen if we retried a status update 
and got back</span></div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160; 
     <span class="comment">// acknowledgments for both the original and the 
retried update.</span></div>
-<div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160; 
     <span class="keywordflow">if</span> (update_.<a class="code" 
href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(</div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</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="l00835"></a><span class="lineno">  835</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="l00836"></a><span class="lineno">  836</span>&#160; 
     }</div>
-<div class="line"><a name="l00837"></a><span class="lineno">  
837</span>&#160;</div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</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="l00839"></a><span class="lineno">  
839</span>&#160;</div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160; 
     <span class="keywordflow">if</span> (acknowledged.contains(statusUuid)) 
{</div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160; 
       LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Duplicate 
acknowledgment for &quot;</span> &lt;&lt; statusUpdateType</div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</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="l00843"></a><span class="lineno">  843</span>&#160; 
       <span class="keywordflow">return</span> <span 
class="keyword">false</span>;</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">// TODO(gkleiman): This won&#39;t work with 
`StatusUpdate`, because the field</span></div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160; 
     <span class="comment">// containing the status update uuid has a different 
name. In order to</span></div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160; 
     <span class="comment">// make the `TaskStatusUpdateManager` use this 
process, we should avoid</span></div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160; 
     <span class="comment">// depending on identical field names.</span></div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;UUID&gt;</a> updateStatusUuid 
=</div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160; 
       UUID::fromBytes(update.status().status_uuid());</div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160; 
     <a class="code" 
href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(updateStatusUuid);</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="comment">// This might happen if we retried a status update 
and got back</span></div>
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160; 
     <span class="comment">// acknowledgments for both the original and the 
retried update.</span></div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160; 
     <span class="keywordflow">if</span> (statusUuid != updateStatusUuid.<a 
class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>()) 
{</div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160; 
       LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Unexpected 
&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; acknowledgment 
(received &quot;</span> &lt;&lt; statusUuid</div>
-<div class="line"><a name="l00859"></a><span class="lineno">  859</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="l00860"></a><span class="lineno">  860</span>&#160; 
                    &lt;&lt; <a class="code" 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">update</a>;</div>
-<div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160; 
       <span class="keywordflow">return</span> <span 
class="keyword">false</span>;</div>
-<div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160; 
     }</div>
-<div class="line"><a name="l00863"></a><span class="lineno">  
863</span>&#160;</div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160; 
     <span class="comment">// Handle the ACK, checkpointing if 
necessary.</span></div>
-<div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> result = 
handle(update, CheckpointType::ACK);</div>
-<div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160; 
     <span class="keywordflow">if</span> (result.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00867"></a><span class="lineno">  867</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="l00868"></a><span class="lineno">  868</span>&#160; 
     }</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="keywordflow">return</span> <span 
class="keyword">true</span>;</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="comment">// Returns the next update (or none, if empty) in the 
queue.</span></div>
-<div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160; 
   <a class="code" href="classResult.html">Result&lt;UpdateType&gt;</a> 
next()</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="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="l00877"></a><span class="lineno">  877</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="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="keywordflow">if</span> (!<a class="code" 
href="namespaceos_1_1signals.html#a712c95e437c6ae6caa6fbc6dcce30f26">pending</a>.empty())
 {</div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</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="l00882"></a><span class="lineno">  882</span>&#160; 
     }</div>
-<div class="line"><a name="l00883"></a><span class="lineno">  
883</span>&#160;</div>
-<div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160; 
     <span class="keywordflow">return</span> <a class="code" 
href="structNone.html">None</a>();</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="comment">// Returns `true` if the stream is checkpointed, 
`false` otherwise.</span></div>
-<div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160; 
   <span class="keywordtype">bool</span> checkpointed() { <span 
class="keywordflow">return</span> path.isSome(); }</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="keyword">const</span> IDType streamId;</div>
-<div class="line"><a name="l00891"></a><span class="lineno">  
891</span>&#160;</div>
-<div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160; 
   <span class="keywordtype">bool</span> terminated;</div>
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160; 
   <a class="code" href="classOption.html">Option&lt;FrameworkID&gt;</a> 
frameworkId;</div>
-<div class="line"><a name="l00894"></a><span class="lineno">  894</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="l00895"></a><span class="lineno">  895</span>&#160; 
   std::queue&lt;UpdateType&gt; <a class="code" 
href="namespaceos_1_1signals.html#a712c95e437c6ae6caa6fbc6dcce30f26">pending</a>;</div>
-<div class="line"><a name="l00896"></a><span class="lineno">  
896</span>&#160;</div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160; 
 <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160; 
   StatusUpdateStream(</div>
-<div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160; 
       <span class="keyword">const</span> std::string&amp; 
_statusUpdateType,</div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160; 
       <span class="keyword">const</span> IDType&amp; _streamId,</div>
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160; 
       <span class="keyword">const</span> <a class="code" 
href="classOption.html">Option&lt;std::string&gt;</a>&amp; _path,</div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160; 
       <a class="code" href="classOption.html">Option&lt;int_fd&gt;</a> 
_fd)</div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160; 
     : streamId(_streamId),</div>
-<div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160; 
       terminated(false),</div>
-<div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160; 
       statusUpdateType(_statusUpdateType),</div>
-<div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160; 
       path(_path),</div>
-<div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160; 
       fd(_fd) {}</div>
-<div class="line"><a name="l00908"></a><span class="lineno">  
908</span>&#160;</div>
-<div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160; 
   <span class="comment">// Handles the status update and writes it to disk, if 
necessary.</span></div>
-<div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160; 
   <span class="comment">//</span></div>
-<div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160; 
   <span class="comment">// TODO(vinod): The write has to be asynchronous to 
avoid status updates</span></div>
-<div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160; 
   <span class="comment">// that are being checkpointed, blocking the 
processing of other updates.</span></div>
-<div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160; 
   <span class="comment">// One solution is to wrap the protobuf::write inside 
async, but it&#39;s</span></div>
-<div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160; 
   <span class="comment">// probably too much of an overhead to spin up a new 
libprocess per status</span></div>
-<div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160; 
   <span class="comment">// update?</span></div>
-<div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160; 
   <span class="comment">// A better solution might be to be have async write 
capability for file IO.</span></div>
-<div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160; 
   <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> handle(</div>
-<div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160; 
       <span class="keyword">const</span> UpdateType&amp; update,</div>
-<div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160; 
       <span class="keyword">const</span> <span class="keyword">typename</span> 
<a class="code" 
href="namespacemesos_1_1internal_1_1capabilities.html#aaa5ec6d56ccbeba718b9e8fc6ec2f7c9">CheckpointType::Type</a>&amp;
 <a class="code" 
href="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">type</a>)</div>
-<div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160; 
   {</div>
-<div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160; 
     <a class="code" 
href="stout_2include_2stout_2check_8hpp.html#ab8738e43a60086f3b434c0278933e85e">CHECK_NONE</a>(<a
 class="code" 
href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>);</div>
-<div class="line"><a name="l00922"></a><span class="lineno">  
922</span>&#160;</div>
-<div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160; 
     <span class="comment">// Checkpoint the update if necessary.</span></div>
-<div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160; 
     <span class="keywordflow">if</span> (checkpointed()) {</div>
-<div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160; 
       LOG(INFO) &lt;&lt; <span class="stringliteral">&quot;Checkpointing 
&quot;</span> &lt;&lt; type &lt;&lt; <span class="stringliteral">&quot; for 
&quot;</span> &lt;&lt; statusUpdateType</div>
-<div class="line"><a name="l00926"></a><span class="lineno">  926</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="l00927"></a><span class="lineno">  
927</span>&#160;</div>
-<div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160; 
       <a class="code" 
href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(fd);</div>
-<div class="line"><a name="l00929"></a><span class="lineno">  
929</span>&#160;</div>
-<div class="line"><a name="l00930"></a><span class="lineno">  930</span>&#160; 
       CheckpointType record;</div>
-<div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160; 
       record.set_type(type);</div>
-<div class="line"><a name="l00932"></a><span class="lineno">  
932</span>&#160;</div>
-<div class="line"><a name="l00933"></a><span class="lineno">  933</span>&#160; 
       <span class="keywordflow">switch</span> (type) {</div>
-<div class="line"><a name="l00934"></a><span class="lineno">  934</span>&#160; 
         <span class="keywordflow">case</span> CheckpointType::UPDATE:</div>
-<div class="line"><a name="l00935"></a><span class="lineno">  935</span>&#160; 
           record.mutable_update()-&gt;CopyFrom(update);</div>
-<div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160; 
           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160; 
         <span class="keywordflow">case</span> CheckpointType::ACK:</div>
-<div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160; 
           <span class="comment">// TODO(gkleiman): This won&#39;t work with 
`StatusUpdate`, because the</span></div>
-<div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160; 
           <span class="comment">// field containing the status update uuid has 
a different name.</span></div>
-<div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160; 
           <span class="comment">// In order to make the 
`TaskStatusUpdateManager` use this process,</span></div>
-<div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160; 
           <span class="comment">// we should avoid depending on identical 
field names.</span></div>
-<div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160; 
           record.set_uuid(update.status().status_uuid());</div>
-<div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160; 
           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160; 
       }</div>
-<div class="line"><a name="l00945"></a><span class="lineno">  
945</span>&#160;</div>
-<div class="line"><a name="l00946"></a><span class="lineno">  946</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#a66ff2d5af4db53227f787281c0765d8d">write</a>
 = <a class="code" 
href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a66ff2d5af4db53227f787281c0765d8d">::protobuf::write</a>(fd.<a
 class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>(), 
record);</div>
-<div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160; 
       <span class="keywordflow">if</span> (write.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160; 
         <a class="code" 
href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>
 =</div>
-<div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160; 
           <span class="stringliteral">&quot;Failed to write to file 
&#39;&quot;</span> + path.get() + <span class="stringliteral">&quot;&#39;: 
&quot;</span> + write.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>();</div>
-<div class="line"><a name="l00950"></a><span class="lineno">  950</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="l00951"></a><span class="lineno">  951</span>&#160; 
       }</div>
-<div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160; 
     }</div>
-<div class="line"><a name="l00953"></a><span class="lineno">  
953</span>&#160;</div>
-<div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160; 
     <span class="comment">// Now actually handle the update.</span></div>
-<div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160; 
     _handle(update, type);</div>
-<div class="line"><a name="l00956"></a><span class="lineno">  
956</span>&#160;</div>
-<div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160; 
     <span class="keywordflow">return</span> <a class="code" 
href="structNothing.html">Nothing</a>();</div>
-<div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160; 
   }</div>
-<div class="line"><a name="l00959"></a><span class="lineno">  
959</span>&#160;</div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;id::UUID&gt;</a> statusUuid 
=</div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</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="l00789"></a><span class="lineno">  789</span>&#160; 
     <a class="code" 
href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(statusUuid);</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="comment">// Check that this status update has not already 
been acknowledged.</span></div>
+<div class="line"><a name="l00792"></a><span class="lineno">  792</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="l00793"></a><span class="lineno">  793</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="l00794"></a><span class="lineno">  794</span>&#160; 
                    &lt;&lt; <span class="stringliteral">&quot; that has 
already been acknowledged&quot;</span>;</div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160; 
       <span class="keywordflow">return</span> <span 
class="keyword">false</span>;</div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160; 
     }</div>
+<div class="line"><a name="l00797"></a><span class="lineno">  
797</span>&#160;</div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160; 
     <span class="comment">// Check that this update has not already been 
received.</span></div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</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="l00800"></a><span class="lineno">  800</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="l00801"></a><span class="lineno">  801</span>&#160; 
                    &lt;&lt; <a class="code" 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">update</a>;</div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160; 
       <span class="keywordflow">return</span> <span 
class="keyword">false</span>;</div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160; 
     }</div>
+<div class="line"><a name="l00804"></a><span class="lineno">  
804</span>&#160;</div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160; 
     <span class="comment">// Handle the update, checkpointing if 
necessary.</span></div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> result = 
handle(update, CheckpointType::UPDATE);</div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160; 
     <span class="keywordflow">if</span> (result.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</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="l00809"></a><span class="lineno">  809</span>&#160; 
     }</div>
+<div class="line"><a name="l00810"></a><span class="lineno">  
810</span>&#160;</div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160; 
     <span class="keywordflow">return</span> <span 
class="keyword">true</span>;</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;</div>
+<div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160; 
   <span class="comment">// This function handles the ACK, checkpointing if 
necessary.</span></div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160; 
   <span class="comment">//</span></div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160; 
   <span class="comment">// Returns `true`: if the acknowledgement is 
successfully handled.</span></div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160; 
   <span class="comment">//         `false`: if the acknowledgement is a 
duplicate.</span></div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160; 
   <span class="comment">//         `Error`: Any errors (e.g., 
checkpointing).</span></div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</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="l00820"></a><span class="lineno">  820</span>&#160; 
   {</div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</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="l00822"></a><span class="lineno">  822</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="l00823"></a><span class="lineno">  823</span>&#160; 
     }</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; 
     <span class="comment">// Get the corresponding update for this 
ACK.</span></div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</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="l00827"></a><span class="lineno">  827</span>&#160; 
     <span class="keywordflow">if</span> (update_.<a class="code" 
href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div>
+<div class="line"><a name="l00828"></a><span class="lineno">  828</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="l00829"></a><span class="lineno">  829</span>&#160; 
     }</div>
+<div class="line"><a name="l00830"></a><span class="lineno">  
830</span>&#160;</div>
+<div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160; 
     <span class="comment">// This might happen if we retried a status update 
and got back</span></div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160; 
     <span class="comment">// acknowledgments for both the original and the 
retried update.</span></div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160; 
     <span class="keywordflow">if</span> (update_.<a class="code" 
href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(</div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</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="l00836"></a><span class="lineno">  836</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="l00837"></a><span class="lineno">  837</span>&#160; 
     }</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; 
     <span class="keyword">const</span> UpdateType&amp; update = update_.<a 
class="code" 
href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>();</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="keywordflow">if</span> (acknowledged.contains(statusUuid)) 
{</div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160; 
       LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Duplicate 
acknowledgment for &quot;</span> &lt;&lt; statusUpdateType</div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</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="l00844"></a><span class="lineno">  844</span>&#160; 
       <span class="keywordflow">return</span> <span 
class="keyword">false</span>;</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;</div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160; 
     <span class="comment">// TODO(gkleiman): This won&#39;t work with 
`StatusUpdate`, because the field</span></div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160; 
     <span class="comment">// containing the status update uuid has a different 
name. In order to</span></div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160; 
     <span class="comment">// make the `TaskStatusUpdateManager` use this 
process, we should avoid</span></div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160; 
     <span class="comment">// depending on identical field names.</span></div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;id::UUID&gt;</a> 
updateStatusUuid =</div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</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="l00853"></a><span class="lineno">  853</span>&#160; 
     <a class="code" 
href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(updateStatusUuid);</div>
+<div class="line"><a name="l00854"></a><span class="lineno">  
854</span>&#160;</div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160; 
     <span class="comment">// This might happen if we retried a status update 
and got back</span></div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160; 
     <span class="comment">// acknowledgments for both the original and the 
retried update.</span></div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160; 
     <span class="keywordflow">if</span> (statusUuid != updateStatusUuid.<a 
class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>()) 
{</div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160; 
       LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Unexpected 
&quot;</span> &lt;&lt; statusUpdateType</div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160; 
                    &lt;&lt; <span class="stringliteral">&quot; acknowledgment 
(received &quot;</span> &lt;&lt; statusUuid</div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</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="l00861"></a><span class="lineno">  861</span>&#160; 
                    &lt;&lt; <a class="code" 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">update</a>;</div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160; 
       <span class="keywordflow">return</span> <span 
class="keyword">false</span>;</div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160; 
     }</div>
+<div class="line"><a name="l00864"></a><span class="lineno">  
864</span>&#160;</div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160; 
     <span class="comment">// Handle the ACK, checkpointing if 
necessary.</span></div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> result = 
handle(update, CheckpointType::ACK);</div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160; 
     <span class="keywordflow">if</span> (result.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</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="l00869"></a><span class="lineno">  869</span>&#160; 
     }</div>
+<div class="line"><a name="l00870"></a><span class="lineno">  
870</span>&#160;</div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160; 
     <span class="keywordflow">return</span> <span 
class="keyword">true</span>;</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;</div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160; 
   <span class="comment">// Returns the next update (or none, if empty) in the 
queue.</span></div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160; 
   <a class="code" href="classResult.html">Result&lt;UpdateType&gt;</a> 
next()</div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160; 
   {</div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</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="l00878"></a><span class="lineno">  878</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="l00879"></a><span class="lineno">  879</span>&#160; 
     }</div>
+<div class="line"><a name="l00880"></a><span class="lineno">  
880</span>&#160;</div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</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="l00882"></a><span class="lineno">  882</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="l00883"></a><span class="lineno">  883</span>&#160; 
     }</div>
+<div class="line"><a name="l00884"></a><span class="lineno">  
884</span>&#160;</div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160; 
     <span class="keywordflow">return</span> <a class="code" 
href="structNone.html">None</a>();</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;</div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160; 
   <span class="comment">// Returns `true` if the stream is checkpointed, 
`false` otherwise.</span></div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160; 
   <span class="keywordtype">bool</span> checkpointed() { <span 
class="keywordflow">return</span> path.isSome(); }</div>
+<div class="line"><a name="l00890"></a><span class="lineno">  
890</span>&#160;</div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160; 
   <span class="keyword">const</span> IDType streamId;</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="keywordtype">bool</span> terminated;</div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160; 
   <a class="code" href="classOption.html">Option&lt;FrameworkID&gt;</a> 
frameworkId;</div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</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="l00896"></a><span class="lineno">  896</span>&#160; 
   std::queue&lt;UpdateType&gt; <a class="code" 
href="namespaceos_1_1signals.html#a712c95e437c6ae6caa6fbc6dcce30f26">pending</a>;</div>
+<div class="line"><a name="l00897"></a><span class="lineno">  
897</span>&#160;</div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160; 
 <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160; 
   StatusUpdateStream(</div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160; 
       <span class="keyword">const</span> std::string&amp; 
_statusUpdateType,</div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160; 
       <span class="keyword">const</span> IDType&amp; _streamId,</div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160; 
       <span class="keyword">const</span> <a class="code" 
href="classOption.html">Option&lt;std::string&gt;</a>&amp; _path,</div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160; 
       <a class="code" href="classOption.html">Option&lt;int_fd&gt;</a> 
_fd)</div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160; 
     : streamId(_streamId),</div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160; 
       terminated(false),</div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160; 
       statusUpdateType(_statusUpdateType),</div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160; 
       path(_path),</div>
+<div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160; 
       fd(_fd) {}</div>
+<div class="line"><a name="l00909"></a><span class="lineno">  
909</span>&#160;</div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160; 
   <span class="comment">// Handles the status update and writes it to disk, if 
necessary.</span></div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160; 
   <span class="comment">//</span></div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160; 
   <span class="comment">// TODO(vinod): The write has to be asynchronous to 
avoid status updates</span></div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160; 
   <span class="comment">// that are being checkpointed, blocking the 
processing of other updates.</span></div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160; 
   <span class="comment">// One solution is to wrap the protobuf::write inside 
async, but it&#39;s</span></div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160; 
   <span class="comment">// probably too much of an overhead to spin up a new 
libprocess per status</span></div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160; 
   <span class="comment">// update?</span></div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160; 
   <span class="comment">// A better solution might be to be have async write 
capability for file IO.</span></div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160; 
   <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> handle(</div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160; 
       <span class="keyword">const</span> UpdateType&amp; update,</div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160; 
       <span class="keyword">const</span> <span class="keyword">typename</span> 
<a class="code" 
href="namespacemesos_1_1internal_1_1capabilities.html#aaa5ec6d56ccbeba718b9e8fc6ec2f7c9">CheckpointType::Type</a>&amp;
 <a class="code" 
href="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">type</a>)</div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160; 
   {</div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160; 
     <a class="code" 
href="stout_2include_2stout_2check_8hpp.html#ab8738e43a60086f3b434c0278933e85e">CHECK_NONE</a>(<a
 class="code" 
href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>);</div>
+<div class="line"><a name="l00923"></a><span class="lineno">  
923</span>&#160;</div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160; 
     <span class="comment">// Checkpoint the update if necessary.</span></div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160; 
     <span class="keywordflow">if</span> (checkpointed()) {</div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160; 
       LOG(INFO) &lt;&lt; <span class="stringliteral">&quot;Checkpointing 
&quot;</span> &lt;&lt; type &lt;&lt; <span class="stringliteral">&quot; for 
&quot;</span> &lt;&lt; statusUpdateType</div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</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="l00928"></a><span class="lineno">  
928</span>&#160;</div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160; 
       <a class="code" 
href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(fd);</div>
+<div class="line"><a name="l00930"></a><span class="lineno">  
930</span>&#160;</div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160; 
       CheckpointType record;</div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>&#160; 
       record.set_type(type);</div>
+<div class="line"><a name="l00933"></a><span class="lineno">  
933</span>&#160;</div>
+<div class="line"><a name="l00934"></a><span class="lineno">  934</span>&#160; 
       <span class="keywordflow">switch</span> (type) {</div>
+<div class="line"><a name="l00935"></a><span class="lineno">  935</span>&#160; 
         <span class="keywordflow">case</span> CheckpointType::UPDATE:</div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160; 
           record.mutable_update()-&gt;CopyFrom(update);</div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160; 
           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160; 
         <span class="keywordflow">case</span> CheckpointType::ACK:</div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160; 
           <span class="comment">// TODO(gkleiman): This won&#39;t work with 
`StatusUpdate`, because the</span></div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160; 
           <span class="comment">// field containing the status update uuid has 
a different name.</span></div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160; 
           <span class="comment">// In order to make the 
`TaskStatusUpdateManager` use this process,</span></div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160; 
           <span class="comment">// we should avoid depending on identical 
field names.</span></div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160; 
           
record.mutable_uuid()-&gt;CopyFrom(update.status().status_uuid());</div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160; 
           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160; 
       }</div>
+<div class="line"><a name="l00946"></a><span class="lineno">  
946</span>&#160;</div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</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#a66ff2d5af4db53227f787281c0765d8d">write</a>
 = <a class="code" 
href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a66ff2d5af4db53227f787281c0765d8d">::protobuf::write</a>(fd.<a
 class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>(), 
record);</div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160; 
       <span class="keywordflow">if</span> (write.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160; 
         <a class="code" 
href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>
 =</div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160; 
           <span class="stringliteral">&quot;Failed to write to file 
&#39;&quot;</span> + path.get() + <span class="stringliteral">&quot;&#39;: 
&quot;</span> + write.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>();</div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</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="l00952"></a><span class="lineno">  952</span>&#160; 
       }</div>
+<div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160; 
     }</div>
+<div class="line"><a name="l00954"></a><span class="lineno">  
954</span>&#160;</div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160; 
     <span class="comment">// Now actually handle the update.</span></div>
+<div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160; 
     _handle(update, type);</div>
+<div class="line"><a name="l00957"></a><span class="lineno">  
957</span>&#160;</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160; 
     <span class="keywordflow">return</span> <a class="code" 
href="structNothing.html">Nothing</a>();</div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160; 
   }</div>
 <div class="line"><a name="l00960"></a><span class="lineno">  
960</span>&#160;</div>
-<div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160; 
   <span class="comment">// Handles the status update without 
checkpointing.</span></div>
-<div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160; 
   <span class="keywordtype">void</span> _handle(</div>
-<div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160; 
       <span class="keyword">const</span> UpdateType&amp; update,</div>
-<div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160; 
       <span class="keyword">const</span> <span class="keyword">typename</span> 
<a class="code" 
href="namespacemesos_1_1internal_1_1capabilities.html#aaa5ec6d56ccbeba718b9e8fc6ec2f7c9">CheckpointType::Type</a>&amp;
 type)</div>
-<div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160; 
   {</div>
-<div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160; 
     <a class="code" 
href="stout_2include_2stout_2check_8hpp.html#ab8738e43a60086f3b434c0278933e85e">CHECK_NONE</a>(<a
 class="code" 
href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>);</div>
-<div class="line"><a name="l00967"></a><span class="lineno">  
967</span>&#160;</div>
-<div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160; 
     <span class="comment">// TODO(gkleiman): This won&#39;t work with 
`StatusUpdate`, because the field</span></div>
-<div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160; 
     <span class="comment">// containing the status update uuid has a different 
name.  In order to</span></div>
-<div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160; 
     <span class="comment">// make the `TaskStatusUpdateManager` use this 
process, we should avoid</span></div>
-<div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160; 
     <span class="comment">// depending on identical field names.</span></div>
-<div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;UUID&gt;</a> statusUuid = 
UUID::fromBytes(update.status().status_uuid());</div>
-<div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160; 
     <a class="code" 
href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(statusUuid);</div>
-<div class="line"><a name="l00974"></a><span class="lineno">  
974</span>&#160;</div>
-<div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160; 
     <span class="keywordflow">switch</span> (type) {</div>
-<div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160; 
       <span class="keywordflow">case</span> CheckpointType::UPDATE:</div>
-<div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160; 
         <span class="keywordflow">if</span> (update.has_framework_id()) {</div>
-<div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160; 
           frameworkId = update.framework_id();</div>
-<div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160; 
         }</div>
-<div class="line"><a name="l00980"></a><span class="lineno">  
980</span>&#160;</div>
-<div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160; 
         received.insert(statusUuid.<a class="code" 
href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>());</div>
+<div class="line"><a name="l00961"></a><span class="lineno">  
961</span>&#160;</div>
+<div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160; 
   <span class="comment">// Handles the status update without 
checkpointing.</span></div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160; 
   <span class="keywordtype">void</span> _handle(</div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160; 
       <span class="keyword">const</span> UpdateType&amp; update,</div>
+<div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160; 
       <span class="keyword">const</span> <span class="keyword">typename</span> 
<a class="code" 
href="namespacemesos_1_1internal_1_1capabilities.html#aaa5ec6d56ccbeba718b9e8fc6ec2f7c9">CheckpointType::Type</a>&amp;
 type)</div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160; 
   {</div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160; 
     <a class="code" 
href="stout_2include_2stout_2check_8hpp.html#ab8738e43a60086f3b434c0278933e85e">CHECK_NONE</a>(<a
 class="code" 
href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>);</div>
+<div class="line"><a name="l00968"></a><span class="lineno">  
968</span>&#160;</div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160; 
     <span class="comment">// TODO(gkleiman): This won&#39;t work with 
`StatusUpdate`, because the field</span></div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160; 
     <span class="comment">// containing the status update uuid has a different 
name.  In order to</span></div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160; 
     <span class="comment">// make the `TaskStatusUpdateManager` use this 
process, we should avoid</span></div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160; 
     <span class="comment">// depending on identical field names.</span></div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;id::UUID&gt;</a> statusUuid 
=</div>
+<div class="line"><a name="l00974"></a><span class="lineno">  974</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="l00975"></a><span class="lineno">  975</span>&#160; 
     <a class="code" 
href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(statusUuid);</div>
+<div class="line"><a name="l00976"></a><span class="lineno">  
976</span>&#160;</div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160; 
     <span class="keywordflow">switch</span> (type) {</div>
+<div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160; 
       <span class="keywordflow">case</span> CheckpointType::UPDATE:</div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160; 
         <span class="keywordflow">if</span> (update.has_framework_id()) {</div>
+<div class="line"><a name="l00980"></a><span class="lineno">  980</span>&#160; 
           frameworkId = update.framework_id();</div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160; 
         }</div>
 <div class="line"><a name="l00982"></a><span class="lineno">  
982</span>&#160;</div>
-<div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160; 
         <span class="comment">// Add it to the pending updates 
queue.</span></div>
-<div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160; 
         <a class="code" 
href="namespaceos_1_1signals.html#a712c95e437c6ae6caa6fbc6dcce30f26">pending</a>.push(update);</div>
-<div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160; 
         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160; 
       <span class="keywordflow">case</span> CheckpointType::ACK:</div>
-<div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160; 
         acknowledged.insert(statusUuid.<a class="code" 
href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>());</div>
-<div class="line"><a name="l00988"></a><span class="lineno">  
988</span>&#160;</div>
-<div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160; 
         <span class="comment">// Remove the corresponding update from the 
pending queue.</span></div>
-<div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160; 
         <a class="code" 
href="namespaceos_1_1signals.html#a712c95e437c6ae6caa6fbc6dcce30f26">pending</a>.pop();</div>
-<div class="line"><a name="l00991"></a><span class="lineno">  
991</span>&#160;</div>
-<div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160; 
         <span class="keywordflow">if</span> (!terminated) {</div>
-<div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160; 
           terminated = <a class="code" 
href="namespacemesos_1_1internal_1_1protobuf.html#aa31907fb62769822a77c06ffbf10451f">protobuf::isTerminalState</a>(update.status().state());</div>
-<div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160; 
         }</div>
-<div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160; 
         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160; 
     }</div>
-<div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160; 
   }</div>
-<div class="line"><a name="l00998"></a><span class="lineno">  
998</span>&#160;</div>
-<div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160; 
   <span class="comment">// Type of status updates handled by the stream, e.g., 
&quot;offer operation</span></div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; 
   <span class="comment">// status update&quot;.</span></div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; 
   <span class="keyword">const</span> std::string&amp; statusUpdateType;</div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 
1002</span>&#160;</div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; 
   <span class="keyword">const</span> <a class="code" 
href="classOption.html">Option&lt;std::string&gt;</a> path; <span 
class="comment">// File path of the update stream.</span></div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; 
   <span class="keyword">const</span> <a class="code" 
href="classOption.html">Option&lt;int_fd&gt;</a> fd; <span class="comment">// 
File descriptor to the update stream.</span></div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 
1005</span>&#160;</div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; 
   <a class="code" href="classhashset.html">hashset&lt;UUID&gt;</a> 
received;</div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; 
   <a class="code" href="classhashset.html">hashset&lt;UUID&gt;</a> 
acknowledged;</div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 
1008</span>&#160;</div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; 
   <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a 
class="code" 
href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;
 <span class="comment">// Potential non-retryable error.</span></div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; 
 };</div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 
1011</span>&#160;};</div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 
1012</span>&#160;</div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 
1013</span>&#160;} <span class="comment">// namespace internal {</span></div>
-<div class="line"><a name="l01014"></a><span class="lineno"> 
1014</span>&#160;} <span class="comment">// namespace mesos {</span></div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 
1015</span>&#160;</div>
-<div class="line"><a name="l01016"></a><span class="lineno"> 
1016</span>&#160;<span class="preprocessor">#endif // 
__STATUS_UPDATE_MANAGER_PROCESS_HPP__</span></div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160; 
         received.insert(statusUuid.<a class="code" 
href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>());</div>
+<div class="line"><a name="l00984"></a><span class="lineno">  
984</span>&#160;</div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160; 
         <span class="comment">// Add it to the pending updates 
queue.</span></div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160; 
         <a class="code" 
href="namespaceos_1_1signals.html#a712c95e437c6ae6caa6fbc6dcce30f26">pending</a>.push(update);</div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160; 
         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160; 
       <span class="keywordflow">case</span> CheckpointType::ACK:</div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160; 
         acknowledged.insert(statusUuid.<a class="code" 
href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>());</div>
+<div class="line"><a name="l00990"></a><span class="lineno">  
990</span>&#160;</div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160; 
         <span class="comment">// Remove the corresponding update from the 
pending queue.</span></div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160; 
         <a class="code" 
href="namespaceos_1_1signals.html#a712c95e437c6ae6caa6fbc6dcce30f26">pending</a>.pop();</div>
+<div class="line"><a name="l00993"></a><span class="lineno">  
993</span>&#160;</div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160; 
         <span class="keywordflow">if</span> (!terminated) {</div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160; 
           terminated = <a class="code" 
href="namespacemesos_1_1internal_1_1protobuf.html#aa31907fb62769822a77c06ffbf10451f">protobuf::isTerminalState</a>(update.status().state());</div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160; 
         }</div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160; 
         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160; 
     }</div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160; 
   }</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 
1000</span>&#160;</div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; 
   <span class="comment">// Type of status updates handled by the stream, e.g., 
&quot;offer operation</span></div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; 
   <span class="comment">// status update&quot;.</span></div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; 
   <span class="keyword">const</span> std::string&amp; statusUpdateType;</div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 
1004</span>&#160;</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; 
   <span class="keyword">const</span> <a class="code" 
href="classOption.html">Option&lt;std::string&gt;</a> path; <span 
class="comment">// File path of the update stream.</span></div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; 
   <span class="keyword">const</span> <a class="code" 
href="classOption.html">Option&lt;int_fd&gt;</a> fd; <span class="comment">// 
File descriptor to the update stream.</span></div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 
1007</span>&#160;</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; 
   <a class="code" href="classhashset.html">hashset&lt;id::UUID&gt;</a> 
received;</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; 
   <a class="code" href="classhashset.html">hashset&lt;id::UUID&gt;</a> 
acknowledged;</div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 
1010</span>&#160;</div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; 
   <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a 
class="code" 
href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;
 <span class="comment">// Potential non-retryable error.</span></div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; 
 };</div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 
1013</span>&#160;};</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 
1014</span>&#160;</div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 
1015</span>&#160;} <span class="comment">// namespace internal {</span></div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 
1016</span>&#160;} <span class="comment">// namespace mesos {</span></div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 
1017</span>&#160;</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 
1018</span>&#160;<span class="preprocessor">#endif // 
__STATUS_UPDATE_MANAGER_PROCESS_HPP__</span></div>
 <div class="ttc" 
id="namespacemesos_1_1internal_1_1log_1_1protocol_html_afa485608d261b11b9b4c619b4b4d6e28"><div
 class="ttname"><a 
href="namespacemesos_1_1internal_1_1log_1_1protocol.html#afa485608d261b11b9b4c619b4b4d6e28">mesos::internal::log::protocol::recover</a></div><div
 class="ttdeci">Protocol&lt; RecoverRequest, RecoverResponse &gt; 
recover</div></div>
 <div class="ttc" 
id="namespacemesos_1_1internal_1_1slave_html_ad21670291a9464020160f8b9048ef582"><div
 class="ttname"><a 
href="namespacemesos_1_1internal_1_1slave.html#ad21670291a9464020160f8b9048ef582">mesos::internal::slave::STATUS_UPDATE_RETRY_INTERVAL_MAX</a></div><div
 class="ttdeci">constexpr Duration STATUS_UPDATE_RETRY_INTERVAL_MAX</div><div 
class="ttdef"><b>Definition:</b> constants.hpp:56</div></div>
 <div class="ttc" 
id="namespaceprocess_1_1ID_html_aeb11a48c9def1da169d8455a30d0ee39"><div 
class="ttname"><a 
href="namespaceprocess_1_1ID.html#aeb11a48c9def1da169d8455a30d0ee39">process::ID::generate</a></div><div
 class="ttdeci">std::string generate(const std::string 
&amp;prefix=&quot;&quot;)</div><div class="ttdoc">Returns 
&amp;#39;prefix(N)&amp;#39; where N represents the number of instances where 
the same prefix (wrt...</div></div>
@@ -1090,7 +1092,7 @@
 <div class="ttc" id="timeout_8hpp_html"><div class="ttname"><a 
href="timeout_8hpp.html">timeout.hpp</a></div></div>
 <div class="ttc" 
id="classmesos_1_1internal_1_1StatusUpdateManagerProcess_html_a1658b4adb952dc5e20465e31d572633b"><div
 class="ttname"><a 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">mesos::internal::StatusUpdateManagerProcess::update</a></div><div
 class="ttdeci">process::Future&lt; Nothing &gt; update(const UpdateType 
&amp;update, const IDType &amp;streamId, bool checkpoint)</div><div 
class="ttdef"><b>Definition:</b> 
status_update_manager_process.hpp:145</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="classhashset_html"><div class="ttname"><a 
href="classhashset.html">hashset&lt; UUID &gt;</a></div></div>
+<div class="ttc" id="classhashset_html"><div class="ttname"><a 
href="classhashset.html">hashset&lt; id::UUID &gt;</a></div></div>
 <div class="ttc" 
id="classmesos_1_1internal_1_1StatusUpdateManagerProcess_html_a86a61db827ba0cb772ba8199b14403a2"><div
 class="ttname"><a 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a86a61db827ba0cb772ba8199b14403a2">mesos::internal::StatusUpdateManagerProcess::cleanup</a></div><div
 class="ttdeci">void cleanup(const FrameworkID &amp;frameworkId)</div><div 
class="ttdef"><b>Definition:</b> 
status_update_manager_process.hpp:362</div></div>
 <div class="ttc" 
id="stout_2include_2stout_2check_8hpp_html_ab8738e43a60086f3b434c0278933e85e"><div
 class="ttname"><a 
href="stout_2include_2stout_2check_8hpp.html#ab8738e43a60086f3b434c0278933e85e">CHECK_NONE</a></div><div
 class="ttdeci">#define CHECK_NONE(expression)</div><div 
class="ttdef"><b>Definition:</b> check.hpp:48</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:312</div></div>
@@ -1127,7 +1129,7 @@
 <div class="ttc" id="namespaceos_html_af0f3343df38b8241f66750a273d4a5a6"><div 
class="ttname"><a 
href="namespaceos.html#af0f3343df38b8241f66750a273d4a5a6">os::mkdir</a></div><div
 class="ttdeci">Try&lt; Nothing &gt; mkdir(const std::string &amp;directory, 
bool recursive=true)</div><div class="ttdef"><b>Definition:</b> 
mkdir.hpp:31</div></div>
 <div class="ttc" 
id="classprocess_1_1ProcessBase_html_a6baf49d6234eb638d068a98514e4ae3f"><div 
class="ttname"><a 
href="classprocess_1_1ProcessBase.html#a6baf49d6234eb638d068a98514e4ae3f">process::ProcessBase::initialize</a></div><div
 class="ttdeci">virtual void initialize()</div><div class="ttdoc">Invoked when 
a process gets spawned. </div><div class="ttdef"><b>Definition:</b> 
process.hpp:100</div></div>
 <div class="ttc" 
id="classmesos_1_1internal_1_1StatusUpdateManagerProcess_html_ada5dee44c0cc874403efa6c2c3cde9d2"><div
 class="ttname"><a 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#ada5dee44c0cc874403efa6c2c3cde9d2">mesos::internal::StatusUpdateManagerProcess::initialize</a></div><div
 class="ttdeci">void initialize(const lambda::function&lt; void(const 
UpdateType &amp;)&gt; &amp;_forwardCallback, const lambda::function&lt; const 
std::string(const IDType &amp;)&gt; &amp;_getPath)</div><div 
class="ttdef"><b>Definition:</b> 
status_update_manager_process.hpp:133</div></div>
-<div class="ttc" id="structid_1_1UUID_html"><div class="ttname"><a 
href="structid_1_1UUID.html">id::UUID</a></div><div 
class="ttdef"><b>Definition:</b> uuid.hpp:40</div></div>
+<div class="ttc" id="structid_1_1UUID_html"><div class="ttname"><a 
href="structid_1_1UUID.html">id::UUID</a></div><div 
class="ttdef"><b>Definition:</b> uuid.hpp:35</div></div>
 <div class="ttc" id="option_8hpp_html_a78407a45187058b9b4ef2042accb9bc4"><div 
class="ttname"><a 
href="option_8hpp.html#a78407a45187058b9b4ef2042accb9bc4">min</a></div><div 
class="ttdeci">Option&lt; T &gt; min(const Option&lt; T &gt; &amp;left, const 
Option&lt; T &gt; &amp;right)</div><div class="ttdef"><b>Definition:</b> 
option.hpp:170</div></div>
 <div class="ttc" 
id="namespaceprocess_html_ad46335bec9fe626e60003c33e8f13023"><div 
class="ttname"><a 
href="namespaceprocess.html#ad46335bec9fe626e60003c33e8f13023">process::delay</a></div><div
 class="ttdeci">Timer delay(const Duration &amp;duration, const PID&lt; T &gt; 
&amp;pid, void(T::*method)())</div><div class="ttdef"><b>Definition:</b> 
delay.hpp:31</div></div>
 <div class="ttc" id="src_2slave_2constants_8hpp_html"><div class="ttname"><a 
href="src_2slave_2constants_8hpp.html">constants.hpp</a></div></div>
@@ -1136,7 +1138,6 @@
 <div class="ttc" id="3rdparty_2stout_2include_2stout_2protobuf_8hpp_html"><div 
class="ttname"><a 
href="3rdparty_2stout_2include_2stout_2protobuf_8hpp.html">protobuf.hpp</a></div></div>
 <div class="ttc" id="classProtobufProcess_html"><div class="ttname"><a 
href="classProtobufProcess.html">ProtobufProcess</a></div><div 
class="ttdef"><b>Definition:</b> protobuf.hpp:100</div></div>
 <div class="ttc" id="foreach_8hpp_html_a28670619e64a84270d76f07b0f6eb3b6"><div 
class="ttname"><a 
href="foreach_8hpp.html#a28670619e64a84270d76f07b0f6eb3b6">foreachvalue</a></div><div
 class="ttdeci">#define foreachvalue(VALUE, ELEMS)</div><div 
class="ttdef"><b>Definition:</b> foreach.hpp:77</div></div>
-<div class="ttc" 
id="classmesos_1_1internal_1_1StatusUpdateManagerProcess_html_aaae7192b8a53cb1ad5b745cddeacc42b"><div
 class="ttname"><a 
href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#aaae7192b8a53cb1ad5b745cddeacc42b">mesos::internal::StatusUpdateManagerProcess::acknowledgement</a></div><div
 class="ttdeci">process::Future&lt; bool &gt; acknowledgement(const IDType 
&amp;streamId, const UUID &amp;uuid)</div><div class="ttdef"><b>Definition:</b> 
status_update_manager_process.hpp:246</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:112</div></div>
 <div class="ttc" id="option_8

<TRUNCATED>

Reply via email to