You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by gi...@apache.org on 2018/01/12 20:33:33 UTC

[2/5] mesos-site git commit: Updated the website built from mesos SHA: 49f4b2a.

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/448b5a48/content/api/latest/c++/resources_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/resources_8hpp_source.html b/content/api/latest/c++/resources_8hpp_source.html
index dc021b2..7a91281 100644
--- a/content/api/latest/c++/resources_8hpp_source.html
+++ b/content/api/latest/c++/resources_8hpp_source.html
@@ -443,241 +443,246 @@
 <div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;  <span class="comment">// Error if the conversion cannot be applied.</span></div>
 <div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;  <a class="code" href="classTry.html">Try&lt;Resources&gt;</a> <a class="code" href="classmesos_1_1Resources.html#acebab4e58f4f5073389a5e077e72fece">apply</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1ResourceConversion.html">ResourceConversion</a>&amp; conversion) <span class="keyword">const</span>;</div>
 <div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;  <span class="comment">// Obtains the conversion from the given operation and applies the</span></div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;  <span class="comment">// conversion. This method serves a syntax sugar for applying a</span></div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;  <span class="comment">// resource conversion.</span></div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;  <span class="comment">// TODO(jieyu): Consider remove this method once we updated all the</span></div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;  <span class="comment">// call sites.</span></div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;  <a class="code" href="classTry.html">Try&lt;Resources&gt;</a> <a class="code" href="classmesos_1_1Resources.html#acebab4e58f4f5073389a5e077e72fece">apply</a>(<span class="keyword">const</span> <a class="code" href="namespacecgroups_1_1blkio.html#a350b1eb57318afaea7700ab7786b55ef">Offer::Operation</a>&amp; operation) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Iterable&gt;</div>
-<div class="line"><a name="l00503"></a><span class="lineno"><a class="line" href="classmesos_1_1Resources.html#aa0307172aed9f2a8bf5ab9852808074b">  503</a></span>&#160;  <a class="code" href="classTry.html">Try&lt;Resources&gt;</a> <a class="code" href="classmesos_1_1Resources.html#aa0307172aed9f2a8bf5ab9852808074b">apply</a>(<span class="keyword">const</span> Iterable&amp; iterable)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;<span class="keyword">  </span>{</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;    <a class="code" href="classmesos_1_1Resources.html">Resources</a> result = *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;  <span class="comment">// Finds a resource object with the same metadata (i.e. AllocationInfo,</span></div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;  <span class="comment">// ReservationInfo, etc.) as the given one, ignoring the actual value.</span></div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;  <span class="comment">// If multiple matching resources exist, the first match is returned.</span></div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;  <a class="code" href="classOption.html">Option&lt;Resource&gt;</a> <a class="code" href="classmesos_1_1Resources.html#a0fd76eaac0f68b60671099fedf7ba27c">match</a>(<span class="keyword">const</span> Resource&amp; resource) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;  <span class="comment">// Obtains the conversion from the given operation and applies the</span></div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;  <span class="comment">// conversion. This method serves a syntax sugar for applying a</span></div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;  <span class="comment">// resource conversion.</span></div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;  <span class="comment">// TODO(jieyu): Consider remove this method once we updated all the</span></div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;  <span class="comment">// call sites.</span></div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;  <a class="code" href="classTry.html">Try&lt;Resources&gt;</a> <a class="code" href="classmesos_1_1Resources.html#acebab4e58f4f5073389a5e077e72fece">apply</a>(<span class="keyword">const</span> <a class="code" href="namespacecgroups_1_1blkio.html#a350b1eb57318afaea7700ab7786b55ef">Offer::Operation</a>&amp; operation) <span class="keyword">const</span>;</div>
 <div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;    <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; t, iterable) {</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;      <a class="code" href="classTry.html">Try&lt;Resources&gt;</a> converted = result.<a class="code" href="classmesos_1_1Resources.html#acebab4e58f4f5073389a5e077e72fece">apply</a>(t);</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;      <span class="keywordflow">if</span> (converted.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(converted.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;      }</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;      result = converted.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>();</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;    }</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;    <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;  }</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;  <span class="comment">// Helpers to get resource values. We consider all roles here.</span></div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;  <a class="code" href="classOption.html">Option&lt;T&gt;</a> <span class="keyword">get</span>(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;  <span class="comment">// Get resources of the given name.</span></div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <span class="keyword">get</span>(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;  <span class="comment">// Get all the resources that are scalars.</span></div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1Resources.html#a19c38bf426688c0fb1fcc5552b29a729">scalars</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;  <span class="comment">// Get the set of unique resource names.</span></div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;  std::set&lt;std::string&gt; <a class="code" href="classmesos_1_1Resources.html#a376ffdcf83696b9a957b8a24ce596649">names</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;  <span class="comment">// Get the types of resources associated with each resource name.</span></div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;  <span class="comment">// NOTE: Resources of the same name must have the same type, as</span></div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;  <span class="comment">// enforced by Resources::parse().</span></div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;  std::map&lt;std::string, Value_Type&gt; <a class="code" href="classmesos_1_1Resources.html#a6c4d4a889c254fb4241644c6557d511e">types</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Iterable&gt;</div>
