<!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: Data Fields - Variables</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('functions_vars.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="contents">
&#160;<ul>
<li>DEFAULT_FREE_CONNECTION_TIMEOUT
: <a class="el" href="a00791.html#af9697e12851d81c2fa78a8db4f02e2dc">apache::geode::client::PoolFactory</a>
</li>
<li>DEFAULT_IDLE_TIMEOUT
: <a class="el" href="a00791.html#a7650a8dc0e646bb277264303e2a4e700">apache::geode::client::PoolFactory</a>
</li>
<li>DEFAULT_LOAD_CONDITIONING_INTERVAL
: <a class="el" href="a00791.html#a90ef0091634fd937f08824515e24c82f">apache::geode::client::PoolFactory</a>
</li>
<li>DEFAULT_MAX_CONNECTIONS
: <a class="el" href="a00791.html#ab6a38df8ec53d4e6213928f9e239a589">apache::geode::client::PoolFactory</a>
</li>
<li>DEFAULT_MIN_CONNECTIONS
: <a class="el" href="a00791.html#afba2d8f4c32c8b6ba3eeb59fa4dff414">apache::geode::client::PoolFactory</a>
</li>
<li>DEFAULT_MULTIUSER_SECURE_MODE
: <a class="el" href="a00791.html#a9b6e74d9426c07ab610b4cd66f19e440">apache::geode::client::PoolFactory</a>
</li>
<li>DEFAULT_PING_INTERVAL
: <a class="el" href="a00791.html#aef1297a70763cc4052b29bdcc3ffdcbf">apache::geode::client::PoolFactory</a>
</li>
<li>DEFAULT_PR_SINGLE_HOP_ENABLED
: <a class="el" href="a00791.html#a209612cdaf9a348c2b13c419a139df74">apache::geode::client::PoolFactory</a>
</li>
<li>DEFAULT_READ_TIMEOUT
: <a class="el" href="a00791.html#a60c1ed6cea592346b491db157fc98885">apache::geode::client::PoolFactory</a>
</li>
<li>DEFAULT_RETRY_ATTEMPTS
: <a class="el" href="a00791.html#a969656d163eb9fe391441f8f8e39bdea">apache::geode::client::PoolFactory</a>
</li>
<li>DEFAULT_SERVER_GROUP
: <a class="el" href="a00791.html#a3ef17df9a2e1145e4c99052f4bcabb79">apache::geode::client::PoolFactory</a>
</li>
<li>DEFAULT_SOCKET_BUFFER_SIZE
: <a class="el" href="a00791.html#a5a77de086f1733ab83e43a265b37a0a6">apache::geode::client::PoolFactory</a>
</li>
<li>DEFAULT_STATISTIC_INTERVAL
: <a class="el" href="a00791.html#a7c5d3a61c8c8516fb8c11d959a59a51e">apache::geode::client::PoolFactory</a>
</li>
<li>DEFAULT_SUBSCRIPTION_ACK_INTERVAL
: <a class="el" href="a00791.html#ae9a0b501cdb334e8b71366df89439b47">apache::geode::client::PoolFactory</a>
</li>
<li>DEFAULT_SUBSCRIPTION_ENABLED
: <a class="el" href="a00791.html#a8fd46e658432db14d19d6bcd91324d9c">apache::geode::client::PoolFactory</a>
</li>
<li>DEFAULT_SUBSCRIPTION_MESSAGE_TRACKING_TIMEOUT
: <a class="el" href="a00791.html#a72e4fb624bdaf89a32cdcb7af74d9eb5">apache::geode::client::PoolFactory</a>
</li>
<li>DEFAULT_SUBSCRIPTION_REDUNDANCY
: <a class="el" href="a00791.html#aa89b15a8b625d9d8b505e6bdd691ddd7">apache::geode::client::PoolFactory</a>
</li>
<li>DEFAULT_THREAD_LOCAL_CONN
: <a class="el" href="a00791.html#a1b86f01b9a88efe937730a399ef6753a">apache::geode::client::PoolFactory</a>
</li>
<li>DEFAULT_UPDATE_LOCATOR_LIST_INTERVAL
: <a class="el" href="a00791.html#a31fe1c44abfb3093c3469d7cc51f146c">apache::geode::client::PoolFactory</a>
</li>
<li>m_callbackArgument
: <a class="el" href="a00459.html#ac07eafc27c72feeec52610f82416c545">apache::geode::client::EntryEvent</a>
, <a class="el" href="a00831.html#a5a7805bcc5b6140e0dbe4fc0ed338458">apache::geode::client::RegionEvent</a>
</li>
<li>m_key
: <a class="el" href="a00459.html#a86522f7447c92f499abf003c25955bea">apache::geode::client::EntryEvent</a>
</li>
<li>m_newValue
: <a class="el" href="a00459.html#a6ac2f8f08d8a38573d31f3f6b1fea548">apache::geode::client::EntryEvent</a>
</li>
<li>m_oldValue
: <a class="el" href="a00459.html#a4ea6586b3422d80b7bd94a0fc6a0a856">apache::geode::client::EntryEvent</a>
</li>
<li>m_region
: <a class="el" href="a00459.html#afad418fec0935a39b5e391797bfad928">apache::geode::client::EntryEvent</a>
, <a class="el" href="a00831.html#aa838739267f38bfd0a03238397f2c01e">apache::geode::client::RegionEvent</a>
</li>
<li>m_regionPtr
: <a class="el" href="a00783.html#a57726d90c0ff1b61ce8cf1bd58a82e65">apache::geode::client::PersistenceManager</a>
</li>
<li>m_remoteOrigin
: <a class="el" href="a00459.html#a19f9c9961f8a943779d89faa909323f8">apache::geode::client::EntryEvent</a>
, <a class="el" href="a00831.html#a89634c5befdb4f9cff20c03ef9f25104">apache::geode::client::RegionEvent</a>
</li>
<li>m_statisticsEnabled
: <a class="el" href="a00867.html#a0c30b9277e809be11f64620f904cee3c">apache::geode::client::SystemProperties</a>
</li>
</ul>
</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>
