*
*/
-#ifndef __MEMCACHED_H__
-#define __MEMCACHED_H__
+#ifndef __LIBMEMCACHED_MEMCACHED_H__
+#define __LIBMEMCACHED_MEMCACHED_H__
#include <stdlib.h>
#include <inttypes.h>
#include <libmemcached/types.h>
#include <libmemcached/string.h>
#include <libmemcached/stats.h>
+#include <libhashkit/hashkit.h>
// Everything above this line must be in the order specified.
#include <libmemcached/allocators.h>
#include <libmemcached/analyze.h>
extern "C" {
#endif
+LIBMEMCACHED_API
+void memcached_servers_reset(memcached_st *ptr);
+
+LIBMEMCACHED_API
+memcached_st *memcached_create(memcached_st *ptr);
+
+LIBMEMCACHED_API
+void memcached_free(memcached_st *ptr);
+
+LIBMEMCACHED_API
+memcached_st *memcached_clone(memcached_st *clone, const memcached_st *ptr);
+
+LIBMEMCACHED_API
+void *memcached_get_user_data(const memcached_st *ptr);
+
+LIBMEMCACHED_API
+void *memcached_set_user_data(memcached_st *ptr, void *data);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+
struct memcached_st {
/**
@note these are static and should not change without a call to behavior.
bool verify_key:1;
} flags;
memcached_server_distribution_t distribution;
- memcached_hash_t hash;
+ hashkit_st hashkit;
uint32_t continuum_points_counter; // Ketama
uint32_t number_of_hosts;
memcached_server_st *servers;
time_t next_distribution_rebuild; // Ketama
size_t prefix_key_length;
uint32_t number_of_replicas;
- memcached_hash_t distribution_hash;
+ hashkit_st distribution_hashkit;
memcached_result_st result;
memcached_continuum_item_st *continuum; // Ketama
struct {
bool is_allocated:1;
} options;
-};
-LIBMEMCACHED_API
-void memcached_servers_reset(memcached_st *ptr);
+#ifdef __cplusplus
+ memcached_st() :
+ state(),
+ flags(),
+ distribution(),
+ hashkit(),
+ continuum_points_counter(),
+ number_of_hosts(),
+ servers(),
+ last_disconnected_server(),
+ snd_timeout(),
+ rcv_timeout(),
+ server_failure_limit(),
+ io_msg_watermark(),
+ io_bytes_watermark(),
+ io_key_prefetch(),
+ cached_errno(),
+ poll_timeout(),
+ connect_timeout(),
+ retry_timeout(),
+ continuum_count(),
+ send_size(),
+ recv_size(),
+ user_data(),
+ next_distribution_rebuild(),
+ prefix_key_length(),
+ number_of_replicas(),
+ distribution_hashkit(),
+ result(),
+ continuum(),
+ allocators(),
+ on_clone(),
+ on_cleanup(),
+ get_key_failure(),
+ delete_trigger(),
+ callbacks(),
+ prefix_key(),
+ options()
+ {
+ memcached_create(this);
+ }
-/* Public API */
+ ~memcached_st()
+ {
+ memcached_free(this);
+ }
-LIBMEMCACHED_API
-memcached_st *memcached_create(memcached_st *ptr);
+ memcached_st(const memcached_st& source) :
+ state(),
+ flags(),
+ distribution(),
+ hashkit(),
+ continuum_points_counter(),
+ number_of_hosts(),
+ servers(),
+ last_disconnected_server(),
+ snd_timeout(),
+ rcv_timeout(),
+ server_failure_limit(),
+ io_msg_watermark(),
+ io_bytes_watermark(),
+ io_key_prefetch(),
+ cached_errno(),
+ poll_timeout(),
+ connect_timeout(),
+ retry_timeout(),
+ continuum_count(),
+ send_size(),
+ recv_size(),
+ user_data(),
+ next_distribution_rebuild(),
+ prefix_key_length(),
+ number_of_replicas(),
+ distribution_hashkit(),
+ result(),
+ continuum(),
+ allocators(),
+ on_clone(),
+ on_cleanup(),
+ get_key_failure(),
+ delete_trigger(),
+ callbacks(),
+ prefix_key(),
+ options()
+ {
+ memcached_clone(this, &source);
+ }
-LIBMEMCACHED_API
-void memcached_free(memcached_st *ptr);
+ memcached_st& operator=(const memcached_st& source)
+ {
+ memcached_free(this);
+ memcached_clone(this, &source);
-LIBMEMCACHED_API
-memcached_st *memcached_clone(memcached_st *clone, memcached_st *ptr);
+ return *this;
+ }
-LIBMEMCACHED_API
-void *memcached_get_user_data(const memcached_st *ptr);
+#endif
+};
-LIBMEMCACHED_API
-void *memcached_set_user_data(memcached_st *ptr, void *data);
// Local Only Inline
static inline memcached_server_st *memcached_server_instance_fetch(memcached_st *ptr, uint32_t server_key)
return &ptr->servers[server_key];
}
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* __MEMCACHED_H__ */
+#endif /* __LIBMEMCACHED_MEMCACHED_H__ */