You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by gi...@apache.org on 2018/02/24 03:32:34 UTC
[2/3] mesos-site git commit: Updated the website built from mesos
SHA: b4e2106.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/60dce384/content/api/latest/c++/src_2master_2master_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/src_2master_2master_8hpp_source.html b/content/api/latest/c++/src_2master_2master_8hpp_source.html
index 9644241..b27a3c7 100644
--- a/content/api/latest/c++/src_2master_2master_8hpp_source.html
+++ b/content/api/latest/c++/src_2master_2master_8hpp_source.html
@@ -1944,14 +1944,14 @@
<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>  <span class="comment">//</span></div>
<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>  <span class="comment">// TODO(greggomann): Refactor this function into multiple event-specific</span></div>
<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>  <span class="comment">// overloads. See MESOS-8475.</span></div>
-<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Master_1_1Subscribers_1_1Subscriber.html#abd5463aa37d13bef42a96f722e28e9e2">send</a>(</div>
+<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Master_1_1Subscribers_1_1Subscriber.html#abe913a228aaec83e7406790beafa88b7">send</a>(</div>
<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1Shared.html">process::Shared<mesos::master::Event></a>& event,</div>
<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1Owned.html">process::Owned<AuthorizationAcceptor></a>& authorizeRole,</div>
<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1Owned.html">process::Owned<AuthorizationAcceptor></a>& <a class="code" href="classmesos_1_1internal_1_1master_1_1Master.html#a2e681b1f2c827a85d66a207cfdedf5c3">authorizeFramework</a>,</div>
<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1Owned.html">process::Owned<AuthorizationAcceptor></a>& <a class="code" href="classmesos_1_1internal_1_1master_1_1Master.html#aee6c20e5ab98744a50a2cb783af6b686">authorizeTask</a>,</div>
<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1Owned.html">process::Owned<AuthorizationAcceptor></a>& authorizeExecutor,</div>
-<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a><<a class="code" href="classprocess_1_1Shared.html">process::Shared<FrameworkInfo></a>>& frameworkInfo,</div>
-<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a><<a class="code" href="classprocess_1_1Shared.html">process::Shared<Task></a>>& task);</div>
+<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1Shared.html">process::Shared<FrameworkInfo></a>& frameworkInfo,</div>
+<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1Shared.html">process::Shared<Task></a>& task);</div>
<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span> </div>
<div class="line"><a name="l02010"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Master_1_1Subscribers_1_1Subscriber.html#a86ef4d728349aedb9d28a20860bb735f"> 2010</a></span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Master_1_1Subscribers_1_1Subscriber.html#a86ef4d728349aedb9d28a20860bb735f">~Subscriber</a>()</div>
<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>  {</div>
@@ -1972,979 +1972,988 @@
<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>  };</div>
<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span> </div>
<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>  <span class="comment">// Sends the event to all subscribers connected to the 'api/vX' endpoint.</span></div>
-<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>  <span class="keywordtype">void</span> <a class="code" href="classProtobufProcess.html#a6c404fdc490a7199a0d2ad881d588e5c">send</a>(<a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#acd3fa8addac36f513726743665631d79">mesos::master::Event</a>&& event);</div>
-<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span> </div>
-<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>  <a class="code" href="classmesos_1_1internal_1_1master_1_1Master.html">Master</a>* master;</div>
-<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span> </div>
-<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>  <span class="comment">// Active subscribers to the 'api/vX' endpoint keyed by the stream</span></div>
-<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>  <span class="comment">// identifier.</span></div>
-<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>  <a class="code" href="classhashmap.html">hashmap<id::UUID, process::Owned<Subscriber></a>> subscribed;</div>
-<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>  };</div>
-<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span> </div>
-<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>  Subscribers subscribers;</div>
-<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span> </div>
-<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>  <a class="code" href="classhashmap.html">hashmap<OfferID, Offer*></a> offers;</div>
-<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>  <a class="code" href="classhashmap.html">hashmap<OfferID, process::Timer></a> offerTimers;</div>
+<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>  <span class="keywordtype">void</span> <a class="code" href="classProtobufProcess.html#a6c404fdc490a7199a0d2ad881d588e5c">send</a>(</div>
+<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>  <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#acd3fa8addac36f513726743665631d79">mesos::master::Event</a>&& event,</div>
+<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<FrameworkInfo></a>& frameworkInfo = <a class="code" href="structNone.html">None</a>(),</div>
+<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<Task></a>& task = <a class="code" href="structNone.html">None</a>());</div>
+<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span> </div>
+<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>  <a class="code" href="classmesos_1_1internal_1_1master_1_1Master.html">Master</a>* master;</div>
+<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span> </div>
+<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>  <span class="comment">// Active subscribers to the 'api/vX' endpoint keyed by the stream</span></div>
+<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>  <span class="comment">// identifier.</span></div>
+<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>  <a class="code" href="classhashmap.html">hashmap<id::UUID, process::Owned<Subscriber></a>> subscribed;</div>
+<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>  };</div>
+<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span> </div>
+<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>  Subscribers subscribers;</div>
<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span> </div>
-<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>  <a class="code" href="classhashmap.html">hashmap<OfferID, InverseOffer*></a> inverseOffers;</div>
-<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>  <a class="code" href="classhashmap.html">hashmap<OfferID, process::Timer></a> inverseOfferTimers;</div>
+<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>  <a class="code" href="classhashmap.html">hashmap<OfferID, Offer*></a> offers;</div>
+<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>  <a class="code" href="classhashmap.html">hashmap<OfferID, process::Timer></a> offerTimers;</div>
<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span> </div>
-<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>  <span class="comment">// We track information about roles that we're aware of in the system.</span></div>
-<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>  <span class="comment">// Specifically, we keep track of the roles when a framework subscribes to</span></div>
-<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>  <span class="comment">// the role, and/or when there are resources allocated to the role</span></div>
-<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>  <span class="comment">// (e.g. some tasks and/or executors are consuming resources under the role).</span></div>
-<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>  <a class="code" href="classhashmap.html">hashmap<std::string, Role*></a> roles;</div>
-<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span> </div>
-<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>  <span class="comment">// Configured role whitelist if using the (deprecated) "explicit</span></div>
-<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>  <span class="comment">// roles" feature. If this is `None`, any role is allowed.</span></div>
-<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>  <a class="code" href="classOption.html">Option<hashset<std::string></a>> roleWhitelist;</div>
-<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span> </div>
-<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>  <span class="comment">// Configured weight for each role, if any. If a role does not</span></div>
-<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>  <span class="comment">// appear here, it has the default weight of 1.</span></div>
-<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>  <a class="code" href="classhashmap.html">hashmap<std::string, double></a> weights;</div>
-<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span> </div>
-<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>  <span class="comment">// Configured quota for each role, if any. We store quotas by role</span></div>
-<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>  <span class="comment">// because we set them at the role level.</span></div>
-<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>  <a class="code" href="classhashmap.html">hashmap<std::string, Quota></a> quotas;</div>
-<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span> </div>
-<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>  <span class="comment">// Authenticator names as supplied via flags.</span></div>
-<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>  std::vector<std::string> authenticatorNames;</div>
+<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>  <a class="code" href="classhashmap.html">hashmap<OfferID, InverseOffer*></a> inverseOffers;</div>
+<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>  <a class="code" href="classhashmap.html">hashmap<OfferID, process::Timer></a> inverseOfferTimers;</div>
+<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span> </div>
+<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>  <span class="comment">// We track information about roles that we're aware of in the system.</span></div>
+<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>  <span class="comment">// Specifically, we keep track of the roles when a framework subscribes to</span></div>
+<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>  <span class="comment">// the role, and/or when there are resources allocated to the role</span></div>
+<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>  <span class="comment">// (e.g. some tasks and/or executors are consuming resources under the role).</span></div>
+<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>  <a class="code" href="classhashmap.html">hashmap<std::string, Role*></a> roles;</div>
+<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span> </div>
+<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>  <span class="comment">// Configured role whitelist if using the (deprecated) "explicit</span></div>
+<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>  <span class="comment">// roles" feature. If this is `None`, any role is allowed.</span></div>
+<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>  <a class="code" href="classOption.html">Option<hashset<std::string></a>> roleWhitelist;</div>
+<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span> </div>
+<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>  <span class="comment">// Configured weight for each role, if any. If a role does not</span></div>
+<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>  <span class="comment">// appear here, it has the default weight of 1.</span></div>
+<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>  <a class="code" href="classhashmap.html">hashmap<std::string, double></a> weights;</div>
+<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span> </div>
+<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>  <span class="comment">// Configured quota for each role, if any. We store quotas by role</span></div>
+<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>  <span class="comment">// because we set them at the role level.</span></div>
+<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>  <a class="code" href="classhashmap.html">hashmap<std::string, Quota></a> quotas;</div>
<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span> </div>
-<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>  <a class="code" href="classOption.html">Option<Authenticator*></a> authenticator;</div>
-<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span> </div>
-<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>  <span class="comment">// Frameworks/slaves that are currently in the process of authentication.</span></div>
-<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>  <span class="comment">// 'authenticating' future is completed when authenticator</span></div>
-<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>  <span class="comment">// completes authentication.</span></div>
-<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>  <span class="comment">// The future is removed from the map when master completes authentication.</span></div>
-<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>  <a class="code" href="classhashmap.html">hashmap<process::UPID, process::Future<Option<std::string></a>>> authenticating;</div>
-<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span> </div>
-<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>  <span class="comment">// Principals of authenticated frameworks/slaves keyed by PID.</span></div>
-<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>  <a class="code" href="classhashmap.html">hashmap<process::UPID, std::string></a> authenticated;</div>
+<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>  <span class="comment">// Authenticator names as supplied via flags.</span></div>
+<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>  std::vector<std::string> authenticatorNames;</div>
+<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span> </div>
+<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>  <a class="code" href="classOption.html">Option<Authenticator*></a> authenticator;</div>
+<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span> </div>
+<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>  <span class="comment">// Frameworks/slaves that are currently in the process of authentication.</span></div>
+<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>  <span class="comment">// 'authenticating' future is completed when authenticator</span></div>
+<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>  <span class="comment">// completes authentication.</span></div>
+<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>  <span class="comment">// The future is removed from the map when master completes authentication.</span></div>
+<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>  <a class="code" href="classhashmap.html">hashmap<process::UPID, process::Future<Option<std::string></a>>> authenticating;</div>
<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span> </div>
-<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>  int64_t nextFrameworkId; <span class="comment">// Used to give each framework a unique ID.</span></div>
-<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>  int64_t nextOfferId; <span class="comment">// Used to give each slot offer a unique ID.</span></div>
-<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>  int64_t nextSlaveId; <span class="comment">// Used to give each slave a unique ID.</span></div>
-<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span> </div>
-<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>  <span class="comment">// NOTE: It is safe to use a 'shared_ptr' because 'Metrics' is</span></div>
-<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>  <span class="comment">// thread safe.</span></div>
-<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>  <span class="comment">// TODO(dhamon): This does not need to be a shared_ptr. Metrics contains</span></div>
-<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>  <span class="comment">// copyable metric types only.</span></div>
-<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>  std::shared_ptr<Metrics> metrics;</div>
-<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span> </div>
-<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>  <span class="comment">// Gauge handlers.</span></div>
-<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>  <span class="keywordtype">double</span> _uptime_secs()</div>
-<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>  {</div>
-<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>  <span class="keywordflow">return</span> (<a class="code" href="classprocess_1_1Clock.html#a24ed3f746bb6b3ddb1c52dce5e0ecd38">process::Clock::now</a>() - startTime).secs();</div>
-<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>  }</div>
-<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span> </div>
-<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>  <span class="keywordtype">double</span> _elected()</div>
-<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>  {</div>
-<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>  <span class="keywordflow">return</span> elected() ? 1 : 0;</div>
-<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>  }</div>
-<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span> </div>
-<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>  <span class="keywordtype">double</span> _slaves_connected();</div>
-<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>  <span class="keywordtype">double</span> _slaves_disconnected();</div>
-<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>  <span class="keywordtype">double</span> _slaves_active();</div>
-<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>  <span class="keywordtype">double</span> _slaves_inactive();</div>
-<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>  <span class="keywordtype">double</span> _slaves_unreachable();</div>
-<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span> </div>
-<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>  <span class="keywordtype">double</span> _frameworks_connected();</div>
-<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>  <span class="keywordtype">double</span> _frameworks_disconnected();</div>
-<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>  <span class="keywordtype">double</span> _frameworks_active();</div>
-<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>  <span class="keywordtype">double</span> _frameworks_inactive();</div>
-<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span> </div>
-<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>  <span class="keywordtype">double</span> _outstanding_offers()</div>
-<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>  {</div>
-<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(offers.size());</div>
-<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>  }</div>
-<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span> </div>
-<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>  <span class="keywordtype">double</span> _event_queue_messages()</div>
-<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>  {</div>
-<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(eventCount<process::MessageEvent>());</div>
-<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>  }</div>
-<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span> </div>
-<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>  <span class="keywordtype">double</span> _event_queue_dispatches()</div>
-<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>  {</div>
-<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(eventCount<process::DispatchEvent>());</div>
-<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>  }</div>
-<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span> </div>
-<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>  <span class="keywordtype">double</span> _event_queue_http_requests()</div>
-<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>  {</div>
-<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(eventCount<process::HttpEvent>());</div>
-<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>  }</div>
-<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span> </div>
-<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>  <span class="keywordtype">double</span> _tasks_staging();</div>
-<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>  <span class="keywordtype">double</span> _tasks_starting();</div>
-<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>  <span class="keywordtype">double</span> _tasks_running();</div>
-<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>  <span class="keywordtype">double</span> _tasks_unreachable();</div>
-<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>  <span class="keywordtype">double</span> _tasks_killing();</div>
-<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span> </div>
-<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>  <span class="keywordtype">double</span> _resources_total(<span class="keyword">const</span> std::string& name);</div>
-<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>  <span class="keywordtype">double</span> _resources_used(<span class="keyword">const</span> std::string& name);</div>
-<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>  <span class="keywordtype">double</span> _resources_percent(<span class="keyword">const</span> std::string& name);</div>
-<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span> </div>
-<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>  <span class="keywordtype">double</span> _resources_revocable_total(<span class="keyword">const</span> std::string& name);</div>
-<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>  <span class="keywordtype">double</span> _resources_revocable_used(<span class="keyword">const</span> std::string& name);</div>
-<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>  <span class="keywordtype">double</span> _resources_revocable_percent(<span class="keyword">const</span> std::string& name);</div>
-<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span> </div>
-<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>  <a class="code" href="classprocess_1_1Time.html">process::Time</a> startTime; <span class="comment">// Start time used to calculate uptime.</span></div>
-<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span> </div>
-<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>  <a class="code" href="classOption.html">Option<process::Time></a> electedTime; <span class="comment">// Time when this master is elected.</span></div>
-<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span> </div>
-<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>  <span class="comment">// Validates the framework including authorization.</span></div>
-<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>  <span class="comment">// Returns None if the framework is valid.</span></div>
-<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>  <span class="comment">// Returns Error if the framework is invalid.</span></div>
-<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>  <span class="comment">// Returns Failure if authorization returns 'Failure'.</span></div>
-<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<Option<Error></a>> validate(</div>
-<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>  <span class="keyword">const</span> FrameworkInfo& frameworkInfo,</div>
-<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>  <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>& from);</div>
-<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span> };</div>
-<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span> </div>
-<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span> </div>
-<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span> <span class="keyword">inline</span> std::ostream& <a class="code" href="namespacemesos_1_1internal_1_1master.html#a222c724f5e238d743bb338c71016048d">operator<<</a>(</div>
-<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>  std::ostream& stream,</div>
-<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>  <span class="keyword">const</span> Framework& framework);</div>
-<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span> </div>
-<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span> </div>
-<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span> <span class="comment">// TODO(bmahler): Keeping the task and executor information in sync</span></div>
-<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span> <span class="comment">// across the Slave and Framework structs is error prone!</span></div>
-<div class="line"><a name="l02165"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html"> 2165</a></span> <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html">Framework</a></div>
-<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span> {</div>
-<div class="line"><a name="l02167"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65"> 2167</a></span>  <span class="keyword">enum</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65">State</a></div>
-<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>  {</div>
-<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>  <span class="comment">// Framework has never connected to this master. This implies the</span></div>
-<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>  <span class="comment">// master failed over and the framework has not yet re-registered,</span></div>
-<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>  <span class="comment">// but some framework state has been recovered from re-registering</span></div>
-<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>  <span class="comment">// agents that are running tasks for the framework.</span></div>
-<div class="line"><a name="l02173"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a2781c7e12fec2c505d95224df19bbea4"> 2173</a></span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a2781c7e12fec2c505d95224df19bbea4">RECOVERED</a>,</div>
-<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span> </div>
-<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>  <span class="comment">// Framework was previously connected to this master. A framework</span></div>
-<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>  <span class="comment">// becomes disconnected when there is a socket error.</span></div>
-<div class="line"><a name="l02177"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a52b99ab13cfb61a1ed4f78cc57f974f6"> 2177</a></span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a52b99ab13cfb61a1ed4f78cc57f974f6">DISCONNECTED</a>,</div>
-<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span> </div>
-<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>  <span class="comment">// The framework is connected but not active.</span></div>
-<div class="line"><a name="l02180"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a9564d46b6ef0e132e3856ac29e22b065"> 2180</a></span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a9564d46b6ef0e132e3856ac29e22b065">INACTIVE</a>,</div>
+<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>  <span class="comment">// Principals of authenticated frameworks/slaves keyed by PID.</span></div>
+<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>  <a class="code" href="classhashmap.html">hashmap<process::UPID, std::string></a> authenticated;</div>
+<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span> </div>
+<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>  int64_t nextFrameworkId; <span class="comment">// Used to give each framework a unique ID.</span></div>
+<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>  int64_t nextOfferId; <span class="comment">// Used to give each slot offer a unique ID.</span></div>
+<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>  int64_t nextSlaveId; <span class="comment">// Used to give each slave a unique ID.</span></div>
+<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span> </div>
+<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>  <span class="comment">// NOTE: It is safe to use a 'shared_ptr' because 'Metrics' is</span></div>
+<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>  <span class="comment">// thread safe.</span></div>
+<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>  <span class="comment">// TODO(dhamon): This does not need to be a shared_ptr. Metrics contains</span></div>
+<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>  <span class="comment">// copyable metric types only.</span></div>
+<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>  std::shared_ptr<Metrics> metrics;</div>
+<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span> </div>
+<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>  <span class="comment">// Gauge handlers.</span></div>
+<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>  <span class="keywordtype">double</span> _uptime_secs()</div>
+<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>  {</div>
+<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>  <span class="keywordflow">return</span> (<a class="code" href="classprocess_1_1Clock.html#a24ed3f746bb6b3ddb1c52dce5e0ecd38">process::Clock::now</a>() - startTime).secs();</div>
+<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>  }</div>
+<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span> </div>
+<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>  <span class="keywordtype">double</span> _elected()</div>
+<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>  {</div>
+<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>  <span class="keywordflow">return</span> elected() ? 1 : 0;</div>
+<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>  }</div>
+<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span> </div>
+<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>  <span class="keywordtype">double</span> _slaves_connected();</div>
+<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>  <span class="keywordtype">double</span> _slaves_disconnected();</div>
+<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>  <span class="keywordtype">double</span> _slaves_active();</div>
+<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>  <span class="keywordtype">double</span> _slaves_inactive();</div>
+<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>  <span class="keywordtype">double</span> _slaves_unreachable();</div>
+<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span> </div>
+<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>  <span class="keywordtype">double</span> _frameworks_connected();</div>
+<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>  <span class="keywordtype">double</span> _frameworks_disconnected();</div>
+<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>  <span class="keywordtype">double</span> _frameworks_active();</div>
+<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>  <span class="keywordtype">double</span> _frameworks_inactive();</div>
+<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span> </div>
+<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>  <span class="keywordtype">double</span> _outstanding_offers()</div>
+<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>  {</div>
+<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(offers.size());</div>
+<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>  }</div>
+<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span> </div>
+<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>  <span class="keywordtype">double</span> _event_queue_messages()</div>
+<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>  {</div>
+<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(eventCount<process::MessageEvent>());</div>
+<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>  }</div>
+<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span> </div>
+<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>  <span class="keywordtype">double</span> _event_queue_dispatches()</div>
+<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>  {</div>
+<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(eventCount<process::DispatchEvent>());</div>
+<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>  }</div>
+<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span> </div>
+<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>  <span class="keywordtype">double</span> _event_queue_http_requests()</div>
+<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>  {</div>
+<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(eventCount<process::HttpEvent>());</div>
+<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>  }</div>
+<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span> </div>
+<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>  <span class="keywordtype">double</span> _tasks_staging();</div>
+<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>  <span class="keywordtype">double</span> _tasks_starting();</div>
+<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>  <span class="keywordtype">double</span> _tasks_running();</div>
+<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>  <span class="keywordtype">double</span> _tasks_unreachable();</div>
+<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>  <span class="keywordtype">double</span> _tasks_killing();</div>
+<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span> </div>
+<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>  <span class="keywordtype">double</span> _resources_total(<span class="keyword">const</span> std::string& name);</div>
+<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>  <span class="keywordtype">double</span> _resources_used(<span class="keyword">const</span> std::string& name);</div>
+<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>  <span class="keywordtype">double</span> _resources_percent(<span class="keyword">const</span> std::string& name);</div>
+<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span> </div>
+<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>  <span class="keywordtype">double</span> _resources_revocable_total(<span class="keyword">const</span> std::string& name);</div>
+<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>  <span class="keywordtype">double</span> _resources_revocable_used(<span class="keyword">const</span> std::string& name);</div>
+<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>  <span class="keywordtype">double</span> _resources_revocable_percent(<span class="keyword">const</span> std::string& name);</div>
+<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span> </div>
+<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>  <a class="code" href="classprocess_1_1Time.html">process::Time</a> startTime; <span class="comment">// Start time used to calculate uptime.</span></div>
+<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span> </div>
+<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>  <a class="code" href="classOption.html">Option<process::Time></a> electedTime; <span class="comment">// Time when this master is elected.</span></div>
+<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span> </div>
+<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>  <span class="comment">// Validates the framework including authorization.</span></div>
+<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>  <span class="comment">// Returns None if the framework is valid.</span></div>
+<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>  <span class="comment">// Returns Error if the framework is invalid.</span></div>
+<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>  <span class="comment">// Returns Failure if authorization returns 'Failure'.</span></div>
+<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<Option<Error></a>> validate(</div>
+<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>  <span class="keyword">const</span> FrameworkInfo& frameworkInfo,</div>
+<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>  <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>& from);</div>
+<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span> };</div>
+<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span> </div>
+<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span> </div>
+<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span> <span class="keyword">inline</span> std::ostream& <a class="code" href="namespacemesos_1_1internal_1_1master.html#a222c724f5e238d743bb338c71016048d">operator<<</a>(</div>
+<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>  std::ostream& stream,</div>
+<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>  <span class="keyword">const</span> Framework& framework);</div>
+<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span> </div>
+<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span> </div>
+<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span> <span class="comment">// TODO(bmahler): Keeping the task and executor information in sync</span></div>
+<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span> <span class="comment">// across the Slave and Framework structs is error prone!</span></div>
+<div class="line"><a name="l02168"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html"> 2168</a></span> <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html">Framework</a></div>
+<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span> {</div>
+<div class="line"><a name="l02170"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65"> 2170</a></span>  <span class="keyword">enum</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65">State</a></div>
+<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>  {</div>
+<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>  <span class="comment">// Framework has never connected to this master. This implies the</span></div>
+<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>  <span class="comment">// master failed over and the framework has not yet re-registered,</span></div>
+<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>  <span class="comment">// but some framework state has been recovered from re-registering</span></div>
+<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>  <span class="comment">// agents that are running tasks for the framework.</span></div>
+<div class="line"><a name="l02176"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a2781c7e12fec2c505d95224df19bbea4"> 2176</a></span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a2781c7e12fec2c505d95224df19bbea4">RECOVERED</a>,</div>
+<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span> </div>
+<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>  <span class="comment">// Framework was previously connected to this master. A framework</span></div>
+<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>  <span class="comment">// becomes disconnected when there is a socket error.</span></div>
+<div class="line"><a name="l02180"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a52b99ab13cfb61a1ed4f78cc57f974f6"> 2180</a></span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a52b99ab13cfb61a1ed4f78cc57f974f6">DISCONNECTED</a>,</div>
<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span> </div>
-<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>  <span class="comment">// Framework is connected and eligible to receive offers. No</span></div>
-<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>  <span class="comment">// offers will be made to frameworks that are not active.</span></div>
-<div class="line"><a name="l02184"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a6228d0b8755323f0a5d2cf44863226d5"> 2184</a></span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a6228d0b8755323f0a5d2cf44863226d5">ACTIVE</a></div>
-<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>  };</div>
-<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span> </div>
-<div class="line"><a name="l02187"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a5ca92e3fadf6870a101d9bb811d4c3a5"> 2187</a></span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a5ca92e3fadf6870a101d9bb811d4c3a5">Framework</a>(<a class="code" href="classmesos_1_1internal_1_1master_1_1Master.html">Master</a>* <span class="keyword">const</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a3b912abb827bb20ef35d46b2388ae1f0">master</a>,</div>
-<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>  <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1master_1_1Flags.html">Flags</a>& masterFlags,</div>
-<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>  <span class="keyword">const</span> FrameworkInfo& <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#aaa84eaf9694ad355fdb76ff15818b295">info</a>,</div>
-<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>  <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>& _pid,</div>
-<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1Time.html">process::Time</a>& <a class="code" href="namespacecgroups_1_1blkio_1_1cfq.html#abe4d7d69fdf7ca70fb30c6cd34a953e4">time</a> = <a class="code" href="classprocess_1_1Clock.html#a24ed3f746bb6b3ddb1c52dce5e0ecd38">process::Clock::now</a>())</div>
-<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>  : <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html">Framework</a>(master, masterFlags, info, <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a6228d0b8755323f0a5d2cf44863226d5">ACTIVE</a>, <a class="code" href="namespacecgroups_1_1blkio_1_1cfq.html#abe4d7d69fdf7ca70fb30c6cd34a953e4">time</a>)</div>
-<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>  {</div>
-<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>  pid = _pid;</div>
-<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>  }</div>
-<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span> </div>
-<div class="line"><a name="l02197"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a71e5518db2bb5dea0ea30c62c8875233"> 2197</a></span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a71e5518db2bb5dea0ea30c62c8875233">Framework</a>(<a class="code" href="classmesos_1_1internal_1_1master_1_1Master.html">Master</a>* <span class="keyword">const</span> master,</div>
-<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>  <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1master_1_1Flags.html">Flags</a>& masterFlags,</div>
-<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>  <span class="keyword">const</span> FrameworkInfo& info,</div>
-<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>  <span class="keyword">const</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html">HttpConnection</a>& _http,</div>
-<div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1Time.html">process::Time</a>& <a class="code" href="namespacecgroups_1_1blkio_1_1cfq.html#abe4d7d69fdf7ca70fb30c6cd34a953e4">time</a> = <a class="code" href="classprocess_1_1Clock.html#a24ed3f746bb6b3ddb1c52dce5e0ecd38">process::Clock::now</a>())</div>
-<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>  : <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html">Framework</a>(master, masterFlags, info, <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a6228d0b8755323f0a5d2cf44863226d5">ACTIVE</a>, <a class="code" href="namespacecgroups_1_1blkio_1_1cfq.html#abe4d7d69fdf7ca70fb30c6cd34a953e4">time</a>)</div>
-<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>  {</div>
-<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a574beb521d564fcbbbce942e694d106c">http</a> = _http;</div>
-<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>  }</div>
-<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span> </div>
-<div class="line"><a name="l02207"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac3630efd25c454ceac2b96fb299f3db3"> 2207</a></span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac3630efd25c454ceac2b96fb299f3db3">Framework</a>(<a class="code" href="classmesos_1_1internal_1_1master_1_1Master.html">Master</a>* <span class="keyword">const</span> master,</div>
-<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>  <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1master_1_1Flags.html">Flags</a>& masterFlags,</div>
-<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>  <span class="keyword">const</span> FrameworkInfo& info)</div>
-<div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>  : <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html">Framework</a>(master, masterFlags, info, <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a2781c7e12fec2c505d95224df19bbea4">RECOVERED</a>, <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>::Time()) {}</div>
-<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span> </div>
-<div class="line"><a name="l02212"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a6831b8eaa6b3f35f823663c5e71bf591"> 2212</a></span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a6831b8eaa6b3f35f823663c5e71bf591">~Framework</a>()</div>
-<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>  {</div>
-<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>  <span class="keywordflow">if</span> (<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a574beb521d564fcbbbce942e694d106c">http</a>.isSome()) {</div>
-<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a54362f290514769903a61d7cd0d6506b">closeHttpConnection</a>();</div>
-<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>  }</div>
-<div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>  }</div>
-<div class="line"><a name="l02218"></a><span class="lineno"> 2218</span> </div>
-<div class="line"><a name="l02219"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a19891551770e3337ea6b9a16eae3d582"> 2219</a></span>  Task* <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a19891551770e3337ea6b9a16eae3d582">getTask</a>(<span class="keyword">const</span> TaskID& taskId)</div>
-<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>  {</div>
-<div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>  <span class="keywordflow">if</span> (tasks.count(taskId) > 0) {</div>
-<div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>  <span class="keywordflow">return</span> tasks[taskId];</div>
-<div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>  }</div>
-<div class="line"><a name="l02224"></a><span class="lineno"> 2224</span> </div>
-<div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>  }</div>
+<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>  <span class="comment">// The framework is connected but not active.</span></div>
+<div class="line"><a name="l02183"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a9564d46b6ef0e132e3856ac29e22b065"> 2183</a></span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a9564d46b6ef0e132e3856ac29e22b065">INACTIVE</a>,</div>
+<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span> </div>
+<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>  <span class="comment">// Framework is connected and eligible to receive offers. No</span></div>
+<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>  <span class="comment">// offers will be made to frameworks that are not active.</span></div>
+<div class="line"><a name="l02187"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a6228d0b8755323f0a5d2cf44863226d5"> 2187</a></span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a6228d0b8755323f0a5d2cf44863226d5">ACTIVE</a></div>
+<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>  };</div>
+<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span> </div>
+<div class="line"><a name="l02190"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a5ca92e3fadf6870a101d9bb811d4c3a5"> 2190</a></span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a5ca92e3fadf6870a101d9bb811d4c3a5">Framework</a>(<a class="code" href="classmesos_1_1internal_1_1master_1_1Master.html">Master</a>* <span class="keyword">const</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a3b912abb827bb20ef35d46b2388ae1f0">master</a>,</div>
+<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>  <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1master_1_1Flags.html">Flags</a>& masterFlags,</div>
+<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>  <span class="keyword">const</span> FrameworkInfo& <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#aaa84eaf9694ad355fdb76ff15818b295">info</a>,</div>
+<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>  <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>& _pid,</div>
+<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1Time.html">process::Time</a>& <a class="code" href="namespacecgroups_1_1blkio_1_1cfq.html#abe4d7d69fdf7ca70fb30c6cd34a953e4">time</a> = <a class="code" href="classprocess_1_1Clock.html#a24ed3f746bb6b3ddb1c52dce5e0ecd38">process::Clock::now</a>())</div>
+<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>  : <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html">Framework</a>(master, masterFlags, info, <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a6228d0b8755323f0a5d2cf44863226d5">ACTIVE</a>, <a class="code" href="namespacecgroups_1_1blkio_1_1cfq.html#abe4d7d69fdf7ca70fb30c6cd34a953e4">time</a>)</div>
+<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>  {</div>
+<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>  pid = _pid;</div>
+<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>  }</div>
+<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span> </div>
+<div class="line"><a name="l02200"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a71e5518db2bb5dea0ea30c62c8875233"> 2200</a></span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a71e5518db2bb5dea0ea30c62c8875233">Framework</a>(<a class="code" href="classmesos_1_1internal_1_1master_1_1Master.html">Master</a>* <span class="keyword">const</span> master,</div>
+<div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>  <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1master_1_1Flags.html">Flags</a>& masterFlags,</div>
+<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>  <span class="keyword">const</span> FrameworkInfo& info,</div>
+<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>  <span class="keyword">const</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html">HttpConnection</a>& _http,</div>
+<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1Time.html">process::Time</a>& <a class="code" href="namespacecgroups_1_1blkio_1_1cfq.html#abe4d7d69fdf7ca70fb30c6cd34a953e4">time</a> = <a class="code" href="classprocess_1_1Clock.html#a24ed3f746bb6b3ddb1c52dce5e0ecd38">process::Clock::now</a>())</div>
+<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>  : <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html">Framework</a>(master, masterFlags, info, <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a6228d0b8755323f0a5d2cf44863226d5">ACTIVE</a>, <a class="code" href="namespacecgroups_1_1blkio_1_1cfq.html#abe4d7d69fdf7ca70fb30c6cd34a953e4">time</a>)</div>
+<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>  {</div>
+<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a574beb521d564fcbbbce942e694d106c">http</a> = _http;</div>
+<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>  }</div>
+<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span> </div>
+<div class="line"><a name="l02210"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac3630efd25c454ceac2b96fb299f3db3"> 2210</a></span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac3630efd25c454ceac2b96fb299f3db3">Framework</a>(<a class="code" href="classmesos_1_1internal_1_1master_1_1Master.html">Master</a>* <span class="keyword">const</span> master,</div>
+<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>  <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1master_1_1Flags.html">Flags</a>& masterFlags,</div>
+<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>  <span class="keyword">const</span> FrameworkInfo& info)</div>
+<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>  : <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html">Framework</a>(master, masterFlags, info, <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65a2781c7e12fec2c505d95224df19bbea4">RECOVERED</a>, <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>::Time()) {}</div>
+<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span> </div>
+<div class="line"><a name="l02215"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a6831b8eaa6b3f35f823663c5e71bf591"> 2215</a></span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a6831b8eaa6b3f35f823663c5e71bf591">~Framework</a>()</div>
+<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>  {</div>
+<div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>  <span class="keywordflow">if</span> (<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a574beb521d564fcbbbce942e694d106c">http</a>.isSome()) {</div>
+<div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a54362f290514769903a61d7cd0d6506b">closeHttpConnection</a>();</div>
+<div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>  }</div>
+<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>  }</div>
+<div class="line"><a name="l02221"></a><span class="lineno"> 2221</span> </div>
+<div class="line"><a name="l02222"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a19891551770e3337ea6b9a16eae3d582"> 2222</a></span>  Task* <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a19891551770e3337ea6b9a16eae3d582">getTask</a>(<span class="keyword">const</span> TaskID& taskId)</div>
+<div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>  {</div>
+<div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>  <span class="keywordflow">if</span> (tasks.count(taskId) > 0) {</div>
+<div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>  <span class="keywordflow">return</span> tasks[taskId];</div>
+<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>  }</div>
<div class="line"><a name="l02227"></a><span class="lineno"> 2227</span> </div>
-<div class="line"><a name="l02228"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a4d9a5a8184f84befc507e33d0fd8750a"> 2228</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a4d9a5a8184f84befc507e33d0fd8750a">addTask</a>(Task* task)</div>
-<div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>  {</div>
-<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>  CHECK(!tasks.contains(task->task_id()))</div>
-<div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>  << <span class="stringliteral">"Duplicate task "</span> << task->task_id()</div>
-<div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>  << <span class="stringliteral">" of framework "</span> << task->framework_id();</div>
-<div class="line"><a name="l02233"></a><span class="lineno"> 2233</span> </div>
-<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>  <span class="comment">// Verify that Resource.AllocationInfo is set,</span></div>
-<div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>  <span class="comment">// this should be guaranteed by the master.</span></div>
-<div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> Resource& resource, task->resources()) {</div>
-<div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>  CHECK(resource.has_allocation_info());</div>
-<div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>  }</div>
-<div class="line"><a name="l02239"></a><span class="lineno"> 2239</span> </div>
-<div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>  tasks[task->task_id()] = task;</div>
-<div class="line"><a name="l02241"></a><span class="lineno"> 2241</span> </div>
-<div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>  <span class="comment">// Unreachable tasks should be added via `addUnreachableTask`.</span></div>
-<div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>  CHECK(task->state() != TASK_UNREACHABLE)</div>
-<div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>  << <span class="stringliteral">"Task '"</span> << task->task_id() << <span class="stringliteral">"' of framework "</span> << <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac971d54c3567de6411c6aa7e998c5417">id</a>()</div>
-<div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>  << <span class="stringliteral">" added in TASK_UNREACHABLE state"</span>;</div>
-<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span> </div>
-<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>  <span class="comment">// Since we track terminal but unacknowledged tasks within</span></div>
-<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>  <span class="comment">// `tasks` rather than `completedTasks`, we need to handle</span></div>
-<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>  <span class="comment">// them here: don't count them as consuming resources.</span></div>
-<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>  <span class="comment">// TODO(bmahler): Users currently get confused because</span></div>
-<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>  <span class="comment">// terminal tasks can show up as "active" tasks in the UI and</span></div>
-<div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>  <span class="comment">// endpoints. Ideally, we show the terminal unacknowledged</span></div>
-<div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>  <span class="comment">// tasks as "completed" as well.</span></div>
-<div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespacemesos_1_1internal_1_1protobuf.html#aa31907fb62769822a77c06ffbf10451f">protobuf::isTerminalState</a>(task->state())) {</div>
-<div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>  <span class="comment">// Note that we explicitly convert from protobuf to `Resources` once</span></div>
-<div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>  <span class="comment">// and then use the result for calculations to avoid performance penalty</span></div>
-<div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>  <span class="comment">// for multiple conversions and validations implied by `+=` with protobuf</span></div>
-<div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>  <span class="comment">// arguments.</span></div>
-<div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>  <span class="comment">// Conversion is safe, as resources have already passed validation.</span></div>
-<div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>  <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a> resources = task->resources();</div>
-<div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a35847f2388d25e0cb9b3a9d0a722fbdd">totalUsedResources</a> += resources;</div>
-<div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>[task->slave_id()] += resources;</div>
-<div class="line"><a name="l02264"></a><span class="lineno"> 2264</span> </div>
-<div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>  <span class="comment">// It's possible that we're not tracking the task's role for</span></div>
-<div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>  <span class="comment">// this framework if the role is absent from the framework's</span></div>
-<div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>  <span class="comment">// set of roles. In this case, we track the role's allocation</span></div>
-<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>  <span class="comment">// for this framework.</span></div>
-<div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>  CHECK(!task->resources().empty());</div>
-<div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>  <span class="keyword">const</span> std::string& role =</div>
-<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>  task->resources().begin()->allocation_info().role();</div>
-<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span> </div>
-<div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>  <span class="keywordflow">if</span> (!<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a614fb3ba127133b939e2a733c6ecbf2a">isTrackedUnderRole</a>(role)) {</div>
-<div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#afa185682905163563412aa1915e612c8">trackUnderRole</a>(role);</div>
-<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>  }</div>
-<div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>  }</div>
-<div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>  }</div>
-<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span> </div>
-<div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>  <span class="comment">// Update framework to recover the resources that were previously</span></div>
-<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>  <span class="comment">// being used by `task`.</span></div>
-<div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>  <span class="comment">// TODO(bmahler): This is a hack for performance. We need to</span></div>
-<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>  <span class="comment">// maintain resource counters because computing task resources</span></div>
-<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>  <span class="comment">// functionally for all tasks is expensive, for now.</span></div>
-<div class="line"><a name="l02285"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#af14287bdb6466ca003b6e5e6a37ae02a"> 2285</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#af14287bdb6466ca003b6e5e6a37ae02a">recoverResources</a>(Task* task)</div>
-<div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>  {</div>
-<div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>  CHECK(tasks.contains(task->task_id()))</div>
-<div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>  << <span class="stringliteral">"Unknown task "</span> << task->task_id()</div>
-<div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>  << <span class="stringliteral">" of framework "</span> << task->framework_id();</div>
-<div class="line"><a name="l02290"></a><span class="lineno"> 2290</span> </div>
-<div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a35847f2388d25e0cb9b3a9d0a722fbdd">totalUsedResources</a> -= task->resources();</div>
-<div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>[task->slave_id()] -= task->resources();</div>
-<div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>  <span class="keywordflow">if</span> (<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>[task->slave_id()].empty()) {</div>
-<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>.erase(task->slave_id());</div>
-<div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>  }</div>
-<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span> </div>
-<div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>  <span class="comment">// If we are no longer subscribed to the role to which these resources are</span></div>
-<div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>  <span class="comment">// being returned to, and we have no more resources allocated to us for that</span></div>
-<div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>  <span class="comment">// role, stop tracking the framework under the role.</span></div>
-<div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>  CHECK(!task->resources().empty());</div>
-<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>  <span class="keyword">const</span> std::string& role =</div>
-<div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>  task->resources().begin()->allocation_info().role();</div>
-<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span> </div>
-<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>  <span class="keyword">auto</span> allocatedToRole = [&role](<span class="keyword">const</span> Resource& resource) {</div>
-<div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>  <span class="keywordflow">return</span> resource.allocation_info().role() == role;</div>
-<div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>  };</div>
-<div class="line"><a name="l02307"></a><span class="lineno"> 2307</span> </div>
-<div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>  <span class="keywordflow">if</span> (<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a2d8cbc0dbd23317d8194398a3810a5b5">roles</a>.count(role) == 0 &&</div>
-<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a35847f2388d25e0cb9b3a9d0a722fbdd">totalUsedResources</a>.<a class="code" href="classmesos_1_1Resources.html#a62ae547c0d24fdfb139549e9b8126fdf">filter</a>(allocatedToRole).<a class="code" href="classmesos_1_1Resources.html#ab46b900ebe62b19390d9a2a82b46eb15">empty</a>()) {</div>
-<div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>  CHECK(<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a965f66810b71a0d2bab683fee1b6a9b6">totalOfferedResources</a>.<a class="code" href="classmesos_1_1Resources.html#a62ae547c0d24fdfb139549e9b8126fdf">filter</a>(allocatedToRole).<a class="code" href="classmesos_1_1Resources.html#ab46b900ebe62b19390d9a2a82b46eb15">empty</a>());</div>
-<div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a3edaf411ec6e409a3f8b2a77988ef65a">untrackUnderRole</a>(role);</div>
-<div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>  }</div>
-<div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>  }</div>
-<div class="line"><a name="l02314"></a><span class="lineno"> 2314</span> </div>
-<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>  <span class="comment">// Sends a message to the connected framework.</span></div>
-<div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> Message></div>
-<div class="line"><a name="l02317"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a71665f49a1e06ef4606f7eaae4c43669"> 2317</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a71665f49a1e06ef4606f7eaae4c43669">send</a>(<span class="keyword">const</span> Message& message)</div>
-<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>  {</div>
-<div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>  <span class="keywordflow">if</span> (!<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ab741aebff99e28269136e04ab76800fa">connected</a>()) {</div>
-<div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>  LOG(WARNING) << <span class="stringliteral">"Master attempted to send message to disconnected"</span></div>
-<div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>  << <span class="stringliteral">" framework "</span> << *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>  }</div>
+<div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>  }</div>
+<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span> </div>
+<div class="line"><a name="l02231"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a4d9a5a8184f84befc507e33d0fd8750a"> 2231</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a4d9a5a8184f84befc507e33d0fd8750a">addTask</a>(Task* task)</div>
+<div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>  {</div>
+<div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>  CHECK(!tasks.contains(task->task_id()))</div>
+<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>  << <span class="stringliteral">"Duplicate task "</span> << task->task_id()</div>
+<div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>  << <span class="stringliteral">" of framework "</span> << task->framework_id();</div>
+<div class="line"><a
<TRUNCATED>