Cleanup
This commit is contained in:
parent
e56da8b188
commit
1fcd5785ab
191
core/gw_utils.c
191
core/gw_utils.c
@ -71,133 +71,6 @@ void gw_daemonize(void) {
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////
|
||||
// Generic read from filedescriptor
|
||||
//////////////////////////////////////
|
||||
int do_read_fd(int fd) {
|
||||
char buf[MAX_BUFFER_SIZE]="";
|
||||
int n;
|
||||
|
||||
n = read(fd, buf, MAX_BUFFER_SIZE);
|
||||
|
||||
if (n == 0) {
|
||||
fprintf(stderr, "Generic Socket EOF\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (n < 0) {
|
||||
fprintf(stderr, "Read error: %i [%s]\n", errno, strerror(errno));
|
||||
if ((errno != EAGAIN) || (errno != EWOULDBLOCK))
|
||||
return -1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef DEBUG_GATEWAY_READ
|
||||
fprintf(stderr, "socket %i, do_read %i bytes\n", fd, n);
|
||||
#endif
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
int do_read_dcb10(DCB *dcb) {
|
||||
char buf[MAX_BUFFER_SIZE]="";
|
||||
int n;
|
||||
n = read(dcb->fd, buf, 10);
|
||||
|
||||
if (n == 0) {
|
||||
fprintf(stderr, "Read DCB Socket EOF\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (n < 0) {
|
||||
fprintf(stderr, "ReadDcb error: %i [%s]\n", errno, strerror(errno));
|
||||
if ((errno != EAGAIN) || (errno != EWOULDBLOCK))
|
||||
return -1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef GW_READ_DEBUG
|
||||
fprintf(stderr, "socket %i, do_read % i bytes, [%s]\n", dcb->fd, n, buf+5);
|
||||
#endif
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
int do_read_dcb(DCB *dcb) {
|
||||
char buf[MAX_BUFFER_SIZE]="";
|
||||
int n;
|
||||
n = read(dcb->fd, buf, MAX_BUFFER_SIZE);
|
||||
|
||||
if (n == 0) {
|
||||
fprintf(stderr, "Read DCB Socket EOF\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (n < 0) {
|
||||
fprintf(stderr, "ReadDcb error: %i [%s]\n", errno, strerror(errno));
|
||||
if ((errno != EAGAIN) || (errno != EWOULDBLOCK))
|
||||
return -1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef GW_READ_DEBUG
|
||||
fprintf(stderr, "socket %i, do_read % i bytes, [%s]\n", dcb->fd, n, buf+5);
|
||||
#endif
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
int do_read_buffer10(DCB *dcb, uint8_t *buffer) {
|
||||
int n;
|
||||
n = read(dcb->fd, buffer, 10);
|
||||
|
||||
if (n == 0 & (errno==EOF)) {
|
||||
fprintf(stderr, "ReadBuffer Socket EOF\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (n < 0) {
|
||||
fprintf(stderr, "ReadBuffer error: %i [%s]\n", errno, strerror(errno));
|
||||
if ((errno != EAGAIN) || (errno != EWOULDBLOCK))
|
||||
return -1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef GW_READ_DEBUG
|
||||
fprintf(stderr, "socket %i, do_read % i bytes\n", dcb->fd, n);
|
||||
#endif
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
int do_read_buffer(DCB *dcb, uint8_t *buffer) {
|
||||
int n;
|
||||
n = read(dcb->fd, buffer, MAX_BUFFER_SIZE);
|
||||
|
||||
if (n == 0 & (errno==EOF)) {
|
||||
fprintf(stderr, "ReadBuffer Socket EOF\n");
|
||||
return -2;
|
||||
}
|
||||
|
||||
if (n < 0) {
|
||||
fprintf(stderr, "ReadBuffer error: %i [%s]\n", errno, strerror(errno));
|
||||
if ((errno != EAGAIN) || (errno != EWOULDBLOCK))
|
||||
return -1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef GW_READ_DEBUG
|
||||
fprintf(stderr, "socket %i, do_read % i bytes\n", dcb->fd, n);
|
||||
#endif
|
||||
|
||||
return n;
|
||||
}
|
||||
/////////////////////////////////////////////////
|
||||
// Read data from dcb and store it in the gwbuf
|
||||
/////////////////////////////////////////////////
|
||||
@ -262,67 +135,3 @@ int gw_read_gwbuff(DCB *dcb, GWBUF **head, int b) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new MySQL backend connection.
|
||||
*
|
||||
* This routine performs the MySQL connection to the backend and fills the session->backends of the callier dcb
|
||||
* with the new allocatetd dcb and adds the new socket to the poll set
|
||||
*
|
||||
* - backend dcb allocation
|
||||
* - MySQL session data fetch
|
||||
* - backend connection using data in MySQL session
|
||||
*
|
||||
* @param client_dcb The client DCB struct
|
||||
* @return 0 on Success or 1 on Failure.
|
||||
*/
|
||||
int create_backend_connection(DCB *client_dcb) {
|
||||
DCB *backend = NULL;
|
||||
MySQLProtocol *ptr_proto = NULL;
|
||||
MySQLProtocol *client_protocol = NULL;
|
||||
SESSION *session = NULL;
|
||||
MYSQL_session *s_data = NULL;
|
||||
|
||||
backend = (DCB *) calloc(1, sizeof(DCB));
|
||||
backend->state = DCB_STATE_ALLOC;
|
||||
backend->session = NULL;
|
||||
backend->protocol = (MySQLProtocol *)gw_mysql_init(NULL);
|
||||
|
||||
ptr_proto = (MySQLProtocol *)backend->protocol;
|
||||
client_protocol = (MySQLProtocol *)client_dcb->protocol;
|
||||
session = DCB_SESSION(client_dcb);
|
||||
s_data = (MYSQL_session *)session->data;
|
||||
|
||||
// this is blocking until auth done
|
||||
if (gw_mysql_connect("127.0.0.1", 3306, s_data->db, s_data->user, s_data->client_sha1, backend->protocol) == 0) {
|
||||
fprintf(stderr, "Connected to backend mysql server\n");
|
||||
backend->fd = ptr_proto->fd;
|
||||
setnonblocking(backend->fd);
|
||||
} else {
|
||||
fprintf(stderr, "<<<< NOT Connected to backend mysql server!!!\n");
|
||||
backend->fd = -1;
|
||||
}
|
||||
|
||||
// if connected, add it to the poll
|
||||
if (backend->fd > 0) {
|
||||
if (poll_add_dcb(backend) == -1) {
|
||||
perror("poll_ctl: backend sock");
|
||||
} else {
|
||||
fprintf(stderr, "--> Backend conn added, bk_fd [%i], scramble [%s], is session with client_fd [%i]\n", ptr_proto->fd, ptr_proto->scramble, client_dcb->fd);
|
||||
backend->state = DCB_STATE_POLLING;
|
||||
backend->session = DCB_SESSION(client_dcb);
|
||||
(backend->func).read = gw_read_backend_event;
|
||||
(backend->func).write = MySQLWrite;
|
||||
(backend->func).write_ready = gw_write_backend_event;
|
||||
(backend->func).error = handle_event_errors_backend;
|
||||
|
||||
// assume here one backend only.
|
||||
// in session.h
|
||||
// struct dcb *backends;
|
||||
// instead of a list **backends;
|
||||
client_dcb->session->backends = backend;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
//////
|
||||
|
Loading…
x
Reference in New Issue
Block a user