24 #ifndef _CAS_PROTOCOL_H_ 25 #define _CAS_PROTOCOL_H_ 34 #define SRV_CON_CLIENT_INFO_SIZE 10 35 #define SRV_CON_CLIENT_MAGIC_LEN 5 36 #define SRV_CON_CLIENT_MAGIC_STR "CUBRK" 37 #define SRV_CON_CLIENT_MAGIC_STR_SSL "CUBRS" 38 #define SRV_CON_MSG_IDX_CLIENT_TYPE 5 40 #define IS_SSL_CLIENT(driver_info) \ 41 (strncmp (driver_info, SRV_CON_CLIENT_MAGIC_STR_SSL, SRV_CON_CLIENT_MAGIC_LEN) == 0) 46 #define SRV_CON_MSG_IDX_PROTO_VERSION 6 47 #define SRV_CON_MSG_IDX_FUNCTION_FLAG 7 48 #define SRV_CON_MSG_IDX_RESERVED2 8 50 #define SRV_CON_MSG_IDX_MAJOR_VER (SRV_CON_MSG_IDX_PROTO_VERSION) 51 #define SRV_CON_MSG_IDX_MINOR_VER (SRV_CON_MSG_IDX_FUNCTION_FLAG) 52 #define SRV_CON_MSG_IDX_PATCH_VER (SRV_CON_MSG_IDX_RESERVED2) 54 #define SRV_CON_DBNAME_SIZE 32 55 #define SRV_CON_DBUSER_SIZE 32 56 #define SRV_CON_DBPASSWD_SIZE 32 57 #define SRV_CON_URL_SIZE 512 58 #define SRV_CON_DBSESS_ID_SIZE 20 59 #define SRV_CON_VER_STR_MAX_SIZE 20 61 #define SRV_CON_DB_INFO_SIZE \ 62 (SRV_CON_DBNAME_SIZE + SRV_CON_DBUSER_SIZE + SRV_CON_DBPASSWD_SIZE + \ 63 SRV_CON_URL_SIZE + SRV_CON_DBSESS_ID_SIZE) 64 #define SRV_CON_DB_INFO_SIZE_PRIOR_8_4_0 \ 65 (SRV_CON_DBNAME_SIZE + SRV_CON_DBUSER_SIZE + SRV_CON_DBPASSWD_SIZE + \ 67 #define SRV_CON_DB_INFO_SIZE_PRIOR_8_2_0 \ 68 (SRV_CON_DBNAME_SIZE + SRV_CON_DBUSER_SIZE + SRV_CON_DBPASSWD_SIZE) 105 #define CAS_INFO_FLAG_MASK_AUTOCOMMIT 0x01 106 #define CAS_INFO_FLAG_MASK_FORCE_OUT_TRAN 0x02 107 #define CAS_INFO_FLAG_MASK_NEW_SESSION_ID 0x04 109 #define CAS_INFO_SIZE (4) 110 #define CAS_INFO_RESERVED_DEFAULT (-1) 112 #define MSG_HEADER_INFO_SIZE CAS_INFO_SIZE 113 #define MSG_HEADER_MSG_SIZE ((int) sizeof(int)) 114 #define MSG_HEADER_SIZE (MSG_HEADER_INFO_SIZE + MSG_HEADER_MSG_SIZE) 116 #define BROKER_INFO_SIZE 8 117 #define BROKER_RENEWED_ERROR_CODE 0x80 118 #define BROKER_SUPPORT_HOLDABLE_RESULT 0x40 120 #define BROKER_RECONNECT_WHEN_SERVER_DOWN 0x20 123 #define BROKER_INFO_MAJOR_VERSION (BROKER_INFO_PROTO_VERSION) 124 #define BROKER_INFO_MINOR_VERSION (BROKER_INFO_FUNCTION_FLAG) 125 #define BROKER_INFO_PATCH_VERSION (BROKER_INFO_RESERVED2) 126 #define BROKER_INFO_RESERVED (BROKER_INFO_RESERVED3) 128 #define CAS_PID_SIZE 4 129 #define SESSION_ID_SIZE 4 130 #define DRIVER_SESSION_SIZE SRV_CON_DBSESS_ID_SIZE 131 #define CAS_CONNECTION_REPLY_SIZE_PRIOR_PROTOCOL_V3 (CAS_PID_SIZE + BROKER_INFO_SIZE + SESSION_ID_SIZE) 132 #define CAS_CONNECTION_REPLY_SIZE_V3 (CAS_PID_SIZE + BROKER_INFO_SIZE + DRIVER_SESSION_SIZE) 133 #define CAS_CONNECTION_REPLY_SIZE_V4 (CAS_PID_SIZE + CAS_PID_SIZE + BROKER_INFO_SIZE + DRIVER_SESSION_SIZE) 134 #define CAS_CONNECTION_REPLY_SIZE CAS_CONNECTION_REPLY_SIZE_V4 136 #define CAS_KEEP_CONNECTION_ON 1 138 #define CAS_GET_QUERY_INFO_PLAN 1 140 #define CAS_STATEMENT_POOLING_OFF 0 141 #define CAS_STATEMENT_POOLING_ON 1 143 #define CCI_PCONNECT_OFF 0 144 #define CCI_PCONNECT_ON 1 146 #define CAS_REQ_HEADER_JDBC "JDBC" 147 #define CAS_REQ_HEADER_ODBC "ODBC" 148 #define CAS_REQ_HEADER_PHP "PHP" 149 #define CAS_REQ_HEADER_OLEDB "OLEDB" 150 #define CAS_REQ_HEADER_CCI "CCI" 152 #define SHARD_ID_INVALID (-1) 153 #define SHARD_ID_UNSUPPORTED (-2) 156 #define HEALTH_CHECK_DUMMY_DB "___health_check_dummy_db___" 269 #define IS_CONNECTED_TO_PROXY(type) \ 270 ((type) == CAS_PROXY_DBMS_CUBRID \ 271 || (type) == CAS_PROXY_DBMS_MYSQL \ 272 || (type) == CAS_PROXY_DBMS_ORACLE) 274 #define IS_VALID_CAS_FC(fc) \ 275 (fc >= CAS_FC_END_TRAN && fc < CAS_FC_MAX) 278 #define CAS_PROTOCOL_VERSION ((unsigned char)(CURRENT_PROTOCOL)) 281 #define CAS_PROTO_INDICATOR (0x40) 284 #define CAS_PROTO_MAKE_VER(VER) \ 285 ((T_BROKER_VERSION) (CAS_PROTO_INDICATOR << 24 | (VER))) 286 #define CAS_PROTO_CURRENT_VER \ 287 ((T_BROKER_VERSION) CAS_PROTO_MAKE_VER(CURRENT_PROTOCOL)) 289 #define DOES_CLIENT_MATCH_THE_PROTOCOL(CLIENT, MATCH) ((CLIENT) == CAS_PROTO_MAKE_VER((MATCH))) 290 #define DOES_CLIENT_UNDERSTAND_THE_PROTOCOL(CLIENT, REQUIRE) ((CLIENT) >= CAS_PROTO_MAKE_VER((REQUIRE))) 293 #define CAS_PROTO_VER_MASK (0x3F) 294 #define CAS_PROTO_PACK_NET_VER(VER) \ 295 (char)((char)CAS_PROTO_INDICATOR | (char)(VER)) 296 #define CAS_PROTO_UNPACK_NET_VER(VER) \ 297 (CAS_PROTO_MAKE_VER(CAS_PROTO_VER_MASK & (char)(VER))) 298 #define CAS_PROTO_PACK_CURRENT_NET_VER \ 299 CAS_PROTO_PACK_NET_VER(CURRENT_PROTOCOL) 301 #define CAS_CONV_ERROR_TO_OLD(V) (V + 9000) 302 #define CAS_CONV_ERROR_TO_NEW(V) (V - 9000) 304 #define CAS_MAKE_VER(MAJOR, MINOR, PATCH) \ 305 ((T_BROKER_VERSION) (((MAJOR) << 16) | ((MINOR) << 8) | (PATCH))) 307 #define CAS_MAKE_PROTO_VER(DRIVER_INFO) \ 308 (((DRIVER_INFO)[SRV_CON_MSG_IDX_PROTO_VERSION]) & CAS_PROTO_INDICATOR) ? \ 309 CAS_PROTO_UNPACK_NET_VER ((DRIVER_INFO)[SRV_CON_MSG_IDX_PROTO_VERSION]) : \ 310 CAS_MAKE_VER ((DRIVER_INFO)[SRV_CON_MSG_IDX_MAJOR_VER], \ 311 (DRIVER_INFO)[SRV_CON_MSG_IDX_MINOR_VER], \ 312 (DRIVER_INFO)[SRV_CON_MSG_IDX_PATCH_VER]) 314 #define CAS_TYPE_FIRST_BYTE_PROTOCOL_MASK 0x80 317 #define CAS_VER_TO_MAJOR(VER) ((int) (((VER) >> 16) & 0xFF)) 318 #define CAS_VER_TO_MINOR(VER) ((int) (((VER) >> 8) & 0xFF)) 319 #define CAS_VER_TO_PATCH(VER) ((int) ((VER) & 0xFF)) 320 #define CAS_PROTO_TO_VER_STR(MSG_P, VER) \ 325 *((char **) (MSG_P)) = (char *) "8.4.1"; \ 328 *((char **) (MSG_P)) = (char *) "9.0.0"; \ 331 *((char **) (MSG_P)) = (char *) "8.4.3"; \ 334 *((char **) (MSG_P)) = (char *) "9.1.0"; \ 337 *((char **) (MSG_P)) = (char *) ""; \ char cas_bi_get_protocol_version(void)
enum t_dbms_type T_DBMS_TYPE
enum t_cas_func_code T_CAS_FUNC_CODE
enum t_broker_info_pos T_BROKER_INFO_POS
void cas_bi_set_keep_connection(const char keep_connection)
bool cas_bi_get_renewed_error_code(void)
enum t_driver_info_pos T_DRIVER_INFO_POS
void cas_bi_set_renewed_error_code(const bool renewed_error_code)
char cas_bi_get_statement_pooling(void)
bool cas_di_understand_renewed_error_code(const char *driver_info)
void cas_bi_set_dbms_type(const char dbms_type)
const char * cas_bi_get_broker_info(void)
void cas_bi_set_statement_pooling(const char statement_pooling)
void cas_bi_set_protocol_version(const char protocol_version)
enum t_cas_protocol T_CAS_PROTOCOL
char cas_bi_get_keep_connection(void)
void cas_bi_set_cci_pconnect(const char cci_pconnect)
void cas_bi_make_broker_info(char *broker_info, char dbms_type, char statement_pooling, char cci_pconnect)
char cas_bi_get_dbms_type(void)
char cas_bi_get_cci_pconnect(void)