CUBRID Engine  latest
connection_support.h
Go to the documentation of this file.
1 /*
2  * Copyright 2008 Search Solution Corporation
3  * Copyright 2016 CUBRID Corporation
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 
20 /*
21  * connection_support.h -
22  */
23 
24 #ifndef _CONNECTION_SUPPORT_H_
25 #define _CONNECTION_SUPPORT_H_
26 
27 #ident "$Id$"
28 
29 #include "connection_defs.h"
30 
31 #if defined (WINDOWS)
32 #include <winsock2.h>
33 typedef WSAPOLLFD POLL_FD;
34 /* Corresponds to the structure we set up on Unix platforms to pass to readv & writev. */
35 struct iovec
36 {
37  char *iov_base;
38  long iov_len;
39 };
40 #else
41 #include <sys/poll.h>
42 typedef struct pollfd POLL_FD;
43 #endif
44 
45 #if defined (ENABLE_UNUSED_FUNCTION)
46 extern int css_net_send_no_block (SOCKET fd, const char *buffer, int size);
47 #endif
48 
49 typedef void (*CSS_SERVER_TIMEOUT_FN) (void);
50 /* check server alive */
51 typedef bool (*CSS_CHECK_SERVER_ALIVE_FN) (const char *, const char *);
53 
54 extern int css_readn (SOCKET fd, char *ptr, int nbytes, int timeout);
55 extern void css_read_remaining_bytes (SOCKET fd, int len);
56 
57 extern int css_net_recv (SOCKET fd, char *buffer, int *maxlen, int timeout);
58 extern int css_net_send (CSS_CONN_ENTRY * conn, const char *buff, int len, int timeout);
59 extern int css_net_send_buffer_only (CSS_CONN_ENTRY * conn, const char *buff, int len, int timeout);
60 
61 extern int css_net_read_header (SOCKET fd, char *buffer, int *maxlen, int timeout);
62 
63 extern int css_send_request_with_data_buffer (CSS_CONN_ENTRY * conn, int request, unsigned short *rid,
64  const char *arg_buffer, int arg_buffer_size, char *data_buffer,
65  int data_buffer_size);
66 
67 #if defined (CS_MODE) || defined (SA_MODE)
68 extern int css_send_request_no_reply (CSS_CONN_ENTRY * conn, int request, unsigned short *request_id, char *arg_buffer,
69  int arg_size);
70 extern int css_send_req_with_2_buffers (CSS_CONN_ENTRY * conn, int request, unsigned short *request_id,
71  char *arg_buffer, int arg_size, char *data_buffer, int data_size,
72  char *reply_buffer, int reply_size);
73 extern int css_send_req_with_3_buffers (CSS_CONN_ENTRY * conn, int request, unsigned short *request_id,
74  char *arg_buffer, int arg_size, char *data1_buffer, int data1_size,
75  char *data2_buffer, int data2_size, char *reply_buffer, int reply_size);
76 #if 0
77 extern int css_send_req_with_large_buffer (CSS_CONN_ENTRY * conn, int request, unsigned short *request_id,
78  char *arg_buffer, int arg_size, char *data_buffer, INT64 data_size,
79  char *reply_buffer, int reply_size);
80 #endif
81 #endif /* CS_MODE || SA_MODE */
82 
83 extern int css_send_request (CSS_CONN_ENTRY * conn, int request, unsigned short *rid, const char *arg_buffer,
84  int arg_buffer_size);
85 
86 extern int css_send_data (CSS_CONN_ENTRY * conn, unsigned short rid, const char *buffer, int buffer_size);
87 #if defined (SERVER_MODE)
88 extern int css_send_two_data (CSS_CONN_ENTRY * conn, unsigned short rid, const char *buffer1, int buffer1_size,
89  const char *buffer2, int buffer2_size);
90 extern int css_send_three_data (CSS_CONN_ENTRY * conn, unsigned short rid, const char *buffer1, int buffer1_size,
91  const char *buffer2, int buffer2_size, const char *buffer3, int buffer3_size);
92 extern int css_send_four_data (CSS_CONN_ENTRY * conn, unsigned short rid, const char *buffer1, int buffer1_size,
93  const char *buffer2, int buffer2_size, const char *buffer3, int buffer3_size,
94  const char *buffer4, int buffer4_size);
95 #endif /* SERVER_MODE */
96 extern int css_send_error (CSS_CONN_ENTRY * conn, unsigned short rid, const char *buffer, int buffer_size);
97 #if defined (ENABLE_UNUSED_FUNCTION)
98 extern int css_send_large_data (CSS_CONN_ENTRY * conn, unsigned short rid, const char **buffers, int *buffers_size,
99  int num_buffers);
100 extern int css_local_host_name (CSS_CONN_ENTRY * conn, char *hostname, size_t namelen);
101 
102 extern int css_peer_host_name (CSS_CONN_ENTRY * conn, char *hostname, size_t namelen);
103 #endif
104 extern const char *css_ha_server_state_string (HA_SERVER_STATE state);
105 extern const char *css_ha_applier_state_string (HA_LOG_APPLIER_STATE state);
106 extern const char *css_ha_mode_string (HA_MODE mode);
107 
108 #if !defined (SERVER_MODE)
109 extern void css_register_server_timeout_fn (CSS_SERVER_TIMEOUT_FN callback_fn);
111 #endif /* !SERVER_MODE */
112 
113 extern int css_send_magic (CSS_CONN_ENTRY * conn);
114 extern int css_check_magic (CSS_CONN_ENTRY * conn);
115 
116 extern int css_check_magic_with_socket (SOCKET fd);
117 
118 extern int css_user_access_status_start_scan (THREAD_ENTRY * thread_p, int type, DB_VALUE ** arg_values, int arg_cnt,
119  void **ptr);
120 extern int css_platform_independent_poll (POLL_FD * fds, int num_of_fds, int timeout);
121 extern int css_vector_send (SOCKET fd, struct iovec *vec[], int *len, int bytes_written, int timeout);
122 extern void css_set_net_header (NET_HEADER * header_p, int type, short function_code, int request_id, int buffer_size,
123  int transaction_id, int invalidate_snapshot, int db_error);
124 extern void css_set_io_vector (struct iovec *vec1_p, struct iovec *vec2_p, const char *buff, int len, int *templen);
125 extern int css_send_io_vector_with_socket (SOCKET & socket, struct iovec *vec_p, ssize_t total_len, int vector_length,
126  int timeout);
127 extern int css_send_magic_with_socket (SOCKET & socket);
128 extern int css_net_send_with_socket (SOCKET & socket, const char *buff, int len, int timeout);
129 extern int css_net_send3_with_socket (SOCKET & socket, const char *buff1, int len1, const char *buff2, int len2,
130  const char *buff3, int len3);
131 extern int css_send_request_with_socket (SOCKET & socket, int command, unsigned short *request_id,
132  const char *arg_buffer, int arg_buffer_size);
133 #endif /* _CONNECTION_SUPPORT_H_ */
int css_net_recv(SOCKET fd, char *buffer, int *maxlen, int timeout)
const char * css_ha_applier_state_string(HA_LOG_APPLIER_STATE state)
void css_register_check_server_alive_fn(CSS_CHECK_SERVER_ALIVE_FN callback_fn)
const char * css_ha_mode_string(HA_MODE mode)
void css_set_io_vector(struct iovec *vec1_p, struct iovec *vec2_p, const char *buff, int len, int *templen)
int SOCKET
Definition: porting.h:482
int css_platform_independent_poll(POLL_FD *fds, int num_of_fds, int timeout)
int css_send_request(CSS_CONN_ENTRY *conn, int request, unsigned short *rid, const char *arg_buffer, int arg_buffer_size)
int css_send_request_with_data_buffer(CSS_CONN_ENTRY *conn, int request, unsigned short *rid, const char *arg_buffer, int arg_buffer_size, char *data_buffer, int data_buffer_size)
struct pollfd POLL_FD
CSS_CHECK_SERVER_ALIVE_FN css_check_server_alive_fn
#define bool
Definition: dbi_compat.h:31
int css_check_magic(CSS_CONN_ENTRY *conn)
int css_net_send3_with_socket(SOCKET &socket, const char *buff1, int len1, const char *buff2, int len2, const char *buff3, int len3)
void THREAD_ENTRY
int css_check_magic_with_socket(SOCKET fd)
void css_set_net_header(NET_HEADER *header_p, int type, short function_code, int request_id, int buffer_size, int transaction_id, int invalidate_snapshot, int db_error)
int css_vector_send(SOCKET fd, struct iovec *vec[], int *len, int bytes_written, int timeout)
static enum scanner_mode mode
enum ha_log_applier_state HA_LOG_APPLIER_STATE
void css_read_remaining_bytes(SOCKET fd, int len)
int css_net_send_with_socket(SOCKET &socket, const char *buff, int len, int timeout)
int css_send_io_vector_with_socket(SOCKET &socket, struct iovec *vec_p, ssize_t total_len, int vector_length, int timeout)
int css_net_send(CSS_CONN_ENTRY *conn, const char *buff, int len, int timeout)
int css_net_read_header(SOCKET fd, char *buffer, int *maxlen, int timeout)
int css_net_send_buffer_only(CSS_CONN_ENTRY *conn, const char *buff, int len, int timeout)
bool(* CSS_CHECK_SERVER_ALIVE_FN)(const char *, const char *)
int css_user_access_status_start_scan(THREAD_ENTRY *thread_p, int type, DB_VALUE **arg_values, int arg_cnt, void **ptr)
int css_send_data(CSS_CONN_ENTRY *conn, unsigned short rid, const char *buffer, int buffer_size)
void(* CSS_SERVER_TIMEOUT_FN)(void)
void css_register_server_timeout_fn(CSS_SERVER_TIMEOUT_FN callback_fn)
enum ha_mode HA_MODE
enum ha_server_state HA_SERVER_STATE
Definition: boot.h:126
int css_send_request_with_socket(SOCKET &socket, int command, unsigned short *request_id, const char *arg_buffer, int arg_buffer_size)
const char * css_ha_server_state_string(HA_SERVER_STATE state)
int css_readn(SOCKET fd, char *ptr, int nbytes, int timeout)
int css_send_magic_with_socket(SOCKET &socket)
int css_send_error(CSS_CONN_ENTRY *conn, unsigned short rid, const char *buffer, int buffer_size)
int css_send_magic(CSS_CONN_ENTRY *conn)