CUBRID Engine  latest
shard_proxy_handler.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  * shard_proxy_handler.h -
22  *
23  */
24 
25 #ifndef _SHARD_PROXY_HANDLER_H_
26 #define _SHARD_PROXY_HANDLER_H_
27 
28 #ident "$Id$"
29 
30 
31 #include "porting.h"
32 #include "shard_proxy_common.h"
33 
34 typedef int (*T_PROXY_EVENT_FUNC) (char *driver_info, char **buffer);
35 typedef int (*T_PROXY_EVENT_FUNC_EX) (char *driver_info, char **buffer, void *argv);
36 
37 extern T_WAIT_CONTEXT *proxy_waiter_new (int ctx_cid, unsigned int ctx_uid, int timeout);
38 extern void proxy_waiter_free (T_WAIT_CONTEXT * waiter);
39 extern void proxy_waiter_timeout (T_SHARD_QUEUE * waitq, INT64 * counter, int now);
40 extern int proxy_waiter_comp_fn (const void *arg1, const void *arg2);
41 
42 
43 extern bool proxy_handler_is_cas_in_tran (int shard_id, int cas_id);
44 extern void proxy_context_set_error (T_PROXY_CONTEXT * ctx_p, int error_ind, int error_code);
45 extern void proxy_context_set_error_with_msg (T_PROXY_CONTEXT * ctx_p, int error_ind, int error_code,
46  const char *error_msg);
47 extern void proxy_context_clear_error (T_PROXY_CONTEXT * ctx_p);
48 extern int proxy_context_send_error (T_PROXY_CONTEXT * ctx_p);
49 
50 extern void proxy_context_set_in_tran (T_PROXY_CONTEXT * ctx_p, int shard_id, int cas_id);
51 extern void proxy_context_set_out_tran (T_PROXY_CONTEXT * ctx_p);
52 
53 extern T_PROXY_CONTEXT *proxy_context_new (void);
54 extern void proxy_context_free (T_PROXY_CONTEXT * ctx_p);
55 #if defined (ENABLE_UNUSED_FUNCTION)
56 extern void proxy_context_free_by_cid (int cid, unsigned int uid);
57 #endif /* ENABLE_UNUSED_FUNCTION */
58 extern T_PROXY_CONTEXT *proxy_context_find (int cid, unsigned int uid);
60 extern T_CONTEXT_STMT *proxy_context_find_stmt (T_PROXY_CONTEXT * ctx_p, int stmt_h_id);
62 extern void proxy_context_free_stmt (T_PROXY_CONTEXT * ctx_p);
63 extern void proxy_context_timeout (T_PROXY_CONTEXT * ctx_p);
64 
65 #if defined (PROXY_VERBOSE_DEBUG)
66 extern void proxy_context_dump_stmt (FILE * fp, T_PROXY_CONTEXT * ctx_p);
67 extern void proxy_context_dump_title (FILE * fp);
68 extern void proxy_context_dump (FILE * fp, T_PROXY_CONTEXT * ctx_p);
69 extern void proxy_context_dump_all (FILE * fp);
70 extern void proxy_context_print (bool print_all);
71 #endif /* PROXY_VERBOSE_DEBUG */
72 extern char *proxy_str_context (T_PROXY_CONTEXT * ctx_p);
73 
74 
75 extern void proxy_handler_destroy (void);
76 extern int proxy_handler_initialize (void);
77 extern void proxy_handler_process (void);
78 
79 extern int proxy_wakeup_context_by_shard (T_WAIT_CONTEXT * waiter_p, int shard_id, int cas_id);
81 
82 extern T_PROXY_EVENT *proxy_event_new (unsigned int type, int from_cas);
83 extern T_PROXY_EVENT *proxy_event_dup (T_PROXY_EVENT * event_p);
84 extern T_PROXY_EVENT *proxy_event_new_with_req (char *driver_info, unsigned int type, int from,
85  T_PROXY_EVENT_FUNC req_func);
86 extern T_PROXY_EVENT *proxy_event_new_with_rsp (char *driver_info, unsigned int type, int from,
87  T_PROXY_EVENT_FUNC resp_func);
88 extern T_PROXY_EVENT *proxy_event_new_with_rsp_ex (char *driver_info, unsigned int type, int from,
89  T_PROXY_EVENT_FUNC_EX resp_func, void *argv);
90 extern T_PROXY_EVENT *proxy_event_new_with_error (char *driver_info, unsigned int type, int from,
91  int (*err_func) (char *driver_info, char **buffer, int error_ind,
92  int error_code, const char *error_msg,
93  char is_in_tran), int error_ind, int error_code,
94  const char *error_msg, char is_in_tran);
95 
96 extern int proxy_event_alloc_buffer (T_PROXY_EVENT * event_p, unsigned int size);
97 extern int proxy_event_realloc_buffer (T_PROXY_EVENT * event_p, unsigned int size);
98 extern void proxy_event_set_buffer (T_PROXY_EVENT * event_p, char *data, unsigned int size);
99 extern void proxy_event_set_type_from (T_PROXY_EVENT * event_p, unsigned int type, int from_cas);
100 extern void proxy_event_set_context (T_PROXY_EVENT * event_p, int cid, unsigned int uid);
101 extern void proxy_event_set_shard (T_PROXY_EVENT * event_p, int shard_id, int cas_id);
102 extern bool proxy_event_io_read_complete (T_PROXY_EVENT * event_p);
103 #if defined (ENABLE_UNUSED_FUNCTION)
104 extern bool proxy_event_io_write_complete (T_PROXY_EVENT * event_p);
105 #endif /* ENABLE_UNUSED_FUNCTION */
106 extern void proxy_event_free (T_PROXY_EVENT * event_p);
107 extern char *proxy_str_event (T_PROXY_EVENT * event_p);
108 
109 extern void proxy_timer_process (void);
110 
111 extern char *shard_str_sqls (char *sql);
112 #endif /* _SHARD_PROXY_HANDLER_H_ */
int(* T_PROXY_EVENT_FUNC)(char *driver_info, char **buffer)
void proxy_event_free(T_PROXY_EVENT *event_p)
int proxy_context_send_error(T_PROXY_CONTEXT *ctx_p)
int proxy_handler_initialize(void)
bool proxy_event_io_read_complete(T_PROXY_EVENT *event_p)
char * proxy_str_event(T_PROXY_EVENT *event_p)
void proxy_handler_process(void)
T_PROXY_EVENT * proxy_event_dup(T_PROXY_EVENT *event_p)
void proxy_context_clear_error(T_PROXY_CONTEXT *ctx_p)
int proxy_wakeup_context_by_shard(T_WAIT_CONTEXT *waiter_p, int shard_id, int cas_id)
void proxy_context_free_stmt(T_PROXY_CONTEXT *ctx_p)
void proxy_context_set_out_tran(T_PROXY_CONTEXT *ctx_p)
T_PROXY_EVENT * proxy_event_new_with_error(char *driver_info, unsigned int type, int from, int(*err_func)(char *driver_info, char **buffer, int error_ind, int error_code, const char *error_msg, char is_in_tran), int error_ind, int error_code, const char *error_msg, char is_in_tran)
int proxy_waiter_comp_fn(const void *arg1, const void *arg2)
void proxy_event_set_type_from(T_PROXY_EVENT *event_p, unsigned int type, int from_cas)
T_PROXY_EVENT * proxy_event_new_with_rsp(char *driver_info, unsigned int type, int from, T_PROXY_EVENT_FUNC resp_func)
char * shard_str_sqls(char *sql)
void proxy_timer_process(void)
int proxy_event_realloc_buffer(T_PROXY_EVENT *event_p, unsigned int size)
T_PROXY_EVENT * proxy_event_new_with_req(char *driver_info, unsigned int type, int from, T_PROXY_EVENT_FUNC req_func)
T_CONTEXT_STMT * proxy_context_add_stmt(T_PROXY_CONTEXT *ctx_p, T_SHARD_STMT *stmt_p)
void proxy_context_set_error(T_PROXY_CONTEXT *ctx_p, int error_ind, int error_code)
T_PROXY_EVENT * proxy_event_new_with_rsp_ex(char *driver_info, unsigned int type, int from, T_PROXY_EVENT_FUNC_EX resp_func, void *argv)
T_PROXY_CONTEXT * proxy_context_find_by_socket_client_io(T_SOCKET_IO *sock_io_p)
void proxy_waiter_timeout(T_SHARD_QUEUE *waitq, INT64 *counter, int now)
T_PROXY_CONTEXT * proxy_context_find(int cid, unsigned int uid)
T_WAIT_CONTEXT * proxy_waiter_new(int ctx_cid, unsigned int ctx_uid, int timeout)
void proxy_event_set_buffer(T_PROXY_EVENT *event_p, char *data, unsigned int size)
T_PROXY_CONTEXT * proxy_context_new(void)
void proxy_context_set_error_with_msg(T_PROXY_CONTEXT *ctx_p, int error_ind, int error_code, const char *error_msg)
void proxy_event_set_shard(T_PROXY_EVENT *event_p, int shard_id, int cas_id)
void proxy_event_set_context(T_PROXY_EVENT *event_p, int cid, unsigned int uid)
void proxy_handler_destroy(void)
const char ** argv
Definition: dynamic_load.c:952
void proxy_context_free(T_PROXY_CONTEXT *ctx_p)
char * proxy_str_context(T_PROXY_CONTEXT *ctx_p)
void proxy_context_set_in_tran(T_PROXY_CONTEXT *ctx_p, int shard_id, int cas_id)
int proxy_wakeup_context_by_statement(T_WAIT_CONTEXT *waiter_p)
bool proxy_handler_is_cas_in_tran(int shard_id, int cas_id)
T_PROXY_EVENT * proxy_event_new(unsigned int type, int from_cas)
int proxy_event_alloc_buffer(T_PROXY_EVENT *event_p, unsigned int size)
void proxy_waiter_free(T_WAIT_CONTEXT *waiter)
T_CONTEXT_STMT * proxy_context_find_stmt(T_PROXY_CONTEXT *ctx_p, int stmt_h_id)
int(* T_PROXY_EVENT_FUNC_EX)(char *driver_info, char **buffer, void *argv)
void proxy_context_timeout(T_PROXY_CONTEXT *ctx_p)