<!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::CqAttributesMutator 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('a00403.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::CqAttributesMutator Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>This interface is used to modify the listeners that are associated with a CQ.  
 <a href="a00403.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:ad37d6c71bbcb958a555d020ae8b54ef5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00403.html#ad37d6c71bbcb958a555d020ae8b54ef5">addCqListener</a> (const std::shared_ptr&lt; <a class="el" href="a00411.html">CqListener</a> &gt; &amp;aListener)</td></tr>
<tr class="memdesc:ad37d6c71bbcb958a555d020ae8b54ef5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a CQ listener to the end of the list of CQ listeners on this <a class="el" href="a00415.html" title="A Query is obtained from a QueryService which in turn is obtained from the Cache.">CqQuery</a>.  <a href="#ad37d6c71bbcb958a555d020ae8b54ef5">More...</a><br /></td></tr>
<tr class="separator:ad37d6c71bbcb958a555d020ae8b54ef5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a72d4e7051847e1ce8a6be721a8486749"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00403.html#a72d4e7051847e1ce8a6be721a8486749">CqAttributesMutator</a> (const std::shared_ptr&lt; <a class="el" href="a00395.html">CqAttributes</a> &gt; &amp;impl)</td></tr>
<tr class="memdesc:a72d4e7051847e1ce8a6be721a8486749"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a <code><a class="el" href="a00403.html" title="This interface is used to modify the listeners that are associated with a CQ.">CqAttributesMutator</a></code> with the given {<a class="el" href="a00395.html">}. </a> <a href="#a72d4e7051847e1ce8a6be721a8486749">More...</a><br /></td></tr>
<tr class="separator:a72d4e7051847e1ce8a6be721a8486749"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad35c6776954b51e7c2ecf1e40ab57019"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00403.html#ad35c6776954b51e7c2ecf1e40ab57019">removeCqListener</a> (const std::shared_ptr&lt; <a class="el" href="a00411.html">CqListener</a> &gt; &amp;aListener)</td></tr>
<tr class="memdesc:ad35c6776954b51e7c2ecf1e40ab57019"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes given CQ listener from the list of CQ listeners on this <a class="el" href="a00415.html" title="A Query is obtained from a QueryService which in turn is obtained from the Cache.">CqQuery</a>.  <a href="#ad35c6776954b51e7c2ecf1e40ab57019">More...</a><br /></td></tr>
<tr class="separator:ad35c6776954b51e7c2ecf1e40ab57019"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5248cb8d75b7538027dd625eb489aa2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00403.html#aa5248cb8d75b7538027dd625eb489aa2">setCqListeners</a> (const std::vector&lt; std::shared_ptr&lt; <a class="el" href="a00411.html">CqListener</a> &gt;&gt; &amp;newListeners)</td></tr>
<tr class="memdesc:aa5248cb8d75b7538027dd625eb489aa2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds the given set <a class="el" href="a00411.html" title="Application plug-in interface for handling continuous query events after they occur.">CqListener</a> on this CQ.  <a href="#aa5248cb8d75b7538027dd625eb489aa2">More...</a><br /></td></tr>
<tr class="separator:aa5248cb8d75b7538027dd625eb489aa2"><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>This interface is used to modify the listeners that are associated with a CQ. </p>
<p>Each <a class="el" href="a00415.html" title="A Query is obtained from a QueryService which in turn is obtained from the Cache.">CqQuery</a> has an <a class="el" href="a00403.html" title="This interface is used to modify the listeners that are associated with a CQ.">CqAttributesMutator</a> interface which supports modification of certain CQ attributes after the CQ has been created. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a72d4e7051847e1ce8a6be721a8486749"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a72d4e7051847e1ce8a6be721a8486749">&#9670;&nbsp;</a></span>CqAttributesMutator()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">apache::geode::client::CqAttributesMutator::CqAttributesMutator </td>
          <td>(</td>
          <td class="paramtype">const std::shared_ptr&lt; <a class="el" href="a00395.html">CqAttributes</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>impl</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Constructs a <code><a class="el" href="a00403.html" title="This interface is used to modify the listeners that are associated with a CQ.">CqAttributesMutator</a></code> with the given {<a class="el" href="a00395.html">}. </a></p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ad37d6c71bbcb958a555d020ae8b54ef5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad37d6c71bbcb958a555d020ae8b54ef5">&#9670;&nbsp;</a></span>addCqListener()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void apache::geode::client::CqAttributesMutator::addCqListener </td>
          <td>(</td>
          <td class="paramtype">const std::shared_ptr&lt; <a class="el" href="a00411.html">CqListener</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>aListener</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Adds a CQ listener to the end of the list of CQ listeners on this <a class="el" href="a00415.html" title="A Query is obtained from a QueryService which in turn is obtained from the Cache.">CqQuery</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">aListener</td><td>the user defined CQ listener to add to the <a class="el" href="a00415.html" title="A Query is obtained from a QueryService which in turn is obtained from the Cache.">CqQuery</a>. </td></tr>
  </table>
  </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 <code>aListener</code> is nullptr </td></tr>
  </table>
  </dd>
</dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void apache::geode::client::CqAttributesMutator::removeCqListener </td>
          <td>(</td>
          <td class="paramtype">const std::shared_ptr&lt; <a class="el" href="a00411.html">CqListener</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>aListener</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Removes given CQ listener from the list of CQ listeners on this <a class="el" href="a00415.html" title="A Query is obtained from a QueryService which in turn is obtained from the Cache.">CqQuery</a>. </p>
<p>Does nothing if the specified listener has not been added. If the specified listener has been added then will be called on it; otherwise does nothing. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">aListener</td><td>the CQ listener to remove from the <a class="el" href="a00415.html" title="A Query is obtained from a QueryService which in turn is obtained from the Cache.">CqQuery</a>. </td></tr>
  </table>
  </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 <code>aListener</code> is nullptr </td></tr>
  </table>
  </dd>
</dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void apache::geode::client::CqAttributesMutator::setCqListeners </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; std::shared_ptr&lt; <a class="el" href="a00411.html">CqListener</a> &gt;&gt; &amp;&#160;</td>
          <td class="paramname"><em>newListeners</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Adds the given set <a class="el" href="a00411.html" title="Application plug-in interface for handling continuous query events after they occur.">CqListener</a> on this CQ. </p>
<p>If the CQ already has CqListeners, this removes those old CQs and initializes with the newListeners. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">newListeners</td><td>a possibly empty array of listeners to add to this <a class="el" href="a00415.html" title="A Query is obtained from a QueryService which in turn is obtained from the Cache.">CqQuery</a>. </td></tr>
  </table>
  </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 <code>newListeners</code> array has a nullptr element </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>
