# 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.

PROP_NAME = 0
PROP_CACHE_MODE = 1
PROP_CACHE_ATOMICITY_MODE = 2
PROP_BACKUPS_NUMBER = 3
PROP_WRITE_SYNCHRONIZATION_MODE = 4
PROP_COPY_ON_READ = 5
PROP_READ_FROM_BACKUP = 6

PROP_DATA_REGION_NAME = 100
PROP_IS_ONHEAP_CACHE_ENABLED = 101

PROP_QUERY_ENTITIES = 200
PROP_QUERY_PARALLELISM = 201
PROP_QUERY_DETAIL_METRIC_SIZE = 202
PROP_SQL_SCHEMA = 203
PROP_SQL_INDEX_INLINE_MAX_SIZE = 204
PROP_SQL_ESCAPE_ALL = 205
PROP_MAX_QUERY_ITERATORS = 206

PROP_REBALANCE_MODE = 300
PROP_REBALANCE_DELAY = 301
PROP_REBALANCE_TIMEOUT = 302
PROP_REBALANCE_BATCH_SIZE = 303
PROP_REBALANCE_BATCHES_PREFETCH_COUNT = 304
PROP_REBALANCE_ORDER = 305
PROP_REBALANCE_THROTTLE = 306

PROP_GROUP_NAME = 400
PROP_CACHE_KEY_CONFIGURATION = 401
PROP_DEFAULT_LOCK_TIMEOUT = 402
PROP_MAX_CONCURRENT_ASYNC_OPERATIONS = 403
PROP_PARTITION_LOSS_POLICY = 404
PROP_EAGER_TTL = 405
PROP_STATISTICS_ENABLED = 406

PROP_INVALIDATE = -1
