X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fmemcached_io.h;h=5442277447d658020b5a66a28427fad353bd04d8;hb=59aa21d9cc59e8ed7cc8c4c5758cb392bb0c5b5a;hp=1bed79599787930e2c2b31296e90e7cc0bc2b3fb;hpb=704c4c319482776ad5566e1e3ec69c31a651fb51;p=awesomized%2Flibmemcached diff --git a/libmemcached/memcached_io.h b/libmemcached/memcached_io.h index 1bed7959..54422774 100644 --- a/libmemcached/memcached_io.h +++ b/libmemcached/memcached_io.h @@ -4,6 +4,25 @@ #ifndef __MEMCACHED_IO_H__ #define __MEMCACHED_IO_H__ +#define MAX_UDP_DATAGRAM_LENGTH 1400 +#define UDP_DATAGRAM_HEADER_LENGTH 8 +#define UDP_REQUEST_ID_MSG_SIG_DIGITS 10 +#define UDP_REQUEST_ID_THREAD_MASK 0xFFFF << UDP_REQUEST_ID_MSG_SIG_DIGITS +#define get_udp_datagram_request_id(A) ntohs((A)->request_id) +#define get_udp_datagram_seq_num(A) ntohs((A)->sequence_number) +#define get_udp_datagram_num_datagrams(A) ntohs((A)->num_datagrams) +#define get_msg_num_from_request_id(A) ( (A) & (~(UDP_REQUEST_ID_THREAD_MASK)) ) +#define get_thread_id_from_request_id(A) ( (A) & (UDP_REQUEST_ID_THREAD_MASK) ) >> UDP_REQUEST_ID_MSG_SIG_DIGITS +#define generate_udp_request_thread_id(A) (A) << UDP_REQUEST_ID_MSG_SIG_DIGITS +#define UDP_REQUEST_ID_MAX_THREAD_ID get_thread_id_from_request_id(0xFFFF) + +struct udp_datagram_header_st { + uint16_t request_id; + uint16_t sequence_number; + uint16_t num_datagrams; + uint16_t reserved; +}; + ssize_t memcached_io_write(memcached_server_st *ptr, const void *buffer, size_t length, char with_flush); void memcached_io_reset(memcached_server_st *ptr); @@ -22,4 +41,9 @@ memcached_return memcached_safe_read(memcached_server_st *ptr, memcached_return memcached_read_one_response(memcached_server_st *ptr, char *buffer, size_t buffer_length, memcached_result_st *result); +memcached_return memcached_io_init_udp_header(memcached_server_st *ptr, + uint16_t thread_id); + +memcached_server_st *memcached_io_get_readable_server(memcached_st *memc); + #endif /* __MEMCACHED_IO_H__ */