<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.15"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Apache Geode Native C++ Reference: apache::geode::client::Execution Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(initResizable);
/* @license-end */</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Apache Geode Native C++ Reference
   &#160;<span id="projectnumber">1.13.1</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('a00727.html','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a>  </div>
  <div class="headertitle">
<div class="title">apache::geode::client::Execution Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>gathers results from function execution  
 <a href="a00727.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aa918a5e193745950e12ca4feb9c5d776"><td class="memItemLeft" align="right" valign="top">std::shared_ptr&lt; <a class="el" href="a00843.html">ResultCollector</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00727.html#aa918a5e193745950e12ca4feb9c5d776">execute</a> (const std::string &amp;func, std::chrono::milliseconds timeout=DEFAULT_QUERY_RESPONSE_TIMEOUT)</td></tr>
<tr class="memdesc:aa918a5e193745950e12ca4feb9c5d776"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes the function using its name.  <a href="#aa918a5e193745950e12ca4feb9c5d776">More...</a><br /></td></tr>
<tr class="separator:aa918a5e193745950e12ca4feb9c5d776"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a242a1fd7edad1b11e4298abe6bd3a599"><td class="memItemLeft" align="right" valign="top">std::shared_ptr&lt; <a class="el" href="a00843.html">ResultCollector</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00727.html#a242a1fd7edad1b11e4298abe6bd3a599">execute</a> (const std::shared_ptr&lt; <a class="el" href="a00291.html">CacheableVector</a> &gt; &amp;routingObj, const std::shared_ptr&lt; <a class="el" href="a00855.html">Cacheable</a> &gt; &amp;args, const std::shared_ptr&lt; <a class="el" href="a00843.html">ResultCollector</a> &gt; &amp;rs, const std::string &amp;func, std::chrono::milliseconds timeout)</td></tr>
<tr class="memdesc:a242a1fd7edad1b11e4298abe6bd3a599"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes the function using its name.  <a href="#a242a1fd7edad1b11e4298abe6bd3a599">More...</a><br /></td></tr>
<tr class="separator:a242a1fd7edad1b11e4298abe6bd3a599"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c9ebcd10caff19754531539e2a8a7a8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00727.html">Execution</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00727.html#a3c9ebcd10caff19754531539e2a8a7a8">withArgs</a> (std::shared_ptr&lt; <a class="el" href="a00855.html">Cacheable</a> &gt; args)</td></tr>
<tr class="memdesc:a3c9ebcd10caff19754531539e2a8a7a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specifies the user data passed to the function when it is executed.  <a href="#a3c9ebcd10caff19754531539e2a8a7a8">More...</a><br /></td></tr>
<tr class="separator:a3c9ebcd10caff19754531539e2a8a7a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a48ac4169d9d125b19d8d9abbffd91f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00727.html">Execution</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00727.html#a7a48ac4169d9d125b19d8d9abbffd91f">withCollector</a> (std::shared_ptr&lt; <a class="el" href="a00843.html">ResultCollector</a> &gt; rs)</td></tr>
<tr class="memdesc:a7a48ac4169d9d125b19d8d9abbffd91f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specifies the <a class="el" href="a00843.html">ResultCollector</a> that will receive the results after the function has been executed.  <a href="#a7a48ac4169d9d125b19d8d9abbffd91f">More...</a><br /></td></tr>
<tr class="separator:a7a48ac4169d9d125b19d8d9abbffd91f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acedb102777277fb9f82e47a4da449a25"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00727.html">Execution</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00727.html#acedb102777277fb9f82e47a4da449a25">withFilter</a> (std::shared_ptr&lt; <a class="el" href="a00291.html">CacheableVector</a> &gt; routingObj)</td></tr>
<tr class="memdesc:acedb102777277fb9f82e47a4da449a25"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specifies a data filter of routing objects for selecting the Geode members to execute the function.  <a href="#acedb102777277fb9f82e47a4da449a25">More...</a><br /></td></tr>
<tr class="separator:acedb102777277fb9f82e47a4da449a25"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>gathers results from function execution </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00739.html" title="entry point for function execution">FunctionService</a> </dd></dl>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="aa918a5e193745950e12ca4feb9c5d776"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa918a5e193745950e12ca4feb9c5d776">&#9670;&nbsp;</a></span>execute() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::shared_ptr&lt;<a class="el" href="a00843.html">ResultCollector</a>&gt; apache::geode::client::Execution::execute </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::chrono::milliseconds&#160;</td>
          <td class="paramname"><em>timeout</em> = <code>DEFAULT_QUERY_RESPONSE_TIMEOUT</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Executes the function using its name. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">func</td><td>the name of the function to be executed </td></tr>
    <tr><td class="paramname">timeout</td><td>value to wait for the operation to finish before timing out. </td></tr>
  </table>
  </dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="a00463.html" title="A description of an exception that occurred during a cache operation.">Exception</a></td><td>if there is an error during function execution </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>either a default result collector or one specified by {<a class="el" href="">} </a></dd></dl>