+<div class="line"><a name="l00508"></a><span class="lineno"><a class="line" href="classmesos_1_1Resources.html#aa0307172aed9f2a8bf5ab9852808074b">  508</a></span>&#160;  <a class="code" href="classTry.html">Try&lt;Resources&gt;</a> <a class="code" href="classmesos_1_1Resources.html#aa0307172aed9f2a8bf5ab9852808074b">apply</a>(<span class="keyword">const</span> Iterable&amp; iterable)<span class="keyword"> const</span></div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;<span class="keyword">  </span>{</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;    <a class="code" href="classmesos_1_1Resources.html">Resources</a> result = *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;    <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; t, iterable) {</div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;      <a class="code" href="classTry.html">Try&lt;Resources&gt;</a> converted = result.<a class="code" href="classmesos_1_1Resources.html#acebab4e58f4f5073389a5e077e72fece">apply</a>(t);</div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;      <span class="keywordflow">if</span> (converted.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(converted.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;      }</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;</div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;      result = converted.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>();</div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;    }</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;    <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;  }</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;  <span class="comment">// Helpers to get resource values. We consider all roles here.</span></div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;  <a class="code" href="classOption.html">Option&lt;T&gt;</a> <span class="keyword">get</span>(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;</div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;  <span class="comment">// Get resources of the given name.</span></div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <span class="keyword">get</span>(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;  <span class="comment">// Get all the resources that are scalars.</span></div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1Resources.html#a19c38bf426688c0fb1fcc5552b29a729">scalars</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;  <span class="comment">// Get the set of unique resource names.</span></div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;  std::set&lt;std::string&gt; <a class="code" href="classmesos_1_1Resources.html#a376ffdcf83696b9a957b8a24ce596649">names</a>() <span class="keyword">const</span>;</div>
 <div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;  <span class="comment">// Helpers to get known resource types.</span></div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;  <span class="comment">// TODO(vinod): Fix this when we make these types as first class</span></div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;  <span class="comment">// protobufs.</span></div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;  <a class="code" href="classOption.html">Option&lt;double&gt;</a> <a class="code" href="classmesos_1_1Resources.html#a127e7442993f5b86d03625c4ab1e8271">cpus</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;  <a class="code" href="classOption.html">Option&lt;double&gt;</a> <a class="code" href="classmesos_1_1Resources.html#ab7efb90fdd329ee238af86013584480d">gpus</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;  <a class="code" href="classOption.html">Option&lt;Bytes&gt;</a> <a class="code" href="classmesos_1_1Resources.html#afdf2dfb4dd2c53acf5cd96bb6f02140c">mem</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;  <a class="code" href="classOption.html">Option&lt;Bytes&gt;</a> <a class="code" href="classmesos_1_1Resources.html#a25edbf9ca3dc21aec283b25e48308794">disk</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;  <span class="comment">// TODO(vinod): Provide a Ranges abstraction.</span></div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;  <a class="code" href="classOption.html">Option&lt;Value::Ranges&gt;</a> <a class="code" href="classmesos_1_1Resources.html#af9c888191c3f7408ab11bb064e881507">ports</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;  <span class="comment">// TODO(jieyu): Consider returning an EphemeralPorts abstraction</span></div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;  <span class="comment">// which holds the ephemeral ports allocation logic.</span></div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;  <a class="code" href="classOption.html">Option&lt;Value::Ranges&gt;</a> <a class="code" href="classmesos_1_1Resources.html#a88a531c0e331b9a6b26ab5cedd2c87d2">ephemeral_ports</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;  <span class="comment">// NOTE: Non-`const` `iterator`, `begin()` and `end()` are __intentionally__</span></div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;  <span class="comment">// defined with `const` semantics in order to prevent mutable access to the</span></div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;  <span class="comment">// `Resource` objects within `resources`.</span></div>
-<div class="line"><a name="l00555"></a><span class="lineno"><a class="line" href="classmesos_1_1Resources.html#a2f4bcc0de9f40c0c947d355213aaac95">  555</a></span>&#160;  <span class="keyword">typedef</span> std::vector&lt;Resource_&gt;::const_iterator <a class="code" href="classmesos_1_1Resources.html#a2f4bcc0de9f40c0c947d355213aaac95">iterator</a>;</div>
-<div class="line"><a name="l00556"></a><span class="lineno"><a class="line" href="classmesos_1_1Resources.html#aead097c9cbf735bed75199745625d768">  556</a></span>&#160;  <span class="keyword">typedef</span> std::vector&lt;Resource_&gt;::const_iterator <a class="code" href="classmesos_1_1Resources.html#aead097c9cbf735bed75199745625d768">const_iterator</a>;</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;</div>
-<div class="line"><a name="l00558"></a><span class="lineno"><a class="line" href="classmesos_1_1Resources.html#a62a685bb22d0916e15e019602a36659f">  558</a></span>&#160;  <a class="code" href="classmesos_1_1Resources.html#aead097c9cbf735bed75199745625d768">const_iterator</a> <a class="code" href="classmesos_1_1Resources.html#a62a685bb22d0916e15e019602a36659f">begin</a>()</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;  {</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>std::vector&lt;Resource_&gt;&amp;<span class="keyword">&gt;</span>(resources).<a class="code" href="classmesos_1_1Resources.html#a62a685bb22d0916e15e019602a36659f">begin</a>();</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;  }</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;  <span class="comment">// Get the types of resources associated with each resource name.</span></div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;  <span class="comment">// NOTE: Resources of the same name must have the same type, as</span></div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;  <span class="comment">// enforced by Resources::parse().</span></div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;  std::map&lt;std::string, Value_Type&gt; <a class="code" href="classmesos_1_1Resources.html#a6c4d4a889c254fb4241644c6557d511e">types</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;  <span class="comment">// Helpers to get known resource types.</span></div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;  <span class="comment">// TODO(vinod): Fix this when we make these types as first class</span></div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;  <span class="comment">// protobufs.</span></div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;  <a class="code" href="classOption.html">Option&lt;double&gt;</a> <a class="code" href="classmesos_1_1Resources.html#a127e7442993f5b86d03625c4ab1e8271">cpus</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;  <a class="code" href="classOption.html">Option&lt;double&gt;</a> <a class="code" href="classmesos_1_1Resources.html#ab7efb90fdd329ee238af86013584480d">gpus</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;  <a class="code" href="classOption.html">Option&lt;Bytes&gt;</a> <a class="code" href="classmesos_1_1Resources.html#afdf2dfb4dd2c53acf5cd96bb6f02140c">mem</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;  <a class="code" href="classOption.html">Option&lt;Bytes&gt;</a> <a class="code" href="classmesos_1_1Resources.html#a25edbf9ca3dc21aec283b25e48308794">disk</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;</div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;  <span class="comment">// TODO(vinod): Provide a Ranges abstraction.</span></div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;  <a class="code" href="classOption.html">Option&lt;Value::Ranges&gt;</a> <a class="code" href="classmesos_1_1Resources.html#af9c888191c3f7408ab11bb064e881507">ports</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;  <span class="comment">// TODO(jieyu): Consider returning an EphemeralPorts abstraction</span></div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;  <span class="comment">// which holds the ephemeral ports allocation logic.</span></div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;  <a class="code" href="classOption.html">Option&lt;Value::Ranges&gt;</a> <a class="code" href="classmesos_1_1Resources.html#a88a531c0e331b9a6b26ab5cedd2c87d2">ephemeral_ports</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;  <span class="comment">// NOTE: Non-`const` `iterator`, `begin()` and `end()` are __intentionally__</span></div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;  <span class="comment">// defined with `const` semantics in order to prevent mutable access to the</span></div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;  <span class="comment">// `Resource` objects within `resources`.</span></div>
+<div class="line"><a name="l00560"></a><span class="lineno"><a class="line" href="classmesos_1_1Resources.html#a2f4bcc0de9f40c0c947d355213aaac95">  560</a></span>&#160;  <span class="keyword">typedef</span> std::vector&lt;Resource_&gt;::const_iterator <a class="code" href="classmesos_1_1Resources.html#a2f4bcc0de9f40c0c947d355213aaac95">iterator</a>;</div>
+<div class="line"><a name="l00561"></a><span class="lineno"><a class="line" href="classmesos_1_1Resources.html#aead097c9cbf735bed75199745625d768">  561</a></span>&#160;  <span class="keyword">typedef</span> std::vector&lt;Resource_&gt;::const_iterator <a class="code" href="classmesos_1_1Resources.html#aead097c9cbf735bed75199745625d768">const_iterator</a>;</div>
 <div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;</div>
