~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/drizzle_protocol/vio.cc

  • Committer: Brian Aker
  • Date: 2010-02-07 01:33:54 UTC
  • Revision ID: brian@gaz-20100207013354-d2pg1n68u5c09pgo
Remove giant include header to its own file.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
  the file descriptior.
21
21
*/
22
22
 
23
 
#include "vio_priv.h"
 
23
#include "config.h"
 
24
 
 
25
#define DONT_MAP_VIO
 
26
#include "vio.h"
 
27
 
 
28
#include <fcntl.h>
 
29
 
 
30
#include <cstdio>
 
31
#include <cstring>
 
32
#include <cstdlib>
 
33
#include <memory>
 
34
 
 
35
using namespace std;
24
36
 
25
37
/*
26
38
 * Helper to fill most of the Vio* with defaults.
27
39
 */
28
40
 
29
 
static void vio_init(Vio* vio, enum enum_vio_type type,
 
41
static void drizzleclient_vio_init(Vio* vio, enum enum_vio_type type,
30
42
                     int sd, uint32_t flags)
31
43
{
32
 
#ifndef HAVE_VIO_READ_BUFF
33
 
  flags&= ~VIO_BUFFERED_READ;
34
 
#endif
35
44
  memset(vio, 0, sizeof(*vio));
36
45
  vio->type     = type;
37
46
  vio->sd       = sd;
38
47
  if ((flags & VIO_BUFFERED_READ) &&
39
 
      !(vio->read_buffer= (char*)my_malloc(VIO_READ_BUFFER_SIZE, MYF(MY_WME))))
 
48
      !(vio->read_buffer= (char*)malloc(VIO_READ_BUFFER_SIZE)))
40
49
    flags&= ~VIO_BUFFERED_READ;
41
50
  {
42
 
    vio->viodelete      =vio_delete;
43
 
    vio->vioerrno       =vio_errno;
44
 
    vio->read= (flags & VIO_BUFFERED_READ) ? vio_read_buff : vio_read;
45
 
    vio->write          =vio_write;
46
 
    vio->fastsend       =vio_fastsend;
47
 
    vio->viokeepalive   =vio_keepalive;
48
 
    vio->should_retry   =vio_should_retry;
49
 
    vio->was_interrupted=vio_was_interrupted;
50
 
    vio->vioclose       =vio_close;
51
 
    vio->peer_addr      =vio_peer_addr;
52
 
    vio->vioblocking    =vio_blocking;
53
 
    vio->is_blocking    =vio_is_blocking;
54
 
    vio->timeout        =vio_timeout;
 
51
    vio->viodelete      =drizzleclient_vio_delete;
 
52
    vio->vioerrno       =drizzleclient_vio_errno;
 
53
    vio->read= (flags & VIO_BUFFERED_READ) ? drizzleclient_vio_read_buff : drizzleclient_vio_read;
 
54
    vio->write          =drizzleclient_vio_write;
 
55
    vio->fastsend       =drizzleclient_vio_fastsend;
 
56
    vio->viokeepalive   =drizzleclient_vio_keepalive;
 
57
    vio->should_retry   =drizzleclient_vio_should_retry;
 
58
    vio->was_interrupted=drizzleclient_vio_was_interrupted;
 
59
    vio->vioclose       =drizzleclient_vio_close;
 
60
    vio->peer_addr      =drizzleclient_vio_peer_addr;
 
61
    vio->vioblocking    =drizzleclient_vio_blocking;
 
62
    vio->is_blocking    =drizzleclient_vio_is_blocking;
 
63
    vio->timeout        =drizzleclient_vio_timeout;
55
64
  }
56
65
}
57
66
 
58
67
 
59
68
/* Reset initialized VIO to use with another transport type */
60
69
 
61
 
void vio_reset(Vio* vio, enum enum_vio_type type,
62
 
               int sd, uint flags)
 
70
void drizzleclient_vio_reset(Vio* vio, enum enum_vio_type type,
 
71
               int sd, uint32_t flags)
63
72
{
64
 
  my_free(vio->read_buffer, MYF(MY_ALLOW_ZERO_PTR));
65
 
  vio_init(vio, type, sd, flags);
 
73
  free(vio->read_buffer);
 
74
  drizzleclient_vio_init(vio, type, sd, flags);
66
75
}
67
76
 
68
77
 
69
78
/* Open the socket or TCP/IP connection and read the fnctl() status */
70
79
 
71
 
Vio *vio_new(int sd, enum enum_vio_type type, uint flags)
 
80
Vio *drizzleclient_vio_new(int sd, enum enum_vio_type type, uint32_t flags)
72
81
{
73
 
  Vio *vio;
 
82
  Vio *vio = (Vio*) malloc(sizeof(Vio));
74
83
 
75
 
  if ((vio = (Vio*) my_malloc(sizeof(*vio),MYF(MY_WME))))
 
84
  if (vio != NULL)
76
85
  {
77
 
    vio_init(vio, type, sd, flags);
 
86
    drizzleclient_vio_init(vio, type, sd, flags);
78
87
    sprintf(vio->desc, "TCP/IP (%d)", vio->sd);
79
88
    /*
80
89
      We call fcntl() to set the flags and then immediately read them back
93
102
}
94
103
 
95
104
 
96
 
void vio_delete(Vio* vio)
 
105
void drizzleclient_vio_delete(Vio* vio)
97
106
{
98
107
  if (!vio)
99
108
    return; /* It must be safe to delete null pointers. */
100
109
 
101
110
  if (vio->type != VIO_CLOSED)
102
111
    vio->vioclose(vio);
103
 
  my_free((uchar*) vio->read_buffer, MYF(MY_ALLOW_ZERO_PTR));
104
 
  my_free((uchar*) vio, MYF(0));
 
112
  free((unsigned char*) vio->read_buffer);
 
113
  free((unsigned char*) vio);
105
114
}
106
115
 
107
116
 
110
119
  components below it when application finish
111
120
 
112
121
*/
113
 
void vio_end(void)
 
122
void drizzleclient_vio_end(void)
114
123
{
115
124
}