1 /* 2 Copyright (c) DataStax, Inc. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 #ifndef DATASTAX_INTERNAL_CONSTANTS_HPP 18 #define DATASTAX_INTERNAL_CONSTANTS_HPP 19 20 #define CASS_UINT32_MAX 4294967295UL 21 22 #define CASS_INT64_MAX 9223372036854775807LL 23 #define CASS_INT64_MIN (-CASS_INT64_MAX - 1) 24 25 #define CASS_INT32_MAX 2147483647 26 #define CASS_INT32_MIN (-CASS_INT32_MAX - 1) 27 28 #define CQL_OPCODE_ERROR 0x00 29 #define CQL_OPCODE_STARTUP 0x01 30 #define CQL_OPCODE_READY 0x02 31 #define CQL_OPCODE_AUTHENTICATE 0x03 32 #define CQL_OPCODE_CREDENTIALS 0x04 33 #define CQL_OPCODE_OPTIONS 0x05 34 #define CQL_OPCODE_SUPPORTED 0x06 35 #define CQL_OPCODE_QUERY 0x07 36 #define CQL_OPCODE_RESULT 0x08 37 #define CQL_OPCODE_PREPARE 0x09 38 #define CQL_OPCODE_EXECUTE 0x0A 39 #define CQL_OPCODE_REGISTER 0x0B 40 #define CQL_OPCODE_EVENT 0x0C 41 #define CQL_OPCODE_BATCH 0x0D 42 #define CQL_OPCODE_AUTH_CHALLENGE 0x0E 43 #define CQL_OPCODE_AUTH_RESPONSE 0x0F 44 #define CQL_OPCODE_AUTH_SUCCESS 0x10 45 #define CQL_OPCODE_CANCEL 0xFF 46 47 // TODO(mpenick): We need to expose these (not as "CQL") 48 #define CQL_ERROR_SERVER_ERROR 0x0000 49 #define CQL_ERROR_PROTOCOL_ERROR 0x000A 50 #define CQL_ERROR_BAD_CREDENTIALS 0x0100 51 #define CQL_ERROR_UNAVAILABLE 0x1000 52 #define CQL_ERROR_OVERLOADED 0x1001 53 #define CQL_ERROR_IS_BOOTSTRAPPING 0x1002 54 #define CQL_ERROR_TRUNCATE_ERROR 0x1003 55 #define CQL_ERROR_WRITE_TIMEOUT 0x1100 56 #define CQL_ERROR_READ_TIMEOUT 0x1200 57 #define CQL_ERROR_READ_FAILURE 0x1300 58 #define CQL_ERROR_FUNCTION_FAILURE 0x1400 59 #define CQL_ERROR_WRITE_FAILURE 0x1500 60 #define CQL_ERROR_SYNTAX_ERROR 0x2000 61 #define CQL_ERROR_UNAUTHORIZED 0x2100 62 #define CQL_ERROR_INVALID_QUERY 0x2200 63 #define CQL_ERROR_CONFIG_ERROR 0x2300 64 #define CQL_ERROR_ALREADY_EXISTS 0x2400 65 #define CQL_ERROR_UNPREPARED 0x2500 66 #define CQL_ERROR_CLIENT_WRITE_FAILURE 0x8000 67 68 #define CASS_FLAG_COMPRESSION 0x01 69 #define CASS_FLAG_TRACING 0x02 70 #define CASS_FLAG_CUSTOM_PAYLOAD 0x04 71 #define CASS_FLAG_WARNING 0x08 72 #define CASS_FLAG_BETA 0x10 73 74 #define CASS_QUERY_FLAG_VALUES 0x00000001 75 #define CASS_QUERY_FLAG_SKIP_METADATA 0x00000002 76 #define CASS_QUERY_FLAG_PAGE_SIZE 0x00000004 77 #define CASS_QUERY_FLAG_PAGING_STATE 0x00000008 78 #define CASS_QUERY_FLAG_SERIAL_CONSISTENCY 0x00000010 79 #define CASS_QUERY_FLAG_DEFAULT_TIMESTAMP 0x00000020 80 #define CASS_QUERY_FLAG_NAMES_FOR_VALUES 0x00000040 81 #define CASS_QUERY_FLAG_WITH_KEYSPACE 0x00000080 82 #define CASS_QUERY_FLAG_PAGE_SIZE_BYTES 0x40000000 83 #define CASS_QUERY_FLAG_CONTINUOUS_PAGING 0x80000000 84 85 #define CASS_PREPARE_FLAG_WITH_KEYSPACE 0x00000001 86 87 #define CASS_BATCH_KIND_QUERY 0 88 #define CASS_BATCH_KIND_PREPARED 1 89 90 #define CASS_RESULT_KIND_VOID 1 91 #define CASS_RESULT_KIND_ROWS 2 92 #define CASS_RESULT_KIND_SET_KEYSPACE 3 93 #define CASS_RESULT_KIND_PREPARED 4 94 #define CASS_RESULT_KIND_SCHEMA_CHANGE 5 95 96 #define CASS_RESULT_FLAG_GLOBAL_TABLESPEC 0x00000001 97 #define CASS_RESULT_FLAG_HAS_MORE_PAGES 0x00000002 98 #define CASS_RESULT_FLAG_NO_METADATA 0x00000004 99 #define CASS_RESULT_FLAG_METADATA_CHANGED 0x00000008 100 #define CASS_RESULT_FLAG_CONTINUOUS_PAGING 0x40000000 101 #define CASS_RESULT_FLAG_LAST_CONTINUOUS_PAGE 0x80000000 102 103 #define CASS_EVENT_TOPOLOGY_CHANGE 1 104 #define CASS_EVENT_STATUS_CHANGE 2 105 #define CASS_EVENT_SCHEMA_CHANGE 4 106 107 #define CASS_HEADER_SIZE_V1_AND_V2 8 108 #define CASS_HEADER_SIZE_V3 9 109 110 // Cluster-level defaults 111 #define CASS_DEFAULT_CONNECT_TIMEOUT_MS 5000 112 #define CASS_DEFAULT_HEARTBEAT_INTERVAL_SECS 30 113 #define CASS_DEFAULT_HOSTNAME_RESOLUTION_ENABLED false 114 #define CASS_DEFAULT_IDLE_TIMEOUT_SECS 60 115 #define CASS_DEFAULT_LOG_LEVEL CASS_LOG_WARN 116 #define CASS_DEFAULT_MAX_PREPARES_PER_FLUSH 128 117 #define CASS_DEFAULT_MAX_REUSABLE_WRITE_OBJECTS UINT_MAX 118 #define CASS_DEFAULT_MAX_SCHEMA_WAIT_TIME_MS 10000 119 #define CASS_DEFAULT_NUM_CONNECTIONS_PER_HOST 1 120 #define CASS_DEFAULT_PREPARE_ON_ALL_HOSTS true 121 #define CASS_DEFAULT_PREPARE_ON_UP_OR_ADD_HOST true 122 #define CASS_DEFAULT_PORT 9042 123 #define CASS_DEFAULT_QUEUE_SIZE_IO 8192 124 #define CASS_DEFAULT_CONSTANT_RECONNECT_WAIT_TIME_MS 2000u 125 #define CASS_DEFAULT_EXPONENTIAL_RECONNECT_BASE_DELAY_MS \ 126 CASS_DEFAULT_CONSTANT_RECONNECT_WAIT_TIME_MS 127 #define CASS_DEFAULT_EXPONENTIAL_RECONNECT_MAX_DELAY_MS 600000u // 10 minutes 128 #define CASS_DEFAULT_RESOLVE_TIMEOUT_MS 5000 129 #define CASS_DEFAULT_TCP_KEEPALIVE_DELAY_SECS 0 130 #define CASS_DEFAULT_TCP_KEEPALIVE_ENABLED true 131 #define CASS_DEFAULT_TCP_NO_DELAY_ENABLED true 132 #define CASS_DEFAULT_THREAD_COUNT_IO 1 133 #define CASS_DEFAULT_USE_TOKEN_AWARE_ROUTING true 134 #define CASS_DEFAULT_USE_SNI_ROUTING false 135 #define CASS_DEFAULT_USE_BETA_PROTOCOL_VERSION false 136 #define CASS_DEFAULT_USE_RANDOMIZED_CONTACT_POINTS true 137 #define CASS_DEFAULT_USE_SCHEMA true 138 #define CASS_DEFAULT_COALESCE_DELAY 200 139 #define CASS_DEFAULT_NEW_REQUEST_RATIO 50 140 #define CASS_DEFAULT_NO_COMPACT false 141 #define CASS_DEFAULT_CQL_VERSION "3.0.0" 142 #define CASS_DEFAULT_MAX_TRACING_DATA_WAIT_TIME_MS 15 143 #define CASS_DEFAULT_RETRY_TRACING_DATA_WAIT_TIME_MS 3 144 #define CASS_DEFAULT_TRACING_CONSISTENCY CASS_CONSISTENCY_ONE 145 146 // Request-level defaults 147 #define CASS_DEFAULT_CONSISTENCY CASS_CONSISTENCY_LOCAL_ONE 148 #define CASS_DEFAULT_REQUEST_TIMEOUT_MS 12000u 149 #define CASS_DEFAULT_SERIAL_CONSISTENCY CASS_CONSISTENCY_ANY 150 151 // Client monitoring defaults 152 #define CASS_DEFAULT_CLIENT_MONITOR_EVENTS_INTERVAL_SECS 300 153 154 // DBaaS product type identification 155 #define CASS_DBAAS_PRODUCT_TYPE "DATASTAX_APOLLO" 156 157 // DBaaS defaults 158 #define CASS_DEFAULT_DBAAS_CONSISTENCY CASS_CONSISTENCY_LOCAL_QUORUM 159 160 #define CASS_MAX_STREAMS 32768 // Protocol v3+: 2 ^ (16 - 1) (2 bytes) 161 162 #endif 163