-<div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="classmesos_1_1Resources.html#a07ff5813b931a26510a3343cb0c988e1">  563</a></span>&#160;  <a class="code" href="classmesos_1_1Resources.html#aead097c9cbf735bed75199745625d768">const_iterator</a> <a class="code" href="classmesos_1_1Resources.html#a07ff5813b931a26510a3343cb0c988e1">end</a>()</div>
+<div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="classmesos_1_1Resources.html#a62a685bb22d0916e15e019602a36659f">  563</a></span>&#160;  <a class="code" href="classmesos_1_1Resources.html#aead097c9cbf735bed75199745625d768">const_iterator</a> <a class="code" href="classmesos_1_1Resources.html#a62a685bb22d0916e15e019602a36659f">begin</a>()</div>
 <div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;  {</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>std::vector&lt;Resource_&gt;&amp;<span class="keyword">&gt;</span>(resources).<a class="code" href="classmesos_1_1Resources.html#a07ff5813b931a26510a3343cb0c988e1">end</a>();</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>std::vector&lt;Resource_&gt;&amp;<span class="keyword">&gt;</span>(resources).<a class="code" href="classmesos_1_1Resources.html#a62a685bb22d0916e15e019602a36659f">begin</a>();</div>
 <div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;  }</div>
 <div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;</div>
