# 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.
# Default Geode C++ distributed system properties
# Copy to current directory and uncomment to override defaults.
#
## Debugging support, enables stacktraces in apache::geode::client::Exception.
#
# The default is false, uncomment to enable stacktraces in exceptions.
#stacktrace-enabled=true
#crash-dump-enabled=true
#
#
## Cache region configurtion
#
#cache-xml-file=cache.xml
#
## Log file config
#
#log-file=gemfire_cpp.log
#log-level=debug
# zero indicates use no limit.
#log-file-size-limit=0
# zero indicates use no limit. 
#log-disk-space-limit=0 
#
## Statistics values
#
# the rate is in seconds.
#statistic-sample-rate=1
#statistic-sampling-enabled=true
#statistic-archive-file=statArchive.gfs
# zero indicates use no limit.
#archive-file-size-limit=0
# zero indicates use no limit.
#archive-disk-space-limit=0
#enable-time-statistics=false 
#
## Heap based eviction configuration
#
# maximum amount of memory used by the cache for all regions, 0 disables this feature
#heap-lru-limit=0
# percentage over heap-lru-limit when LRU will be called. 
#heap-lru-delta=10
#
## Durable client support
#
#durable-client-id=
durable-timeout=12345s
#
## SSL socket support
#
#ssl-enabled=false
#ssl-keystore=
#ssl-keystore-password=
#ssl-truststore=
#
## .NET AppDomain support
#
#appdomain-enabled=false
#
## Misc
#
#conflate-events=server
#disable-shuffling-of-endpoints=false
#grid-client=false
#max-fe-threads=
#max-socket-buffer-size=66560
# the units are in seconds.
#connect-timeout=59
#notify-ack-interval=10
#notify-dupcheck-life=300
#ping-interval=10 
#redundancy-monitor-interval=10
#auto-ready-for-events=true
#suspended-tx-timeout=30
#enable-chunk-handler-thread=false
#tombstone-timeout=480000
#
## module name of the initializer pointing to sample
## implementation from templates/security
#security-client-auth-library=securityImpl
## static method name of the library mentioned above
#security-client-auth-factory=createUserPasswordAuthInitInstance
## credential for Dummy Authenticator configured in server.
## note: security-password property will be inserted by the initializer
## mentioned in the above property.
#security-username=root
