File network.h¶
File List > communication > network.h
Go to the documentation of this file
/*
* Copyright 2008 Search Solution Corporation
* Copyright 2016 CUBRID Corporation
*
* Licensed 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.
*
*/
/*
* network.h -Definitions for client/server network support.
*/
#ifndef _NETWORK_H_
#define _NETWORK_H_
#ident "$Id$"
#include "perf_monitor.h"
#include "locator.h"
#include "log_comm.h"
/* Server statistics structure size, used to make sure the pack/unpack
routines follow the current structure definition.
This must be the byte size of the structure
as returned by sizeof(). Note that MEMORY_STAT_SIZE and PACKED_STAT_SIZE
are not necessarily the same although they will be in most cases.
*/
#define EXECUTE_QUERY_MAX_ARGUMENT_DATA_SIZE 512
/* These define the requests that the server will respond to */
#define NET_SERVER_REQUEST_LIST \
NET_SERVER_REQUEST_ITEM(NET_SERVER_PING) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_BO_INIT_SERVER) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BO_REGISTER_CLIENT) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BO_UNREGISTER_CLIENT) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BO_BACKUP) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BO_ADD_VOLEXT) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BO_CHECK_DBCONSISTENCY) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BO_FIND_NPERM_VOLS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BO_FIND_NTEMP_VOLS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BO_FIND_LAST_PERM) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BO_FIND_LAST_TEMP) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BO_CHANGE_HA_MODE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BO_NOTIFY_HA_LOG_APPLIER_STATE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BO_COMPACT_DB) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BO_HEAP_COMPACT) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BO_COMPACT_DB_START) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BO_COMPACT_DB_STOP) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BO_GET_LOCALES_INFO) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_TM_SERVER_COMMIT) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TM_SERVER_ABORT) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TM_SERVER_START_TOPOP) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TM_SERVER_END_TOPOP) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TM_SERVER_SAVEPOINT) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TM_SERVER_PARTIAL_ABORT) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TM_SERVER_HAS_UPDATED) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TM_SERVER_ISACTIVE_AND_HAS_UPDATED) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TM_ISBLOCKED) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TM_WAIT_SERVER_ACTIVE_TRANS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TM_SERVER_GET_GTRINFO) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TM_SERVER_SET_GTRINFO) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TM_SERVER_2PC_START) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TM_SERVER_2PC_PREPARE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TM_SERVER_2PC_RECOVERY_PREPARED) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TM_SERVER_2PC_ATTACH_GT) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TM_SERVER_2PC_PREPARE_GT) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TM_LOCAL_TRANSACTION_ID) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_FETCH) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_FETCHALL) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_FETCH_LOCKSET) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_FETCH_ALLREFS_LOCKSET) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_GET_CLASS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_FIND_CLASSOID) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_DOESEXIST) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_FORCE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_RESERVE_CLASSNAME) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_RESERVE_CLASSNAME_GET_OID) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_DELETE_CLASSNAME) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_RENAME_CLASSNAME) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_ASSIGN_OID) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_NOTIFY_ISOLATION_INCONS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_FIND_LOCKHINT_CLASSOIDS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_FETCH_LOCKHINT_CLASSES) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_ASSIGN_OID_BATCH) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_CHECK_FK_VALIDITY) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_REM_CLASS_FROM_INDEX) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_UPGRADE_INSTANCES_DOMAIN) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_REPL_FORCE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_REDISTRIBUTE_PARTITION_DATA) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_HEAP_CREATE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_HEAP_DESTROY) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_HEAP_DESTROY_WHEN_NEW) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_HEAP_GET_CLASS_NOBJS_AND_NPAGES) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_HEAP_HAS_INSTANCE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_HEAP_RECLAIM_ADDRESSES) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_HEAP_GET_MAXSLOTTED_RECLENGTH) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_FILE_APPLY_TDE_TO_CLASS_FILES) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_TDE_GET_DATA_KEYS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TDE_IS_LOADED) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TDE_GET_MK_FILE_PATH) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TDE_GET_MK_INFO) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TDE_CHANGE_MK_ON_SERVER) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_LOG_RESET_WAIT_MSECS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LOG_RESET_ISOLATION) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LOG_SET_INTERRUPT) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LOG_DUMP_STAT) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LOG_GETPACK_TRANTB) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LOG_DUMP_TRANTB) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LOG_FIND_LOB_LOCATOR) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LOG_ADD_LOB_LOCATOR) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LOG_CHANGE_STATE_OF_LOCATOR) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LOG_DROP_LOB_LOCATOR) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LOG_CHECKPOINT) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_LK_DUMP) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_BTREE_ADDINDEX) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BTREE_DELINDEX) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BTREE_LOADINDEX) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BTREE_FIND_UNIQUE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BTREE_CLASS_UNIQUE_TEST) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BTREE_GET_STATISTICS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BTREE_GET_KEY_TYPE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_BTREE_FIND_MULTI_UNIQUES) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_DISK_TOTALPGS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_DISK_FREEPGS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_DISK_REMARKS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_DISK_VLABEL) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_QST_GET_STATISTICS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_QST_UPDATE_STATISTICS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_QST_UPDATE_ALL_STATISTICS) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_QM_QUERY_PREPARE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_QM_QUERY_EXECUTE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_QM_QUERY_PREPARE_AND_EXECUTE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_QM_QUERY_END) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_QM_QUERY_DROP_ALL_PLANS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_QM_QUERY_DROP_SHA1_PLANS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_QM_QUERY_DUMP_PLANS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_QM_QUERY_DUMP_CACHE) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_LS_GET_LIST_FILE_PAGE) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_MNT_SERVER_START_STATS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_MNT_SERVER_STOP_STATS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_MNT_SERVER_COPY_STATS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_MNT_SERVER_COPY_GLOBAL_STATS) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_CT_CHECK_REP_DIR) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_CSS_KILL_TRANSACTION) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_CSS_DUMP_CS_STAT) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_CSS_KILL_OR_INTERRUPT_TRANSACTION) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_QPROC_GET_SYS_TIMESTAMP) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_QPROC_GET_CURRENT_VALUE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_QPROC_GET_NEXT_VALUE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_QPROC_GET_SERVER_INFO) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_SERIAL_DECACHE) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_SYNONYM_REMOVE_XASL_BY_OID) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_JSP_GET_SERVER_PORT) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_PRM_SET_PARAMETERS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_PRM_GET_PARAMETERS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_PRM_GET_FORCE_PARAMETERS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_PRM_DUMP_PARAMETERS) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_REPL_INFO) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_REPL_LOG_GET_APPEND_LSA) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LOG_SET_SUPPRESS_REPL_ON_TRANSACTION) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_CHKSUM_REPL) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_LOGWR_GET_LOG_PAGES) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_SHUTDOWN) \
\
/* External storage supports */ \
NET_SERVER_REQUEST_ITEM(NET_SERVER_ES_CREATE_FILE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_ES_WRITE_FILE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_ES_READ_FILE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_ES_DELETE_FILE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_ES_COPY_FILE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_ES_RENAME_FILE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_ES_GET_FILE_SIZE) \
\
/* Session state requests */ \
NET_SERVER_REQUEST_ITEM(NET_SERVER_SES_CHECK_SESSION) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_SES_END_SESSION) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_SES_SET_ROW_COUNT) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_SES_GET_ROW_COUNT) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_SES_GET_LAST_INSERT_ID) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_SES_RESET_CUR_INSERT_ID) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_SES_CREATE_PREPARED_STATEMENT) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_SES_GET_PREPARED_STATEMENT) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_SES_DELETE_PREPARED_STATEMENT) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_SES_SET_SESSION_VARIABLES) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_SES_GET_SESSION_VARIABLE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_SES_DROP_SESSION_VARIABLES) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_ACL_DUMP) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_ACL_RELOAD) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_AU_LOGIN_USER) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_AU_DOES_ACTIVE_USER_EXIST) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_VACUUM) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_GET_MVCC_SNAPSHOT) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LOCK_RR) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_TZ_GET_CHECKSUM) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_SPACEDB) \
\
/* Followings are not grouped because they are appended after the above. It is necessary to rearrange with changing */ \
/* network compatibility. */ \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_LC_DEMOTE_CLASS_LOCK) \
\
/* loaddb server requests */ \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LD_INIT) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LD_INSTALL_CLASS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LD_LOAD_BATCH) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LD_FETCH_STATUS) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LD_DESTROY) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LD_INTERRUPT) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LD_UPDATE_STATS) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_VACUUM_DUMP) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_PL_CALL) \
\
NET_SERVER_REQUEST_ITEM(NET_SERVER_SUPPLEMENT_STMT) \
\
/* FOR CDC */ \
NET_SERVER_REQUEST_ITEM(NET_SERVER_CDC_START_SESSION) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_CDC_FIND_LSA) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_CDC_GET_LOGINFO_METADATA) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_CDC_GET_LOGINFO) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_CDC_END_SESSION) \
\
/* flashback */ \
NET_SERVER_REQUEST_ITEM(NET_SERVER_FLASHBACK_GET_SUMMARY) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_FLASHBACK_GET_LOGINFO) \
\
/* plcsql */ \
NET_SERVER_REQUEST_ITEM(NET_SERVER_PLCSQL_TRANSFER_FILE) \
\
/* memmon */ \
NET_SERVER_REQUEST_ITEM(NET_SERVER_MMON_GET_SERVER_INFO) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_MMON_DISABLE_FORCE) \
\
/* tdes */ \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TDES_SET_QUERY_START_INFO) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_TDES_RESET_QUERY_START_INFO) \
\
/* lob */ \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LOB_CREATE_DIR) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_LOB_REMOVE_DIR) \
\
/* cleanfiledb - hidden utility */ \
NET_SERVER_REQUEST_ITEM(NET_SERVER_CLEANFILEDB_DUMP_FILE_LIST) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_CLEANFILEDB_CLEAN_INVALID_FILE) \
NET_SERVER_REQUEST_ITEM(NET_SERVER_CLEANFILEDB_DELETE_TARGET_FILE) // Debug only: unsafe, may break DB consistency
enum net_server_request
{
NET_SERVER_REQUEST_START,
#define NET_SERVER_REQUEST_ITEM(name) name,
NET_SERVER_REQUEST_LIST
#undef NET_SERVER_REQUEST_ITEM
NET_SERVER_REQUEST_END,
/*
* This request number must be preserved.
*/
NET_SERVER_PING_WITH_HANDSHAKE = 999
};
/* Server/client capabilities */
#define NET_CAP_BACKWARD_COMPATIBLE 0x80000000
#define NET_CAP_FORWARD_COMPATIBLE 0x40000000
#define NET_CAP_INTERRUPT_ENABLED 0x00800000
#define NET_CAP_UPDATE_DISABLED 0x00008000
#define NET_CAP_REMOTE_DISABLED 0x00000080
#define NET_CAP_HA_REPL_DELAY 0x00000008
#define NET_CAP_HA_REPLICA 0x00000004
#define NET_CAP_HA_IGNORE_REPL_DELAY 0x00000002
typedef enum
{ /* Responses to a query */
QUERY_END = 1, /* Normal end of query */
METHOD_CALL, /* Invoke methods */
ASYNC_OBTAIN_USER_INPUT, /* server needs info from operator */
GET_NEXT_LOG_PAGES, /* log writer uses this type of request */
END_CALLBACK, /* normal end of non-query callback */
CONSOLE_OUTPUT
} QUERY_SERVER_REQUEST;
/* Server startup */
extern int net_server_start (const char *name);
/* Misc */
extern const char *get_capability_string (int cap, int cap_type);
extern const char *get_net_request_name (int request);
typedef enum
{
NET_ENDIAN_UNKNOWN = 0,
NET_ENDIAN_LITTLE = 1,
NET_ENDIAN_BIG = 2
} NET_ENDIAN;
__inline NET_ENDIAN
get_endian_type ()
{
unsigned int e_v = 0x12345678;
unsigned char *e_p = (unsigned char *) (&e_v);
return ((e_p[0] == 0x78) ? NET_ENDIAN_LITTLE : (e_p[0] == 0x12) ? NET_ENDIAN_BIG : NET_ENDIAN_UNKNOWN);
}
#endif /* _NETWORK_H_ */