-<div class="line"><a name="l00568"></a><span class="lineno"><a class="line" href="classmesos_1_1Resources.html#ae66c01db87b2a42cfee3e77c20687d56">  568</a></span>&#160;  <a class="code" href="classmesos_1_1Resources.html#aead097c9cbf735bed75199745625d768">const_iterator</a> <a class="code" href="classmesos_1_1Resources.html#ae66c01db87b2a42cfee3e77c20687d56">begin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> resources.begin(); }</div>
-<div class="line"><a name="l00569"></a><span class="lineno"><a class="line" href="classmesos_1_1Resources.html#a09242ab54ec91f74c67b67c7ab44036f">  569</a></span>&#160;  <a class="code" href="classmesos_1_1Resources.html#aead097c9cbf735bed75199745625d768">const_iterator</a> <a class="code" href="classmesos_1_1Resources.html#a09242ab54ec91f74c67b67c7ab44036f">end</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> resources.end(); }</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;  <span class="comment">// Using this operator makes it easy to copy a resources object into</span></div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;  <span class="comment">// a protocol buffer field.</span></div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;  <span class="comment">// Note that the google::protobuf::RepeatedPtrField&lt;Resource&gt; is</span></div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;  <span class="comment">// generated at runtime.</span></div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;  <span class="keyword">operator</span> google::protobuf::RepeatedPtrField&lt;Resource&gt;() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1Resources.html#ab5afedf0ab457c9298c251ca1ad0ce20">operator==</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; that) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1Resources.html#ac992e85d674e3a1346dcce492f766588">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; that) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;  <span class="comment">// NOTE: If any error occurs (e.g., input Resource is not valid or</span></div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;  <span class="comment">// the first operand is not a superset of the second operand while</span></div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;  <span class="comment">// doing subtraction), the semantics is as though the second operand</span></div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;  <span class="comment">// was actually just an empty resource (as though you didn&#39;t do the</span></div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;  <span class="comment">// operation at all).</span></div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1Resources.html#a1bb96b91999835ce867a3a895bd7bd08">operator+</a>(<span class="keyword">const</span> Resource&amp; that) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1Resources.html#a1bb96b91999835ce867a3a895bd7bd08">operator+</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; that) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; <a class="code" href="classmesos_1_1Resources.html#a5e73184e5fd1818ec189fe5f7d432b25">operator+=</a>(<span class="keyword">const</span> Resource&amp; that);</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; <a class="code" href="classmesos_1_1Resources.html#a5e73184e5fd1818ec189fe5f7d432b25">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; that);</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1Resources.html#a2233c5eae93c7bd8629495f19346575e">operator-</a>(<span class="keyword">const</span> Resource&amp; that) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1Resources.html#a2233c5eae93c7bd8629495f19346575e">operator-</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; that) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; <a class="code" href="classmesos_1_1Resources.html#ad23628d37ce9834684a0873de2ff2cfd">operator-=</a>(<span class="keyword">const</span> Resource&amp; that);</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; <a class="code" href="classmesos_1_1Resources.html#ad23628d37ce9834684a0873de2ff2cfd">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; that);</div>
+<div class="line"><a name="l00568"></a><span class="lineno"><a class="line" href="classmesos_1_1Resources.html#a07ff5813b931a26510a3343cb0c988e1">  568</a></span>&#160;  <a class="code" href="classmesos_1_1Resources.html#aead097c9cbf735bed75199745625d768">const_iterator</a> <a class="code" href="classmesos_1_1Resources.html#a07ff5813b931a26510a3343cb0c988e1">end</a>()</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;  {</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>std::vector&lt;Resource_&gt;&amp;<span class="keyword">&gt;</span>(resources).<a class="code" href="classmesos_1_1Resources.html#a07ff5813b931a26510a3343cb0c988e1">end</a>();</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;  }</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;</div>
+<div class="line"><a name="l00573"></a><span class="lineno"><a class="line" href="classmesos_1_1Resources.html#ae66c01db87b2a42cfee3e77c20687d56">  573</a></span>&#160;  <a class="code" href="classmesos_1_1Resources.html#aead097c9cbf735bed75199745625d768">const_iterator</a> <a class="code" href="classmesos_1_1Resources.html#ae66c01db87b2a42cfee3e77c20687d56">begin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> resources.begin(); }</div>
+<div class="line"><a name="l00574"></a><span class="lineno"><a class="line" href="classmesos_1_1Resources.html#a09242ab54ec91f74c67b67c7ab44036f">  574</a></span>&#160;  <a class="code" href="classmesos_1_1Resources.html#aead097c9cbf735bed75199745625d768">const_iterator</a> <a class="code" href="classmesos_1_1Resources.html#a09242ab54ec91f74c67b67c7ab44036f">end</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> resources.end(); }</div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;</div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;  <span class="comment">// Using this operator makes it easy to copy a resources object into</span></div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;  <span class="comment">// a protocol buffer field.</span></div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;  <span class="comment">// Note that the google::protobuf::RepeatedPtrField&lt;Resource&gt; is</span></div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;  <span class="comment">// generated at runtime.</span></div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;  <span class="keyword">operator</span> google::protobuf::RepeatedPtrField&lt;Resource&gt;() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;</div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1Resources.html#ab5afedf0ab457c9298c251ca1ad0ce20">operator==</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; that) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1Resources.html#ac992e85d674e3a1346dcce492f766588">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; that) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;  <span class="comment">// NOTE: If any error occurs (e.g., input Resource is not valid or</span></div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;  <span class="comment">// the first operand is not a superset of the second operand while</span></div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;  <span class="comment">// doing subtraction), the semantics is as though the second operand</span></div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;  <span class="comment">// was actually just an empty resource (as though you didn&#39;t do the</span></div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;  <span class="comment">// operation at all).</span></div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1Resources.html#a1bb96b91999835ce867a3a895bd7bd08">operator+</a>(<span class="keyword">const</span> Resource&amp; that) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1Resources.html#a1bb96b91999835ce867a3a895bd7bd08">operator+</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; that) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; <a class="code" href="classmesos_1_1Resources.html#a5e73184e5fd1818ec189fe5f7d432b25">operator+=</a>(<span class="keyword">const</span> Resource&amp; that);</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; <a class="code" href="classmesos_1_1Resources.html#a5e73184e5fd1818ec189fe5f7d432b25">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; that);</div>
 <div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;  <span class="keyword">friend</span> std::ostream&amp; <a class="code" href="classmesos_1_1Resources.html#ae280811800456648b43c902fa7a42d46">operator&lt;&lt;</a>(</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;      std::ostream&amp; stream, <span class="keyword">const</span> Resource_&amp; resource_);</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;  <span class="comment">// Similar to &#39;contains(const Resource&amp;)&#39; but skips the validity</span></div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;  <span class="comment">// check. This can be used to avoid the performance overhead of</span></div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;  <span class="comment">// calling &#39;contains(const Resource&amp;)&#39; when the resource can be</span></div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;  <span class="comment">// assumed valid (e.g. it&#39;s inside a Resources).</span></div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;  <span class="comment">// TODO(jieyu): Measure performance overhead of validity check to</span></div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;  <span class="comment">// ensure this is warranted.</span></div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;  <span class="keywordtype">bool</span> _contains(<span class="keyword">const</span> Resource_&amp; that) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;  <span class="comment">// Similar to the public &#39;find&#39;, but only for a single Resource</span></div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;  <span class="comment">// object. The target resource may span multiple roles, so this</span></div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;  <span class="comment">// returns Resources.</span></div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;  <a class="code" href="classOption.html">Option&lt;Resources&gt;</a> <a class="code" href="classmesos_1_1Resources.html#a531f3b2cf4318aa421a2c9a9134992d1">find</a>(<span class="keyword">const</span> Resource&amp; target) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1Resources.html#a2233c5eae93c7bd8629495f19346575e">operator-</a>(<span class="keyword">const</span> Resource&amp; that) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1Resources.html#a2233c5eae93c7bd8629495f19346575e">operator-</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; that) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; <a class="code" href="classmesos_1_1Resources.html#ad23628d37ce9834684a0873de2ff2cfd">operator-=</a>(<span class="keyword">const</span> Resource&amp; that);</div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; <a class="code" href="classmesos_1_1Resources.html#ad23628d37ce9834684a0873de2ff2cfd">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; that);</div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;  <span class="keyword">friend</span> std::ostream&amp; <a class="code" href="classmesos_1_1Resources.html#ae280811800456648b43c902fa7a42d46">operator&lt;&lt;</a>(</div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;      std::ostream&amp; stream, <span class="keyword">const</span> Resource_&amp; resource_);</div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;</div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;  <span class="comment">// Similar to &#39;contains(const Resource&amp;)&#39; but skips the validity</span></div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;  <span class="comment">// check. This can be used to avoid the performance overhead of</span></div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;  <span class="comment">// calling &#39;contains(const Resource&amp;)&#39; when the resource can be</span></div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;  <span class="comment">// assumed valid (e.g. it&#39;s inside a Resources).</span></div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;  <span class="comment">//</span></div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;  <span class="comment">// TODO(jieyu): Measure performance overhead of validity check to</span></div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;  <span class="comment">// ensure this is warranted.</span></div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;  <span class="keywordtype">bool</span> _contains(<span class="keyword">const</span> Resource_&amp; that) <span class="keyword">const</span>;</div>
 <div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;  <span class="comment">// Validation-free versions of += and -= `Resource_` operators.</span></div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;  <span class="comment">// These can be used when `r` is already validated.</span></div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;  <span class="comment">// NOTE: `Resource` objects are implicitly converted to `Resource_`</span></div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;  <span class="comment">// objects, so here the API can also accept a `Resource` object.</span></div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="namespaceprocess_1_1metrics.html#a15af50f3f4dbcca2f7c619ccfbaa70b2">add</a>(<span class="keyword">const</span> Resource_&amp; r);</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;  <span class="keywordtype">void</span> subtract(<span class="keyword">const</span> Resource_&amp; r);</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1Resources.html#a1bb96b91999835ce867a3a895bd7bd08">operator+</a>(<span class="keyword">const</span> Resource_&amp; that) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; <a class="code" href="classmesos_1_1Resources.html#a5e73184e5fd1818ec189fe5f7d432b25">operator+=</a>(<span class="keyword">const</span> Resource_&amp; that);</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1Resources.html#a2233c5eae93c7bd8629495f19346575e">operator-</a>(<span class="keyword">const</span> Resource_&amp; that) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; <a class="code" href="classmesos_1_1Resources.html#ad23628d37ce9834684a0873de2ff2cfd">operator-=</a>(<span class="keyword">const</span> Resource_&amp; that);</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;  std::vector&lt;Resource_&gt; resources;</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;};</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;std::ostream&amp; <a class="code" href="namespacemesos.html#a5dc9d475094af726a46d485950cde6cb">operator&lt;&lt;</a>(</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;    std::ostream&amp; stream,</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;    <span class="keyword">const</span> Resources::Resource_&amp; resource);</div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;  <span class="comment">// Similar to the public &#39;find&#39;, but only for a single Resource</span></div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;  <span class="comment">// object. The target resource may span multiple roles, so this</span></div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;  <span class="comment">// returns Resources.</span></div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;  <a class="code" href="classOption.html">Option&lt;Resources&gt;</a> <a class="code" href="classmesos_1_1Resources.html#a531f3b2cf4318aa421a2c9a9134992d1">find</a>(<span class="keyword">const</span> Resource&amp; target) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;</div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;  <span class="comment">// Validation-free versions of += and -= `Resource_` operators.</span></div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;  <span class="comment">// These can be used when `r` is already validated.</span></div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;  <span class="comment">//</span></div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;  <span class="comment">// NOTE: `Resource` objects are implicitly converted to `Resource_`</span></div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;  <span class="comment">// objects, so here the API can also accept a `Resource` object.</span></div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="namespaceprocess_1_1metrics.html#a15af50f3f4dbcca2f7c619ccfbaa70b2">add</a>(<span class="keyword">const</span> Resource_&amp; r);</div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;  <span class="keywordtype">void</span> subtract(<span class="keyword">const</span> Resource_&amp; r);</div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;</div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1Resources.html#a1bb96b91999835ce867a3a895bd7bd08">operator+</a>(<span class="keyword">const</span> Resource_&amp; that) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; <a class="code" href="classmesos_1_1Resources.html#a5e73184e5fd1818ec189fe5f7d432b25">operator+=</a>(<span class="keyword">const</span> Resource_&amp; that);</div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;</div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1Resources.html#a2233c5eae93c7bd8629495f19346575e">operator-</a>(<span class="keyword">const</span> Resource_&amp; that) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; <a class="code" href="classmesos_1_1Resources.html#ad23628d37ce9834684a0873de2ff2cfd">operator-=</a>(<span class="keyword">const</span> Resource_&amp; that);</div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;</div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;  std::vector&lt;Resource_&gt; resources;</div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;};</div>
 <div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;</div>
 <div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;std::ostream&amp; <a class="code" href="namespacemesos.html#a5dc9d475094af726a46d485950cde6cb">operator&lt;&lt;</a>(std::ostream&amp; stream, <span class="keyword">const</span> Resource&amp; resource);</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;std::ostream&amp; <a class="code" href="namespacemesos.html#a5dc9d475094af726a46d485950cde6cb">operator&lt;&lt;</a>(std::ostream&amp; stream, <span class="keyword">const</span> Resources&amp; resources);</div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;std::ostream&amp; <a class="code" href="namespacemesos.html#a5dc9d475094af726a46d485950cde6cb">operator&lt;&lt;</a>(</div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;    std::ostream&amp; stream,</div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;    <span class="keyword">const</span> Resources::Resource_&amp; resource);</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;</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;std::ostream&amp; <a class="code" href="namespacemesos.html#a5dc9d475094af726a46d485950cde6cb">operator&lt;&lt;</a>(</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;    std::ostream&amp; stream,</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;    <span class="keyword">const</span> google::protobuf::RepeatedPtrField&lt;Resource&gt;&amp; resources);</div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;std::ostream&amp; <a class="code" href="namespacemesos.html#a5dc9d475094af726a46d485950cde6cb">operator&lt;&lt;</a>(std::ostream&amp; stream, <span class="keyword">const</span> Resource&amp; resource);</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;</div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;std::ostream&amp; <a class="code" href="namespacemesos.html#a5dc9d475094af726a46d485950cde6cb">operator&lt;&lt;</a>(std::ostream&amp; stream, <span class="keyword">const</span> Resources&amp; resources);</div>
 <div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;</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"><a class="line" href="namespacemesos.html#ab16e1a11cb91d02d756b2ce64834f3c8">  647</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="namespacemesos.html#ab16e1a11cb91d02d756b2ce64834f3c8">operator+</a>(</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;    <span class="keyword">const</span> google::protobuf::RepeatedPtrField&lt;Resource&gt;&amp; left,</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;    <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; right)</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;  <span class="keywordflow">return</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>(left) + right;</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;</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;</div>
