~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to vio/viosocket.c

  • Committer: Brian Aker
  • Date: 2008-11-04 15:39:09 UTC
  • mfrom: (575.1.2 devel)
  • Revision ID: brian@tangent.org-20081104153909-c72hn65udxs1ccal
Merge of Monty's work

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
 
23
23
#include "vio_priv.h"
24
24
#include <sys/socket.h>
 
25
#include <drizzled/util/test.h>
25
26
 
26
27
int vio_errno(Vio *vio __attribute__((unused)))
27
28
{
28
 
  return socket_errno;          /* On Win32 this mapped to WSAGetLastError() */
 
29
  return errno;
29
30
}
30
31
 
31
32
 
32
 
size_t vio_read(Vio * vio, uchar* buf, size_t size)
 
33
size_t vio_read(Vio * vio, unsigned char* buf, size_t size)
33
34
{
34
35
  size_t r;
35
36
 
46
47
  reduce number of syscalls.
47
48
*/
48
49
 
49
 
size_t vio_read_buff(Vio *vio, uchar* buf, size_t size)
 
50
size_t vio_read_buff(Vio *vio, unsigned char* buf, size_t size)
50
51
{
51
52
  size_t rc;
52
53
#define VIO_UNBUFFERED_READ_MIN_SIZE 2048
53
54
 
54
55
  if (vio->read_pos < vio->read_end)
55
56
  {
56
 
    rc= min((size_t) (vio->read_end - vio->read_pos), size);
 
57
    rc= cmin((size_t) (vio->read_end - vio->read_pos), size);
57
58
    memcpy(buf, vio->read_pos, rc);
58
59
    vio->read_pos+= rc;
59
60
    /*
64
65
  }
65
66
  else if (size < VIO_UNBUFFERED_READ_MIN_SIZE)
66
67
  {
67
 
    rc= vio_read(vio, (uchar*) vio->read_buffer, VIO_READ_BUFFER_SIZE);
 
68
    rc= vio_read(vio, (unsigned char*) vio->read_buffer, VIO_READ_BUFFER_SIZE);
68
69
    if (rc != 0 && rc != (size_t) -1)
69
70
    {
70
71
      if (rc > size)
84
85
}
85
86
 
86
87
 
87
 
size_t vio_write(Vio * vio, const uchar* buf, size_t size)
 
88
size_t vio_write(Vio * vio, const unsigned char* buf, size_t size)
88
89
{
89
90
  size_t r;
90
91
 
167
168
bool
168
169
vio_should_retry(Vio * vio __attribute__((unused)))
169
170
{
170
 
  int en = socket_errno;
171
 
  return (en == SOCKET_EAGAIN || en == SOCKET_EINTR ||
172
 
          en == SOCKET_EWOULDBLOCK);
 
171
  int en = errno;
 
172
  return (en == EAGAIN || en == EINTR ||
 
173
          en == EWOULDBLOCK);
173
174
}
174
175
 
175
176
 
176
177
bool
177
178
vio_was_interrupted(Vio *vio __attribute__((unused)))
178
179
{
179
 
  int en= socket_errno;
180
 
  return (en == SOCKET_EAGAIN || en == SOCKET_EINTR ||
181
 
          en == SOCKET_EWOULDBLOCK || en == SOCKET_ETIMEDOUT);
 
180
  int en= errno;
 
181
  return (en == EAGAIN || en == EINTR ||
 
182
          en == EWOULDBLOCK || en == ETIMEDOUT);
182
183
}
183
184
 
184
185