<!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::CqEvent 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('a00407.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::CqEvent Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p>This interface provides methods to get all the information sent from the server about the CQ event.  
 <a href="a00407.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:afb1f2ffeba76d70b8197c9d389ed137e"><td class="memItemLeft" align="right" valign="top">virtual CqOperation&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00407.html#afb1f2ffeba76d70b8197c9d389ed137e">getBaseOperation</a> () const =0</td></tr>
<tr class="memdesc:afb1f2ffeba76d70b8197c9d389ed137e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the operation on the base region that triggered this event.  <a href="#afb1f2ffeba76d70b8197c9d389ed137e">More...</a><br /></td></tr>
<tr class="separator:afb1f2ffeba76d70b8197c9d389ed137e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83804f7cc751c6a6535a70e4fd5bfda8"><td class="memItemLeft" align="right" valign="top">virtual std::shared_ptr&lt; <a class="el" href="a00415.html">CqQuery</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00407.html#a83804f7cc751c6a6535a70e4fd5bfda8">getCq</a> () const =0</td></tr>
<tr class="memdesc:a83804f7cc751c6a6535a70e4fd5bfda8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get 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> object of this event.  <a href="#a83804f7cc751c6a6535a70e4fd5bfda8">More...</a><br /></td></tr>
<tr class="separator:a83804f7cc751c6a6535a70e4fd5bfda8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb738a3e119d98d5e674cc6de573370c"><td class="memItemLeft" align="right" valign="top">virtual std::shared_ptr&lt; <a class="el" href="a00026.html#a1670b991272438dfddf22e9bf5ee3f5b">CacheableBytes</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00407.html#acb738a3e119d98d5e674cc6de573370c">getDeltaValue</a> () const =0</td></tr>
<tr class="memdesc:acb738a3e119d98d5e674cc6de573370c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the delta modification.  <a href="#acb738a3e119d98d5e674cc6de573370c">More...</a><br /></td></tr>
<tr class="separator:acb738a3e119d98d5e674cc6de573370c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add734d004ac1561d12f3222c70c1c058"><td class="memItemLeft" align="right" valign="top">virtual std::shared_ptr&lt; <a class="el" href="a00339.html">CacheableKey</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00407.html#add734d004ac1561d12f3222c70c1c058">getKey</a> () const =0</td></tr>
<tr class="memdesc:add734d004ac1561d12f3222c70c1c058"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the key relating to the event.  <a href="#add734d004ac1561d12f3222c70c1c058">More...</a><br /></td></tr>
<tr class="separator:add734d004ac1561d12f3222c70c1c058"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23d98d6438e368f0a986c6494253fb11"><td class="memItemLeft" align="right" valign="top">virtual std::shared_ptr&lt; <a class="el" href="a00855.html">Cacheable</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00407.html#a23d98d6438e368f0a986c6494253fb11">getNewValue</a> () const =0</td></tr>
<tr class="memdesc:a23d98d6438e368f0a986c6494253fb11"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the new value of the modification.  <a href="#a23d98d6438e368f0a986c6494253fb11">More...</a><br /></td></tr>
<tr class="separator:a23d98d6438e368f0a986c6494253fb11"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0684ef99d984bf1cf57fdd5be35a959c"><td class="memItemLeft" align="right" valign="top">virtual CqOperation&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00407.html#a0684ef99d984bf1cf57fdd5be35a959c">getQueryOperation</a> () const =0</td></tr>
<tr class="memdesc:a0684ef99d984bf1cf57fdd5be35a959c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the operation on the query results.  <a href="#a0684ef99d984bf1cf57fdd5be35a959c">More...</a><br /></td></tr>
<tr class="separator:a0684ef99d984bf1cf57fdd5be35a959c"><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 provides methods to get all the information sent from the server about the CQ event. </p>
<p>The <a class="el" href="a00407.html" title="This interface provides methods to get all the information sent from the server about the CQ event.">CqEvent</a> is passed to the CQs <a class="el" href="a00411.html" title="Application plug-in interface for handling continuous query events after they occur.">CqListener</a> methods. It can be used to retrieve such information as the region operation, CQ operation associated with the event, the new key and value from the event, and 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> object associated with the event. The <a class="el" href="a00407.html" title="This interface provides methods to get all the information sent from the server about the CQ event.">CqEvent</a> is not an extension of CacheEvent. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="afb1f2ffeba76d70b8197c9d389ed137e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb1f2ffeba76d70b8197c9d389ed137e">&#9670;&nbsp;</a></span>getBaseOperation()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual CqOperation apache::geode::client::CqEvent::getBaseOperation </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the operation on the base region that triggered this event. </p>
<dl class="section return"><dt>Returns</dt><dd>Operation operation on the base region (on which CQ is created). </dd></dl>

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

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual std::shared_ptr&lt;<a class="el" href="a00415.html">CqQuery</a>&gt; apache::geode::client::CqEvent::getCq </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get 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> object of this event. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00415.html" title="A Query is obtained from a QueryService which in turn is obtained from the Cache.">CqQuery</a> </dd></dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="a00415.html" title="A Query is obtained from a QueryService which in turn is obtained from the Cache.">CqQuery</a> object. </dd></dl>

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

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual std::shared_ptr&lt;<a class="el" href="a00026.html#a1670b991272438dfddf22e9bf5ee3f5b">CacheableBytes</a>&gt; apache::geode::client::CqEvent::getDeltaValue </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the delta modification. </p>
<p>If there is no delta, returns null. New value may still be available.</p>
<dl class="section return"><dt>Returns</dt><dd>CacheableBytes delta value. </dd></dl>

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

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual std::shared_ptr&lt;<a class="el" href="a00339.html">CacheableKey</a>&gt; apache::geode::client::CqEvent::getKey </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the key relating to the event. </p>
<p>In case of REGION_CLEAR and REGION_INVALIDATE operation, the key will be nullptr. </p><dl class="section return"><dt>Returns</dt><dd>Object key. </dd></dl>

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

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual std::shared_ptr&lt;<a class="el" href="a00855.html">Cacheable</a>&gt; apache::geode::client::CqEvent::getNewValue </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the new value of the modification. </p>
<p>If there is no new value returns nullptr, this will happen during delete operation. </p><dl class="section return"><dt>Returns</dt><dd>Object new/modified value. </dd></dl>

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

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual CqOperation apache::geode::client::CqEvent::getQueryOperation </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the operation on the query results. </p>
<p>Supported operations include update, create, destroy, region clear and region invalidate. </p><dl class="section return"><dt>Returns</dt><dd>Operation operation with respect to CQ. </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>
