2 * Summary: String structure used for libmemcached.
4 * Copy: See Copyright for the status of this software.
9 #ifndef LIBMEMCACHED_MEMCACHED_SERVER_H
10 #define LIBMEMCACHED_MEMCACHED_SERVER_H
12 #ifndef LIBMEMCACHED_MEMCACHED_H
13 #error "Please include <libmemcached/memcached.h> instead"
20 struct memcached_server_st
{
24 unsigned int cursor_active
;
28 uint32_t io_bytes_sent
; /* # bytes sent since last read */
29 uint32_t server_failure_counter
;
31 uint8_t major_version
;
32 uint8_t micro_version
;
33 uint8_t minor_version
;
34 memcached_connection type
;
36 char *cached_server_error
;
37 size_t read_buffer_length
;
38 size_t read_data_length
;
39 size_t write_buffer_offset
;
40 struct addrinfo
*address_info
;
43 uint64_t limit_maxbytes
;
44 char read_buffer
[MEMCACHED_MAX_BUFFER
];
45 char write_buffer
[MEMCACHED_MAX_BUFFER
];
46 char hostname
[MEMCACHED_MAX_HOST_LENGTH
];
49 #define memcached_server_count(A) (A)->number_of_hosts
50 #define memcached_server_name(A,B) (B).hostname
51 #define memcached_server_port(A,B) (B).port
52 #define memcached_server_list(A) (A)->hosts
53 #define memcached_server_response_count(A) (A)->cursor_active
56 memcached_return
memcached_server_cursor(memcached_st
*ptr
,
57 memcached_server_function
*callback
,
59 unsigned int number_of_callbacks
);
62 memcached_server_st
*memcached_server_by_key(memcached_st
*ptr
, const char *key
,
63 size_t key_length
, memcached_return
*error
);
66 const char *memcached_server_error(memcached_server_st
*ptr
);
69 void memcached_server_error_reset(memcached_server_st
*ptr
);
71 /* These should not currently be used by end users */
72 /* TODO: Is the above comment valid? If so, how can we unit test these if they
73 * aren't exported. If not, we should remove the comment */
75 memcached_server_st
*memcached_server_create(memcached_st
*memc
, memcached_server_st
*ptr
);
78 memcached_server_st
*memcached_server_create_with(memcached_st
*memc
, memcached_server_st
*host
,
79 const char *hostname
, unsigned int port
,
80 uint32_t weight
, memcached_connection type
);
83 void memcached_server_free(memcached_server_st
*ptr
);
85 memcached_server_st
*memcached_server_clone(memcached_server_st
*clone
, memcached_server_st
*ptr
);
87 memcached_analysis_st
*memcached_analyze(memcached_st
*memc
, memcached_stat_st
*memc_stat
,
88 memcached_return
*error
);
91 memcached_return
memcached_server_remove(memcached_server_st
*st_ptr
);
93 /* Server Public functions */
96 memcached_return
memcached_server_add_udp(memcached_st
*ptr
,
100 memcached_return
memcached_server_add_unix_socket(memcached_st
*ptr
,
101 const char *filename
);
103 memcached_return
memcached_server_add(memcached_st
*ptr
, const char *hostname
,
107 memcached_return
memcached_server_add_udp_with_weight(memcached_st
*ptr
,
108 const char *hostname
,
112 memcached_return
memcached_server_add_unix_socket_with_weight(memcached_st
*ptr
,
113 const char *filename
,
116 memcached_return
memcached_server_add_with_weight(memcached_st
*ptr
, const char *hostname
,
120 void memcached_server_list_free(memcached_server_st
*ptr
);
122 memcached_return
memcached_server_push(memcached_st
*ptr
, memcached_server_st
*list
);
125 memcached_server_st
*memcached_server_list_append(memcached_server_st
*ptr
,
126 const char *hostname
,
128 memcached_return
*error
);
130 memcached_server_st
*memcached_server_list_append_with_weight(memcached_server_st
*ptr
,
131 const char *hostname
,
134 memcached_return
*error
);
136 unsigned int memcached_server_list_count(memcached_server_st
*ptr
);
138 memcached_server_st
*memcached_servers_parse(const char *server_strings
);
145 #endif /* LIBMEMCACHED_MEMCACHED_SERVER_H */