20
20
the file descriptior.
25
23
#define DONT_MAP_VIO
37
namespace drizzle_protocol
24
#include <drizzled/global.h>
25
#include <libdrizzle/vio.h>
41
30
* Helper to fill most of the Vio* with defaults.
44
static void drizzleclient_vio_init(Vio* vio, enum enum_vio_type type,
33
static void vio_init(Vio* vio, enum enum_vio_type type,
45
34
int sd, uint32_t flags)
36
#ifndef HAVE_VIO_READ_BUFF
37
flags&= ~VIO_BUFFERED_READ;
47
39
memset(vio, 0, sizeof(*vio));
51
43
!(vio->read_buffer= (char*)malloc(VIO_READ_BUFFER_SIZE)))
52
44
flags&= ~VIO_BUFFERED_READ;
54
vio->viodelete =drizzleclient_vio_delete;
55
vio->vioerrno =drizzleclient_vio_errno;
56
vio->read= (flags & VIO_BUFFERED_READ) ? drizzleclient_vio_read_buff : drizzleclient_vio_read;
57
vio->write =drizzleclient_vio_write;
58
vio->fastsend =drizzleclient_vio_fastsend;
59
vio->viokeepalive =drizzleclient_vio_keepalive;
60
vio->should_retry =drizzleclient_vio_should_retry;
61
vio->was_interrupted=drizzleclient_vio_was_interrupted;
62
vio->vioclose =drizzleclient_vio_close;
63
vio->peer_addr =drizzleclient_vio_peer_addr;
64
vio->vioblocking =drizzleclient_vio_blocking;
65
vio->is_blocking =drizzleclient_vio_is_blocking;
66
vio->timeout =drizzleclient_vio_timeout;
46
vio->viodelete =vio_delete;
47
vio->vioerrno =vio_errno;
48
vio->read= (flags & VIO_BUFFERED_READ) ? vio_read_buff : vio_read;
49
vio->write =vio_write;
50
vio->fastsend =vio_fastsend;
51
vio->viokeepalive =vio_keepalive;
52
vio->should_retry =vio_should_retry;
53
vio->was_interrupted=vio_was_interrupted;
54
vio->vioclose =vio_close;
55
vio->peer_addr =vio_peer_addr;
56
vio->vioblocking =vio_blocking;
57
vio->is_blocking =vio_is_blocking;
58
vio->timeout =vio_timeout;
71
63
/* Reset initialized VIO to use with another transport type */
73
void drizzleclient_vio_reset(Vio* vio, enum enum_vio_type type,
65
void vio_reset(Vio* vio, enum enum_vio_type type,
74
66
int sd, uint32_t flags)
76
68
free(vio->read_buffer);
77
drizzleclient_vio_init(vio, type, sd, flags);
69
vio_init(vio, type, sd, flags);
81
73
/* Open the socket or TCP/IP connection and read the fnctl() status */
83
Vio *drizzleclient_vio_new(int sd, enum enum_vio_type type, uint32_t flags)
75
Vio *vio_new(int sd, enum enum_vio_type type, uint32_t flags)
85
77
Vio *vio = (Vio*) malloc(sizeof(Vio));
89
drizzleclient_vio_init(vio, type, sd, flags);
81
vio_init(vio, type, sd, flags);
90
82
sprintf(vio->desc, "TCP/IP (%d)", vio->sd);
92
84
We call fcntl() to set the flags and then immediately read them back