-<div class="line"><a name="l00655"></a><span class="lineno"><a class="line" href="namespacemesos.html#ae80307fd2de55e858be4d47154b86f1a">  655</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="namespacemesos.html#ae80307fd2de55e858be4d47154b86f1a">operator-</a>(</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;    <span class="keyword">const</span> google::protobuf::RepeatedPtrField&lt;Resource&gt;&amp; left,</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;    <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; right)</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;  <span class="keywordflow">return</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>(left) - right;</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;}</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;</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"><a class="line" href="namespacemesos.html#a25baf5dc50c84275f660a602705ac4fb">  663</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespacemesos.html#a112163aa7f26794e26b67dfc187dec7f">operator==</a>(</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;    <span class="keyword">const</span> google::protobuf::RepeatedPtrField&lt;Resource&gt;&amp; left,</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;    <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; right)</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;{</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>(left) == right;</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;</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;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key&gt;</div>
-<div class="line"><a name="l00672"></a><span class="lineno"><a class="line" href="namespacemesos.html#a05acb02d51a29432792fb088b7ee5c1f">  672</a></span>&#160;<a class="code" href="classhashmap.html">hashmap&lt;Key, Resources&gt;</a>&amp; <a class="code" href="namespacemesos.html#a05acb02d51a29432792fb088b7ee5c1f">operator+=</a>(</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;    <a class="code" href="classhashmap.html">hashmap&lt;Key, Resources&gt;</a>&amp; left,</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;    <span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap&lt;Key, Resources&gt;</a>&amp; right)</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;  <a class="code" href="foreach_8hpp.html#a66900b166526abe66464d6597536b111">foreachpair</a> (<span class="keyword">const</span> Key&amp; key, <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; resources, right) {</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;    left[key] += resources;</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;  <span class="keywordflow">return</span> left;</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;}</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;</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key&gt;</div>
-<div class="line"><a name="l00684"></a><span class="lineno"><a class="line" href="namespacemesos.html#a51ac11240eef25ec2059e3269a974c64">  684</a></span>&#160;<a class="code" href="classhashmap.html">hashmap&lt;Key, Resources&gt;</a> <a class="code" href="namespacemesos.html#ab16e1a11cb91d02d756b2ce64834f3c8">operator+</a>(</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;    <span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap&lt;Key, Resources&gt;</a>&amp; left,</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;    <span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap&lt;Key, Resources&gt;</a>&amp; right)</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;{</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;Key, Resources&gt;</a> result = left;</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;  result += right;</div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;  <span class="keywordflow">return</span> result;</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;</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;</div>
-<div class="line"><a name="l00698"></a><span class="lineno"><a class="line" href="classmesos_1_1ResourceConversion.html">  698</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1ResourceConversion.html">ResourceConversion</a></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="keyword">public</span>:</div>
-<div class="line"><a name="l00701"></a><span class="lineno"><a class="line" href="classmesos_1_1ResourceConversion.html#aa9039c86575590f50e1e03cc3f42e9e6">  701</a></span>&#160;  <span class="keyword">typedef</span> lambda::function&lt;Try&lt;Nothing&gt;(<span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp;)&gt; <a class="code" href="classmesos_1_1ResourceConversion.html#aa9039c86575590f50e1e03cc3f42e9e6">PostValidation</a>;</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"><a class="line" href="classmesos_1_1ResourceConversion.html#aad98a62b2681ff5a4b77f9dc20e9140b">  703</a></span>&#160;  <a class="code" href="classmesos_1_1ResourceConversion.html#aad98a62b2681ff5a4b77f9dc20e9140b">ResourceConversion</a>(</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;      <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; _consumed,</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;      <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; _converted,</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;PostValidation&gt;</a>&amp; _postValidation = <a class="code" href="structNone.html">None</a>())</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;    : <a class="code" href="classmesos_1_1ResourceConversion.html#afa8d5fe5c9c3f6f1588d7df710262080">consumed</a>(_consumed),</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;      <a class="code" href="classmesos_1_1ResourceConversion.html#a5a8038920d7a88ed4c0b5b096f6fce83">converted</a>(_converted),</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;      <a class="code" href="classmesos_1_1ResourceConversion.html#a08a56bacb82357b13c8fa3f03e999781">postValidation</a>(_postValidation) {}</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;  <a class="code" href="classTry.html">Try&lt;Resources&gt;</a> <a class="code" href="classmesos_1_1ResourceConversion.html#adb691cdd12b7af7db52284b0a1737533">apply</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; resources) <span class="keyword">const</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"><a class="line" href="classmesos_1_1ResourceConversion.html#afa8d5fe5c9c3f6f1588d7df710262080">  713</a></span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1ResourceConversion.html#afa8d5fe5c9c3f6f1588d7df710262080">consumed</a>;</div>
-<div class="line"><a name="l00714"></a><span class="lineno"><a class="line" href="classmesos_1_1ResourceConversion.html#a5a8038920d7a88ed4c0b5b096f6fce83">  714</a></span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1ResourceConversion.html#a5a8038920d7a88ed4c0b5b096f6fce83">converted</a>;</div>
-<div class="line"><a name="l00715"></a><span class="lineno"><a class="line" href="classmesos_1_1ResourceConversion.html#a08a56bacb82357b13c8fa3f03e999781">  715</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;PostValidation&gt;</a> <a class="code" href="classmesos_1_1ResourceConversion.html#a08a56bacb82357b13c8fa3f03e999781">postValidation</a>;</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;};</div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;std::ostream&amp; <a class="code" href="namespacemesos.html#a5dc9d475094af726a46d485950cde6cb">operator&lt;&lt;</a>(</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;    std::ostream&amp; stream,</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;    <span class="keyword">const</span> google::protobuf::RepeatedPtrField&lt;Resource&gt;&amp; resources);</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;</div>
+<div class="line"><a name="l00652"></a><span class="lineno"><a class="line" href="namespacemesos.html#ab16e1a11cb91d02d756b2ce64834f3c8">  652</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="namespacemesos.html#ab16e1a11cb91d02d756b2ce64834f3c8">operator+</a>(</div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;    <span class="keyword">const</span> google::protobuf::RepeatedPtrField&lt;Resource&gt;&amp; left,</div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;    <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; right)</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;  <span class="keywordflow">return</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>(left) + right;</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"><a class="line" href="namespacemesos.html#ae80307fd2de55e858be4d47154b86f1a">  660</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="namespacemesos.html#ae80307fd2de55e858be4d47154b86f1a">operator-</a>(</div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;    <span class="keyword">const</span> google::protobuf::RepeatedPtrField&lt;Resource&gt;&amp; left,</div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;    <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; right)</div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;{</div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>(left) - right;</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;</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"><a class="line" href="namespacemesos.html#a25baf5dc50c84275f660a602705ac4fb">  668</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespacemesos.html#a112163aa7f26794e26b67dfc187dec7f">operator==</a>(</div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;    <span class="keyword">const</span> google::protobuf::RepeatedPtrField&lt;Resource&gt;&amp; left,</div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;    <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; right)</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">return</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>(left) == right;</div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;}</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;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key&gt;</div>
+<div class="line"><a name="l00677"></a><span class="lineno"><a class="line" href="namespacemesos.html#a05acb02d51a29432792fb088b7ee5c1f">  677</a></span>&#160;<a class="code" href="classhashmap.html">hashmap&lt;Key, Resources&gt;</a>&amp; <a class="code" href="namespacemesos.html#a05acb02d51a29432792fb088b7ee5c1f">operator+=</a>(</div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;    <a class="code" href="classhashmap.html">hashmap&lt;Key, Resources&gt;</a>&amp; left,</div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;    <span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap&lt;Key, Resources&gt;</a>&amp; right)</div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;{</div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;  <a class="code" href="foreach_8hpp.html#a66900b166526abe66464d6597536b111">foreachpair</a> (<span class="keyword">const</span> Key&amp; key, <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; resources, right) {</div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;    left[key] += resources;</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;  <span class="keywordflow">return</span> left;</div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;}</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;</div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key&gt;</div>
+<div class="line"><a name="l00689"></a><span class="lineno"><a class="line" href="namespacemesos.html#a51ac11240eef25ec2059e3269a974c64">  689</a></span>&#160;<a class="code" href="classhashmap.html">hashmap&lt;Key, Resources&gt;</a> <a class="code" href="namespacemesos.html#ab16e1a11cb91d02d756b2ce64834f3c8">operator+</a>(</div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;    <span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap&lt;Key, Resources&gt;</a>&amp; left,</div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;    <span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap&lt;Key, Resources&gt;</a>&amp; right)</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;  <a class="code" href="classhashmap.html">hashmap&lt;Key, Resources&gt;</a> result = left;</div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;  result += right;</div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;  <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;}</div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;</div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;</div>
+<div class="line"><a name="l00703"></a><span class="lineno"><a class="line" href="classmesos_1_1ResourceConversion.html">  703</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1ResourceConversion.html">ResourceConversion</a></div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;{</div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00706"></a><span class="lineno"><a class="line" href="classmesos_1_1ResourceConversion.html#aa9039c86575590f50e1e03cc3f42e9e6">  706</a></span>&#160;  <span class="keyword">typedef</span> lambda::function&lt;Try&lt;Nothing&gt;(<span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp;)&gt; <a class="code" href="classmesos_1_1ResourceConversion.html#aa9039c86575590f50e1e03cc3f42e9e6">PostValidation</a>;</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"><a class="line" href="classmesos_1_1ResourceConversion.html#aad98a62b2681ff5a4b77f9dc20e9140b">  708</a></span>&#160;  <a class="code" href="classmesos_1_1ResourceConversion.html#aad98a62b2681ff5a4b77f9dc20e9140b">ResourceConversion</a>(</div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;      <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; _consumed,</div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;      <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; _converted,</div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;PostValidation&gt;</a>&amp; _postValidation = <a class="code" href="structNone.html">None</a>())</div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;    : <a class="code" href="classmesos_1_1ResourceConversion.html#afa8d5fe5c9c3f6f1588d7df710262080">consumed</a>(_consumed),</div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;      <a class="code" href="classmesos_1_1ResourceConversion.html#a5a8038920d7a88ed4c0b5b096f6fce83">converted</a>(_converted),</div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;      <a class="code" href="classmesos_1_1ResourceConversion.html#a08a56bacb82357b13c8fa3f03e999781">postValidation</a>(_postValidation) {}</div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;</div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;  <a class="code" href="classTry.html">Try&lt;Resources&gt;</a> <a class="code" href="classmesos_1_1ResourceConversion.html#adb691cdd12b7af7db52284b0a1737533">apply</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; resources) <span class="keyword">const</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;} <span class="comment">// namespace mesos {</span></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;<span class="preprocessor">#endif // __RESOURCES_HPP__</span></div>
+<div class="line"><a name="l00718"></a><span class="lineno"><a class="line" href="classmesos_1_1ResourceConversion.html#afa8d5fe5c9c3f6f1588d7df710262080">  718</a></span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1ResourceConversion.html#afa8d5fe5c9c3f6f1588d7df710262080">consumed</a>;</div>
+<div class="line"><a name="l00719"></a><span class="lineno"><a class="line" href="classmesos_1_1ResourceConversion.html#a5a8038920d7a88ed4c0b5b096f6fce83">  719</a></span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1ResourceConversion.html#a5a8038920d7a88ed4c0b5b096f6fce83">converted</a>;</div>
+<div class="line"><a name="l00720"></a><span class="lineno"><a class="line" href="classmesos_1_1ResourceConversion.html#a08a56bacb82357b13c8fa3f03e999781">  720</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;PostValidation&gt;</a> <a class="code" href="classmesos_1_1ResourceConversion.html#a08a56bacb82357b13c8fa3f03e999781">postValidation</a>;</div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;};</div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;</div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;} <span class="comment">// namespace mesos {</span></div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;</div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;<span class="preprocessor">#endif // __RESOURCES_HPP__</span></div>
 <div class="ttc" id="namespacemesos_html_a5dc9d475094af726a46d485950cde6cb"><div class="ttname"><a href="namespacemesos.html#a5dc9d475094af726a46d485950cde6cb">mesos::operator&lt;&lt;</a></div><div class="ttdeci">std::ostream &amp; operator&lt;&lt;(std::ostream &amp;stream, const Attribute &amp;attribute)</div></div>
