19#define DRIZZLE_RETURN_CHECK(__ret, __function, __drizzle) \
21 if ((__ret) != DRIZZLE_RETURN_OK) \
22 DRIZZLE_RETURN_ERROR(__function, __drizzle) \
25#define DRIZZLE_RETURN_ERROR(__function, __drizzle) \
27 printf(__function ":%s\n", drizzle_error(__drizzle)); \
35int main(
int argc,
char *argv[])
39 const char *server_host= NULL;
40 const char *client_host= NULL;
41 bool server_mysql=
false;
42 bool client_mysql=
false;
43 in_port_t server_port= 0;
44 in_port_t client_port= 0;
55 while((c = getopt(argc, argv,
"c:h:H:mMp:P:v")) != -1)
60 count= (uint32_t)atoi(optarg);
80 server_port= (in_port_t)atoi(optarg);
84 client_port= (in_port_t)atoi(optarg);
92 printf(
"\nusage: %s [-c <count>] [-h <host>] [-H <host>] [-m] [-M] "
93 "[-p <port>] [-p <port>] [-v]\n", argv[0]);
94 printf(
"\t-c <count> - Number of connections to accept before exiting\n");
95 printf(
"\t-h <host> - Host to listen on\n");
96 printf(
"\t-H <host> - Host to connect to\n");
97 printf(
"\t-m - Use MySQL protocol for incoming connections\n");
98 printf(
"\t-M - Use MySQL protocol for outgoing connectionsn\n");
99 printf(
"\t-p <port> - Port to listen on\n");
100 printf(
"\t-P <port> - Port to connect to\n");
101 printf(
"\t-v - Increase verbosity level\n");
108 printf(
"drizzle_create:NULL\n");
117 printf(
"drizzle_con_create:NULL\n");
144 printf(
"drizzle_con_create:NULL\n");
161 proxy(&drizzle, &
server, &client, &server_result, &client_result, &column);
251 if ((offset + size) == total)
336 while (row_break ==
false)
@ DRIZZLE_COMMAND_FIELD_LIST
Drizzle Declarations for Clients.
Drizzle Declarations for Servers.
drizzle_column_st * drizzle_column_read(drizzle_result_st *result, drizzle_column_st *column, drizzle_return_t *ret_ptr)
drizzle_return_t drizzle_column_write(drizzle_result_st *result, drizzle_column_st *column)
void drizzle_column_free(drizzle_column_st *column)
drizzle_return_t drizzle_con_connect(drizzle_con_st *con)
drizzle_result_st * drizzle_con_command_write(drizzle_con_st *con, drizzle_result_st *result, drizzle_command_t command, const void *data, size_t size, size_t total, drizzle_return_t *ret_ptr)
void drizzle_con_copy_handshake(drizzle_con_st *con, drizzle_con_st *from)
void drizzle_con_set_status(drizzle_con_st *con, drizzle_con_status_t status)
drizzle_return_t drizzle_con_listen(drizzle_con_st *con)
void * drizzle_con_command_read(drizzle_con_st *con, drizzle_command_t *command, size_t *offset, size_t *size, size_t *total, drizzle_return_t *ret_ptr)
void drizzle_con_set_tcp(drizzle_con_st *con, const char *host, in_port_t port)
drizzle_con_status_t drizzle_con_status(const drizzle_con_st *con)
void drizzle_con_add_options(drizzle_con_st *con, drizzle_con_options_t options)
@ DRIZZLE_CON_RAW_SCRAMBLE
@ DRIZZLE_RETURN_LOST_CONNECTION
@ DRIZZLE_RETURN_ROW_BREAK
drizzle_field_t drizzle_field_read(drizzle_result_st *result, size_t *offset, size_t *size, size_t *total, drizzle_return_t *ret_ptr)
drizzle_return_t drizzle_field_write(drizzle_result_st *result, const drizzle_field_t field, size_t size, size_t total)
drizzle_return_t drizzle_handshake_server_read(drizzle_con_st *con)
drizzle_return_t drizzle_handshake_client_write(drizzle_con_st *con)
drizzle_return_t drizzle_handshake_client_read(drizzle_con_st *con)
drizzle_return_t drizzle_handshake_server_write(drizzle_con_st *con)
size_t drizzle_result_row_size(drizzle_result_st *result)
drizzle_result_st * drizzle_result_read(drizzle_con_st *con, drizzle_result_st *result, drizzle_return_t *ret_ptr)
void drizzle_result_set_eof(drizzle_result_st *result, bool eof)
void drizzle_result_set_row_size(drizzle_result_st *result, size_t size)
drizzle_return_t drizzle_result_write(drizzle_con_st *con, drizzle_result_st *result, bool flush)
drizzle_result_st * drizzle_result_create(drizzle_con_st *con, drizzle_result_st *result)
uint16_t drizzle_result_column_count(drizzle_result_st *result)
bool drizzle_result_eof(drizzle_result_st *result)
uint16_t drizzle_result_error_code(drizzle_result_st *result)
void drizzle_result_free(drizzle_result_st *result)
drizzle_result_st * drizzle_result_clone(drizzle_con_st *con, drizzle_result_st *result, drizzle_result_st *from)
uint64_t drizzle_row_read(drizzle_result_st *result, drizzle_return_t *ret_ptr)
drizzle_return_t drizzle_row_write(drizzle_result_st *result)
drizzle_con_st * drizzle_con_accept(drizzle_st *drizzle, drizzle_con_st *con, drizzle_return_t *ret_ptr)
struct drizzle_result_st drizzle_result_st
struct drizzle_con_st drizzle_con_st
struct drizzle_st drizzle_st
struct drizzle_column_st drizzle_column_st
drizzle_con_st * drizzle_con_create(drizzle_st *drizzle, drizzle_con_st *con)
const char * drizzle_error(const drizzle_st *drizzle)
void drizzle_set_verbose(drizzle_st *drizzle, drizzle_verbose_t verbose)
void drizzle_free(drizzle_st *drizzle)
void drizzle_add_options(drizzle_st *drizzle, drizzle_options_t options)
drizzle_st * drizzle_create(drizzle_st *drizzle)
void drizzle_con_free(drizzle_con_st *con)
#define DRIZZLE_RETURN_CHECK(__ret, __function, __drizzle)
int main(int argc, char *argv[])
static void proxy(drizzle_st *drizzle, drizzle_con_st *server, drizzle_con_st *client, drizzle_result_st *server_result, drizzle_result_st *client_result, drizzle_column_st *column)
#define DRIZZLE_RETURN_ERROR(__function, __drizzle)
static void server(drizzle_st *drizzle, drizzle_con_st *con, drizzle_result_st *result, drizzle_column_st *column)