<!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</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_d.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">
<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>

<h3><a id="index_d"></a>- d -</h3><ul>
<li>DataInput()
: <a class="el" href="a00435.html#a20f8256addec3a473b9384c08598e919">apache::geode::client::DataInput</a>
</li>
<li>DataOutput()
: <a class="el" href="a00439.html#aa433d0035254611b5f3bf9d38a869f33">apache::geode::client::DataOutput</a>
</li>
<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>destroy()
: <a class="el" href="a00783.html#ab52e1a2deab8c20db07a5007e3d91de3">apache::geode::client::PersistenceManager</a>
, <a class="el" href="a00787.html#a82821401108d78a1c493f4b6c952d90d">apache::geode::client::Pool</a>
, <a class="el" href="a00815.html#a1330d8868efec3be5caa7bd04ce8f622">apache::geode::client::Region</a>
</li>
<li>destroyRegion()
: <a class="el" href="a00815.html#a0e00376744c98bc9d2db341a865c69a3">apache::geode::client::Region</a>
</li>
<li>durableClientId()
: <a class="el" href="a00867.html#adba50a84a077e357452a95af634b1ef7">apache::geode::client::SystemProperties</a>
</li>
<li>durableTimeout()
: <a class="el" href="a00867.html#a2fd2f3ec454ce6619ec05e28a3871e2f">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>