-<div class="ttc" id="classmesos_1_1ResourceConversion_html_aad98a62b2681ff5a4b77f9dc20e9140b"><div class="ttname"><a href="classmesos_1_1ResourceConversion.html#aad98a62b2681ff5a4b77f9dc20e9140b">mesos::ResourceConversion::ResourceConversion</a></div><div class="ttdeci">ResourceConversion(const Resources &amp;_consumed, const Resources &amp;_converted, const Option&lt; PostValidation &gt; &amp;_postValidation=None())</div><div class="ttdef"><b>Definition:</b> resources.hpp:703</div></div>
-<div class="ttc" id="classmesos_1_1Resources_html_aead097c9cbf735bed75199745625d768"><div class="ttname"><a href="classmesos_1_1Resources.html#aead097c9cbf735bed75199745625d768">mesos::Resources::const_iterator</a></div><div class="ttdeci">std::vector&lt; Resource_ &gt;::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> resources.hpp:556</div></div>
+<div class="ttc" id="classmesos_1_1ResourceConversion_html_aad98a62b2681ff5a4b77f9dc20e9140b"><div class="ttname"><a href="classmesos_1_1ResourceConversion.html#aad98a62b2681ff5a4b77f9dc20e9140b">mesos::ResourceConversion::ResourceConversion</a></div><div class="ttdeci">ResourceConversion(const Resources &amp;_consumed, const Resources &amp;_converted, const Option&lt; PostValidation &gt; &amp;_postValidation=None())</div><div class="ttdef"><b>Definition:</b> resources.hpp:708</div></div>
+<div class="ttc" id="classmesos_1_1Resources_html_aead097c9cbf735bed75199745625d768"><div class="ttname"><a href="classmesos_1_1Resources.html#aead097c9cbf735bed75199745625d768">mesos::Resources::const_iterator</a></div><div class="ttdeci">std::vector&lt; Resource_ &gt;::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> resources.hpp:561</div></div>
 <div class="ttc" id="classmesos_1_1ResourceConversion_html_adb691cdd12b7af7db52284b0a1737533"><div class="ttname"><a href="classmesos_1_1ResourceConversion.html#adb691cdd12b7af7db52284b0a1737533">mesos::ResourceConversion::apply</a></div><div class="ttdeci">Try&lt; Resources &gt; apply(const Resources &amp;resources) const </div></div>
 <div class="ttc" id="classmesos_1_1Resources_html_af80276e0925e9e48dbf816aae62a2bb8"><div class="ttname"><a href="classmesos_1_1Resources.html#af80276e0925e9e48dbf816aae62a2bb8">mesos::Resources::isEmpty</a></div><div class="ttdeci">static bool isEmpty(const Resource &amp;resource)</div></div>
 <div class="ttc" id="classmesos_1_1Resources_html_a941fe78c62de3a6fa7c7cf977960694a"><div class="ttname"><a href="classmesos_1_1Resources.html#a941fe78c62de3a6fa7c7cf977960694a">mesos::Resources::size</a></div><div class="ttdeci">size_t size() const </div><div class="ttdef"><b>Definition:</b> resources.hpp:390</div></div>
 <div class="ttc" id="classmesos_1_1Resources_html_a6c4d4a889c254fb4241644c6557d511e"><div class="ttname"><a href="classmesos_1_1Resources.html#a6c4d4a889c254fb4241644c6557d511e">mesos::Resources::types</a></div><div class="ttdeci">std::map&lt; std::string, Value_Type &gt; types() const </div></div>
