2 Basic socket buffered IO
7 ssize_t
memcached_io_read(memcached_st
*ptr
, char *buf
, size_t length
)
12 ssize_t
memcached_io_write(memcached_st
*ptr
, unsigned int server_key
,
13 char *buffer
, size_t length
)
17 for (x
= 0; x
< length
; x
++)
19 ptr
->write_buffer
[ptr
->write_buffer_offset
]= buffer
[x
];
20 ptr
->write_buffer_offset
++;
21 if (ptr
->write_buffer_offset
== MEMCACHED_MAX_BUFFER
)
25 if ((sent_length
= send(ptr
->hosts
[server_key
].fd
, ptr
->write_buffer
,
26 MEMCACHED_MAX_BUFFER
, 0)) == -1)
29 assert(sent_length
== MEMCACHED_MAX_BUFFER
);
30 ptr
->write_between_flush
+= MEMCACHED_MAX_BUFFER
;
32 ptr
->write_buffer_offset
= 0;
39 ssize_t
memcached_io_flush(memcached_st
*ptr
, unsigned int server_key
)
43 if (ptr
->write_buffer_offset
== 0)
46 if ((sent_length
= send(ptr
->hosts
[server_key
].fd
, ptr
->write_buffer
,
47 ptr
->write_buffer_offset
, 0)) == -1)
50 assert(sent_length
== ptr
->write_buffer_offset
);
52 sent_length
+= ptr
->write_between_flush
;
54 ptr
->write_buffer_offset
= 0;
55 ptr
->write_between_flush
= 0;
61 Eventually we will just kill off the server with the problem.
63 void memcached_io_reset(memcached_st
*ptr
, unsigned int server_key
)
65 ptr
->write_buffer_offset
= 0;