</div>
</div>
<a id="a242a1fd7edad1b11e4298abe6bd3a599"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a242a1fd7edad1b11e4298abe6bd3a599">&#9670;&nbsp;</a></span>execute() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::shared_ptr&lt;<a class="el" href="a00843.html">ResultCollector</a>&gt; apache::geode::client::Execution::execute </td>
          <td>(</td>
          <td class="paramtype">const std::shared_ptr&lt; <a class="el" href="a00291.html">CacheableVector</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>routingObj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::shared_ptr&lt; <a class="el" href="a00855.html">Cacheable</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>args</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::shared_ptr&lt; <a class="el" href="a00843.html">ResultCollector</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>rs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::chrono::milliseconds&#160;</td>
          <td class="paramname"><em>timeout</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Executes the function using its name. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">routingObj</td><td>Set defining the data filter to be used for executing the function </td></tr>
    <tr><td class="paramname">args</td><td>user data passed to the function execution </td></tr>
    <tr><td class="paramname">rs</td><td>* Specifies the <a class="el" href="a00843.html">ResultCollector</a> that will receive the results after the function has been executed. </td></tr>
    <tr><td class="paramname">func</td><td>the name of the function to be executed </td></tr>
    <tr><td class="paramname">timeout</td><td>value to wait for the operation to finish before timing out. </td></tr>
  </table>
  </dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="a00463.html" title="A description of an exception that occurred during a cache operation.">Exception</a></td><td>if there is an error during function execution </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>either a default result collector or one specified by {<a class="el" href="">} </a></dd></dl>

</div>
</div>
<a id="a3c9ebcd10caff19754531539e2a8a7a8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c9ebcd10caff19754531539e2a8a7a8">&#9670;&nbsp;</a></span>withArgs()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00727.html">Execution</a> apache::geode::client::Execution::withArgs </td>
          <td>(</td>
          <td class="paramtype">std::shared_ptr&lt; <a class="el" href="a00855.html">Cacheable</a> &gt;&#160;</td>
          <td class="paramname"><em>args</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Specifies the user data passed to the function when it is executed. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">args</td><td>user data passed to the function execution </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>an <a class="el" href="a00727.html" title="gathers results from function execution">Execution</a> with args </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="a00471.html" title="Thrown when an argument to a method is illegal.">IllegalArgumentException</a></td><td>if the input parameter is nullptr </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a7a48ac4169d9d125b19d8d9abbffd91f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7a48ac4169d9d125b19d8d9abbffd91f">&#9670;&nbsp;</a></span>withCollector()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00727.html">Execution</a> apache::geode::client::Execution::withCollector </td>
          <td>(</td>
          <td class="paramtype">std::shared_ptr&lt; <a class="el" href="a00843.html">ResultCollector</a> &gt;&#160;</td>
          <td class="paramname"><em>rs</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Specifies the <a class="el" href="a00843.html">ResultCollector</a> that will receive the results after the function has been executed. </p>
<dl class="section return"><dt>Returns</dt><dd>an <a class="el" href="a00727.html" title="gathers results from function execution">Execution</a> with a collector </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="a00471.html" title="Thrown when an argument to a method is illegal.">IllegalArgumentException</a></td><td>if <a class="el" href="a00843.html">ResultCollector</a> is nullptr </td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00843.html" title="Defines the interface for a container that gathers results from function execution.">ResultCollector</a> </dd></dl>

</div>
</div>
<a id="acedb102777277fb9f82e47a4da449a25"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acedb102777277fb9f82e47a4da449a25">&#9670;&nbsp;</a></span>withFilter()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00727.html">Execution</a> apache::geode::client::Execution::withFilter </td>
          <td>(</td>
          <td class="paramtype">std::shared_ptr&lt; <a class="el" href="a00291.html">CacheableVector</a> &gt;&#160;</td>
          <td class="paramname"><em>routingObj</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Specifies a data filter of routing objects for selecting the Geode members to execute the function. </p>
<p>If the filter set is empty the function is executed on all members that have the FunctionService::onRegion(Region).</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">routingObj</td><td>Set defining the data filter to be used for executing the function </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>an <a class="el" href="a00727.html" title="gathers results from function execution">Execution</a> with the filter </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="a00471.html" title="Thrown when an argument to a method is illegal.">IllegalArgumentException</a></td><td>if filter passed is nullptr. </td></tr>
    <tr><td class="paramname"><a class="el" href="a00535.html" title="Thrown when an operation unsupported by the current configuration is attempted.">UnsupportedOperationException</a></td><td>if not called after FunctionService::onRegion(Region). </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at
     http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<HR><address style="align: right;"><small>Apache Geode C++ Cache API Documentation</small></address>