-<div class="ttc" id="classmesos_1_1ResourceConversion_html_afa8d5fe5c9c3f6f1588d7df710262080"><div class="ttname"><a href="classmesos_1_1ResourceConversion.html#afa8d5fe5c9c3f6f1588d7df710262080">mesos::ResourceConversion::consumed</a></div><div class="ttdeci">Resources consumed</div><div class="ttdef"><b>Definition:</b> resources.hpp:713</div></div>
+<div class="ttc" id="classmesos_1_1ResourceConversion_html_afa8d5fe5c9c3f6f1588d7df710262080"><div class="ttname"><a href="classmesos_1_1ResourceConversion.html#afa8d5fe5c9c3f6f1588d7df710262080">mesos::ResourceConversion::consumed</a></div><div class="ttdeci">Resources consumed</div><div class="ttdef"><b>Definition:</b> resources.hpp:718</div></div>
 <div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
 <div class="ttc" id="classmesos_1_1Resources_html_a376ffdcf83696b9a957b8a24ce596649"><div class="ttname"><a href="classmesos_1_1Resources.html#a376ffdcf83696b9a957b8a24ce596649">mesos::Resources::names</a></div><div class="ttdeci">std::set&lt; std::string &gt; names() const </div></div>
 <div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option&lt; Error &gt;</a></div></div>
 <div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> try.hpp:34</div></div>
-<div class="ttc" id="classmesos_1_1Resources_html_a07ff5813b931a26510a3343cb0c988e1"><div class="ttname"><a href="classmesos_1_1Resources.html#a07ff5813b931a26510a3343cb0c988e1">mesos::Resources::end</a></div><div class="ttdeci">const_iterator end()</div><div class="ttdef"><b>Definition:</b> resources.hpp:563</div></div>
+<div class="ttc" id="classmesos_1_1Resources_html_a07ff5813b931a26510a3343cb0c988e1"><div class="ttname"><a href="classmesos_1_1Resources.html#a07ff5813b931a26510a3343cb0c988e1">mesos::Resources::end</a></div><div class="ttdeci">const_iterator

<TRUNCATED>