<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.7.0_131) on Wed Mar 29 10:24:16 UTC 2017 -->
<title>Protos.InverseOfferOrBuilder</title>
<meta name="date" content="2017-03-29">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="Protos.InverseOfferOrBuilder";
        }
    }
    catch(err) {
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../org/apache/mesos/package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../org/apache/mesos/Protos.InverseOffer.Builder.html" title="class in org.apache.mesos"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../org/apache/mesos/Protos.IpStatistics.html" title="class in org.apache.mesos"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/apache/mesos/Protos.InverseOfferOrBuilder.html" target="_top">Frames</a></li>
<li><a href="Protos.InverseOfferOrBuilder.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.mesos</div>
<h2 title="Interface Protos.InverseOfferOrBuilder" class="title">Interface Protos.InverseOfferOrBuilder</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../org/apache/mesos/Protos.InverseOffer.html" title="class in org.apache.mesos">Protos.InverseOffer</a>, <a href="../../../org/apache/mesos/Protos.InverseOffer.Builder.html" title="class in org.apache.mesos">Protos.InverseOffer.Builder</a></dd>
</dl>
<dl>
<dt>Enclosing class:</dt>
<dd><a href="../../../org/apache/mesos/Protos.html" title="class in org.apache.mesos">Protos</a></dd>
</dl>
<hr>
<br>
<pre>public static interface <span class="strong">Protos.InverseOfferOrBuilder</span></pre>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../org/apache/mesos/Protos.FrameworkID.html" title="class in org.apache.mesos">Protos.FrameworkID</a></code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Protos.InverseOfferOrBuilder.html#getFrameworkId()">getFrameworkId</a></strong>()</code>
<div class="block"><code>required .mesos.FrameworkID framework_id = 3;</code></div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../org/apache/mesos/Protos.FrameworkIDOrBuilder.html" title="interface in org.apache.mesos">Protos.FrameworkIDOrBuilder</a></code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Protos.InverseOfferOrBuilder.html#getFrameworkIdOrBuilder()">getFrameworkIdOrBuilder</a></strong>()</code>
<div class="block"><code>required .mesos.FrameworkID framework_id = 3;</code></div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../org/apache/mesos/Protos.OfferID.html" title="class in org.apache.mesos">Protos.OfferID</a></code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Protos.InverseOfferOrBuilder.html#getId()">getId</a></strong>()</code>
<div class="block"><code>required .mesos.OfferID id = 1;</code></div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../org/apache/mesos/Protos.OfferIDOrBuilder.html" title="interface in org.apache.mesos">Protos.OfferIDOrBuilder</a></code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Protos.InverseOfferOrBuilder.html#getIdOrBuilder()">getIdOrBuilder</a></strong>()</code>
<div class="block"><code>required .mesos.OfferID id = 1;</code></div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../org/apache/mesos/Protos.Resource.html" title="class in org.apache.mesos">Protos.Resource</a></code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Protos.InverseOfferOrBuilder.html#getResources(int)">getResources</a></strong>(int&nbsp;index)</code>
<div class="block"><code>repeated .mesos.Resource resources = 6;</code></div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Protos.InverseOfferOrBuilder.html#getResourcesCount()">getResourcesCount</a></strong>()</code>
<div class="block"><code>repeated .mesos.Resource resources = 6;</code></div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.util.List&lt;<a href="../../../org/apache/mesos/Protos.Resource.html" title="class in org.apache.mesos">Protos.Resource</a>&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Protos.InverseOfferOrBuilder.html#getResourcesList()">getResourcesList</a></strong>()</code>
<div class="block"><code>repeated .mesos.Resource resources = 6;</code></div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../org/apache/mesos/Protos.ResourceOrBuilder.html" title="interface in org.apache.mesos">Protos.ResourceOrBuilder</a></code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Protos.InverseOfferOrBuilder.html#getResourcesOrBuilder(int)">getResourcesOrBuilder</a></strong>(int&nbsp;index)</code>
<div class="block"><code>repeated .mesos.Resource resources = 6;</code></div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.util.List&lt;? extends <a href="../../../org/apache/mesos/Protos.ResourceOrBuilder.html" title="interface in org.apache.mesos">Protos.ResourceOrBuilder</a>&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Protos.InverseOfferOrBuilder.html#getResourcesOrBuilderList()">getResourcesOrBuilderList</a></strong>()</code>
<div class="block"><code>repeated .mesos.Resource resources = 6;</code></div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../org/apache/mesos/Protos.SlaveID.html" title="class in org.apache.mesos">Protos.SlaveID</a></code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Protos.InverseOfferOrBuilder.html#getSlaveId()">getSlaveId</a></strong>()</code>
<div class="block"><code>optional .mesos.SlaveID slave_id = 4;</code></div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../org/apache/mesos/Protos.SlaveIDOrBuilder.html" title="interface in org.apache.mesos">Protos.SlaveIDOrBuilder</a></code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Protos.InverseOfferOrBuilder.html#getSlaveIdOrBuilder()">getSlaveIdOrBuilder</a></strong>()</code>
<div class="block"><code>optional .mesos.SlaveID slave_id = 4;</code></div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../org/apache/mesos/Protos.Unavailability.html" title="class in org.apache.mesos">Protos.Unavailability</a></code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Protos.InverseOfferOrBuilder.html#getUnavailability()">getUnavailability</a></strong>()</code>
<div class="block"><code>required .mesos.Unavailability unavailability = 5;</code></div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../org/apache/mesos/Protos.UnavailabilityOrBuilder.html" title="interface in org.apache.mesos">Protos.UnavailabilityOrBuilder</a></code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Protos.InverseOfferOrBuilder.html#getUnavailabilityOrBuilder()">getUnavailabilityOrBuilder</a></strong>()</code>
<div class="block"><code>required .mesos.Unavailability unavailability = 5;</code></div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../org/apache/mesos/Protos.URL.html" title="class in org.apache.mesos">Protos.URL</a></code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Protos.InverseOfferOrBuilder.html#getUrl()">getUrl</a></strong>()</code>
<div class="block"><code>optional .mesos.URL url = 2;</code></div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../org/apache/mesos/Protos.URLOrBuilder.html" title="interface in org.apache.mesos">Protos.URLOrBuilder</a></code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Protos.InverseOfferOrBuilder.html#getUrlOrBuilder()">getUrlOrBuilder</a></strong>()</code>
<div class="block"><code>optional .mesos.URL url = 2;</code></div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Protos.InverseOfferOrBuilder.html#hasFrameworkId()">hasFrameworkId</a></strong>()</code>
<div class="block"><code>required .mesos.FrameworkID framework_id = 3;</code></div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Protos.InverseOfferOrBuilder.html#hasId()">hasId</a></strong>()</code>
<div class="block"><code>required .mesos.OfferID id = 1;</code></div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Protos.InverseOfferOrBuilder.html#hasSlaveId()">hasSlaveId</a></strong>()</code>
<div class="block"><code>optional .mesos.SlaveID slave_id = 4;</code></div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Protos.InverseOfferOrBuilder.html#hasUnavailability()">hasUnavailability</a></strong>()</code>
<div class="block"><code>required .mesos.Unavailability unavailability = 5;</code></div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Protos.InverseOfferOrBuilder.html#hasUrl()">hasUrl</a></strong>()</code>
<div class="block"><code>optional .mesos.URL url = 2;</code></div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="hasId()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasId</h4>
<pre>boolean&nbsp;hasId()</pre>
<div class="block"><code>required .mesos.OfferID id = 1;</code>

 <pre>
 This is the same OfferID as found in normal offers, which allows
 re-use of some of the OfferID-only messages.
 </pre></div>
</li>
</ul>
<a name="getId()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getId</h4>
<pre><a href="../../../org/apache/mesos/Protos.OfferID.html" title="class in org.apache.mesos">Protos.OfferID</a>&nbsp;getId()</pre>
<div class="block"><code>required .mesos.OfferID id = 1;</code>

 <pre>
 This is the same OfferID as found in normal offers, which allows
 re-use of some of the OfferID-only messages.
 </pre></div>
</li>
</ul>
<a name="getIdOrBuilder()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getIdOrBuilder</h4>
<pre><a href="../../../org/apache/mesos/Protos.OfferIDOrBuilder.html" title="interface in org.apache.mesos">Protos.OfferIDOrBuilder</a>&nbsp;getIdOrBuilder()</pre>
<div class="block"><code>required .mesos.OfferID id = 1;</code>

 <pre>
 This is the same OfferID as found in normal offers, which allows
 re-use of some of the OfferID-only messages.
 </pre></div>
</li>
</ul>
<a name="hasUrl()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasUrl</h4>
<pre>boolean&nbsp;hasUrl()</pre>
<div class="block"><code>optional .mesos.URL url = 2;</code>

 <pre>
 URL for reaching the slave running on the host.  This enables some
 optimizations as described in MESOS-3012, such as allowing the
 scheduler driver to bypass the master and talk directly with a slave.
 </pre></div>
</li>
</ul>
<a name="getUrl()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getUrl</h4>
<pre><a href="../../../org/apache/mesos/Protos.URL.html" title="class in org.apache.mesos">Protos.URL</a>&nbsp;getUrl()</pre>
<div class="block"><code>optional .mesos.URL url = 2;</code>

 <pre>
 URL for reaching the slave running on the host.  This enables some
 optimizations as described in MESOS-3012, such as allowing the
 scheduler driver to bypass the master and talk directly with a slave.
 </pre></div>
</li>
</ul>
<a name="getUrlOrBuilder()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getUrlOrBuilder</h4>
<pre><a href="../../../org/apache/mesos/Protos.URLOrBuilder.html" title="interface in org.apache.mesos">Protos.URLOrBuilder</a>&nbsp;getUrlOrBuilder()</pre>
<div class="block"><code>optional .mesos.URL url = 2;</code>

 <pre>
 URL for reaching the slave running on the host.  This enables some
 optimizations as described in MESOS-3012, such as allowing the
 scheduler driver to bypass the master and talk directly with a slave.
 </pre></div>
</li>
</ul>
<a name="hasFrameworkId()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasFrameworkId</h4>
<pre>boolean&nbsp;hasFrameworkId()</pre>
<div class="block"><code>required .mesos.FrameworkID framework_id = 3;</code>

 <pre>
 The framework that should release its resources.
 If no specifics are provided (i.e. which slave), all the framework's
 resources are requested back.
 </pre></div>
</li>
</ul>
<a name="getFrameworkId()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFrameworkId</h4>
<pre><a href="../../../org/apache/mesos/Protos.FrameworkID.html" title="class in org.apache.mesos">Protos.FrameworkID</a>&nbsp;getFrameworkId()</pre>
<div class="block"><code>required .mesos.FrameworkID framework_id = 3;</code>

 <pre>
 The framework that should release its resources.
 If no specifics are provided (i.e. which slave), all the framework's
 resources are requested back.
 </pre></div>
</li>
</ul>
<a name="getFrameworkIdOrBuilder()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFrameworkIdOrBuilder</h4>
<pre><a href="../../../org/apache/mesos/Protos.FrameworkIDOrBuilder.html" title="interface in org.apache.mesos">Protos.FrameworkIDOrBuilder</a>&nbsp;getFrameworkIdOrBuilder()</pre>
<div class="block"><code>required .mesos.FrameworkID framework_id = 3;</code>

 <pre>
 The framework that should release its resources.
 If no specifics are provided (i.e. which slave), all the framework's
 resources are requested back.
 </pre></div>
</li>
</ul>
<a name="hasSlaveId()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasSlaveId</h4>
<pre>boolean&nbsp;hasSlaveId()</pre>
<div class="block"><code>optional .mesos.SlaveID slave_id = 4;</code>

 <pre>
 Specified if the resources need to be released from a particular slave.
 All the framework's resources on this slave are requested back,
 unless further qualified by the `resources` field.
 </pre></div>
</li>
</ul>
<a name="getSlaveId()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSlaveId</h4>
<pre><a href="../../../org/apache/mesos/Protos.SlaveID.html" title="class in org.apache.mesos">Protos.SlaveID</a>&nbsp;getSlaveId()</pre>
<div class="block"><code>optional .mesos.SlaveID slave_id = 4;</code>

 <pre>
 Specified if the resources need to be released from a particular slave.
 All the framework's resources on this slave are requested back,
 unless further qualified by the `resources` field.
 </pre></div>
</li>
</ul>
<a name="getSlaveIdOrBuilder()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSlaveIdOrBuilder</h4>
<pre><a href="../../../org/apache/mesos/Protos.SlaveIDOrBuilder.html" title="interface in org.apache.mesos">Protos.SlaveIDOrBuilder</a>&nbsp;getSlaveIdOrBuilder()</pre>
<div class="block"><code>optional .mesos.SlaveID slave_id = 4;</code>

 <pre>
 Specified if the resources need to be released from a particular slave.
 All the framework's resources on this slave are requested back,
 unless further qualified by the `resources` field.
 </pre></div>
</li>
</ul>
<a name="hasUnavailability()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasUnavailability</h4>
<pre>boolean&nbsp;hasUnavailability()</pre>
<div class="block"><code>required .mesos.Unavailability unavailability = 5;</code>

 <pre>
 This InverseOffer represents a planned unavailability event in the
 specified interval.  Any tasks running on the given framework or slave
 may be killed when the interval arrives.  Therefore, frameworks should
 aim to gracefully terminate tasks prior to the arrival of the interval.
 For reserved resources, the resources are expected to be returned to the
 framework after the unavailability interval.  This is an expectation,
 not a guarantee.  For example, if the unavailability duration is not set,
 the resources may be removed permanently.
 For other resources, there is no guarantee that requested resources will
 be returned after the unavailability interval.  The allocator has no
 obligation to re-offer these resources to the prior framework after
 the unavailability.
 </pre></div>
</li>
</ul>
<a name="getUnavailability()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getUnavailability</h4>
<pre><a href="../../../org/apache/mesos/Protos.Unavailability.html" title="class in org.apache.mesos">Protos.Unavailability</a>&nbsp;getUnavailability()</pre>
<div class="block"><code>required .mesos.Unavailability unavailability = 5;</code>

 <pre>
 This InverseOffer represents a planned unavailability event in the
 specified interval.  Any tasks running on the given framework or slave
 may be killed when the interval arrives.  Therefore, frameworks should
 aim to gracefully terminate tasks prior to the arrival of the interval.
 For reserved resources, the resources are expected to be returned to the
 framework after the unavailability interval.  This is an expectation,
 not a guarantee.  For example, if the unavailability duration is not set,
 the resources may be removed permanently.
 For other resources, there is no guarantee that requested resources will
 be returned after the unavailability interval.  The allocator has no
 obligation to re-offer these resources to the prior framework after
 the unavailability.
 </pre></div>
</li>
</ul>
<a name="getUnavailabilityOrBuilder()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getUnavailabilityOrBuilder</h4>
<pre><a href="../../../org/apache/mesos/Protos.UnavailabilityOrBuilder.html" title="interface in org.apache.mesos">Protos.UnavailabilityOrBuilder</a>&nbsp;getUnavailabilityOrBuilder()</pre>
<div class="block"><code>required .mesos.Unavailability unavailability = 5;</code>

 <pre>
 This InverseOffer represents a planned unavailability event in the
 specified interval.  Any tasks running on the given framework or slave
 may be killed when the interval arrives.  Therefore, frameworks should
 aim to gracefully terminate tasks prior to the arrival of the interval.
 For reserved resources, the resources are expected to be returned to the
 framework after the unavailability interval.  This is an expectation,
 not a guarantee.  For example, if the unavailability duration is not set,
 the resources may be removed permanently.
 For other resources, there is no guarantee that requested resources will
 be returned after the unavailability interval.  The allocator has no
 obligation to re-offer these resources to the prior framework after
 the unavailability.
 </pre></div>
</li>
</ul>
<a name="getResourcesList()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getResourcesList</h4>
<pre>java.util.List&lt;<a href="../../../org/apache/mesos/Protos.Resource.html" title="class in org.apache.mesos">Protos.Resource</a>&gt;&nbsp;getResourcesList()</pre>
<div class="block"><code>repeated .mesos.Resource resources = 6;</code>

 <pre>
 A list of resources being requested back from the framework,
 on the slave identified by `slave_id`.  If no resources are specified
 then all resources are being requested back.  For the purpose of
 maintenance, this field is always empty (maintenance always requests
 all resources back).
 </pre></div>
</li>
</ul>
<a name="getResources(int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getResources</h4>
<pre><a href="../../../org/apache/mesos/Protos.Resource.html" title="class in org.apache.mesos">Protos.Resource</a>&nbsp;getResources(int&nbsp;index)</pre>
<div class="block"><code>repeated .mesos.Resource resources = 6;</code>

 <pre>
 A list of resources being requested back from the framework,
 on the slave identified by `slave_id`.  If no resources are specified
 then all resources are being requested back.  For the purpose of
 maintenance, this field is always empty (maintenance always requests
 all resources back).
 </pre></div>
</li>
</ul>
<a name="getResourcesCount()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getResourcesCount</h4>
<pre>int&nbsp;getResourcesCount()</pre>
<div class="block"><code>repeated .mesos.Resource resources = 6;</code>

 <pre>
 A list of resources being requested back from the framework,
 on the slave identified by `slave_id`.  If no resources are specified
 then all resources are being requested back.  For the purpose of
 maintenance, this field is always empty (maintenance always requests
 all resources back).
 </pre></div>
</li>
</ul>
<a name="getResourcesOrBuilderList()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getResourcesOrBuilderList</h4>
<pre>java.util.List&lt;? extends <a href="../../../org/apache/mesos/Protos.ResourceOrBuilder.html" title="interface in org.apache.mesos">Protos.ResourceOrBuilder</a>&gt;&nbsp;getResourcesOrBuilderList()</pre>
<div class="block"><code>repeated .mesos.Resource resources = 6;</code>

 <pre>
 A list of resources being requested back from the framework,
 on the slave identified by `slave_id`.  If no resources are specified
 then all resources are being requested back.  For the purpose of
 maintenance, this field is always empty (maintenance always requests
 all resources back).
 </pre></div>
</li>
</ul>
<a name="getResourcesOrBuilder(int)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getResourcesOrBuilder</h4>
<pre><a href="../../../org/apache/mesos/Protos.ResourceOrBuilder.html" title="interface in org.apache.mesos">Protos.ResourceOrBuilder</a>&nbsp;getResourcesOrBuilder(int&nbsp;index)</pre>
<div class="block"><code>repeated .mesos.Resource resources = 6;</code>

 <pre>
 A list of resources being requested back from the framework,
 on the slave identified by `slave_id`.  If no resources are specified
 then all resources are being requested back.  For the purpose of
 maintenance, this field is always empty (maintenance always requests
 all resources back).
 </pre></div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../org/apache/mesos/package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../org/apache/mesos/Protos.InverseOffer.Builder.html" title="class in org.apache.mesos"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../org/apache/mesos/Protos.IpStatistics.html" title="class in org.apache.mesos"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/apache/mesos/Protos.InverseOfferOrBuilder.html" target="_top">Frames</a></li>
<li><a href="Protos.InverseOfferOrBuilder.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
