From 76869574486dceca688e05b7028d8b88485a36a0 Mon Sep 17 00:00:00 2001 From: Trond Norbye Date: Tue, 4 Aug 2009 14:59:00 +0200 Subject: [PATCH] Fixed header file layout The user should only include to use the basic functionality from libmemcached (even in C++). libmemcached/memcached.h should include the relevant header files containing the definitions. --- libmemcached/Makefile.am | 31 ++- libmemcached/memcached.h | 282 ++----------------------- libmemcached/memcached.hpp | 6 +- libmemcached/memcached_allocators.h | 38 ++++ libmemcached/memcached_arithmetic.h | 51 +++++ libmemcached/memcached_behavior.h | 29 +++ libmemcached/memcached_callback.h | 37 ++++ libmemcached/memcached_constants.h | 10 +- libmemcached/memcached_delete.h | 34 +++ libmemcached/memcached_dump.h | 27 +++ libmemcached/memcached_flush.h | 27 +++ libmemcached/memcached_flush_buffers.h | 27 +++ libmemcached/memcached_get.h | 10 +- libmemcached/memcached_hash.h | 30 +++ libmemcached/memcached_pool.h | 6 +- libmemcached/memcached_result.h | 23 +- libmemcached/memcached_server.h | 58 ++++- libmemcached/memcached_st.h | 52 +++++ libmemcached/memcached_stats.h | 76 +++++++ libmemcached/memcached_storage.h | 6 +- libmemcached/memcached_string.h | 19 +- libmemcached/memcached_types.h | 72 ++++++- libmemcached/memcached_util.h | 6 +- libmemcached/visibility.h | 6 +- tests/plus.cpp | 2 +- 25 files changed, 635 insertions(+), 330 deletions(-) create mode 100644 libmemcached/memcached_allocators.h create mode 100644 libmemcached/memcached_arithmetic.h create mode 100644 libmemcached/memcached_behavior.h create mode 100644 libmemcached/memcached_callback.h create mode 100644 libmemcached/memcached_delete.h create mode 100644 libmemcached/memcached_dump.h create mode 100644 libmemcached/memcached_flush.h create mode 100644 libmemcached/memcached_flush_buffers.h create mode 100644 libmemcached/memcached_hash.h create mode 100644 libmemcached/memcached_st.h create mode 100644 libmemcached/memcached_stats.h diff --git a/libmemcached/Makefile.am b/libmemcached/Makefile.am index 087290e9..044276a0 100644 --- a/libmemcached/Makefile.am +++ b/libmemcached/Makefile.am @@ -11,17 +11,28 @@ noinst_HEADERS = libmemcached_probes.h \ memcached/protocol_binary.h pkginclude_HEADERS= memcached.h \ - memcached.hpp \ + memcached.hpp \ + memcached_allocators.h \ + memcached_arithmetic.h \ + memcached_behavior.h \ + memcached_callback.h \ memcached_configure.h \ - memcached_constants.h \ - memcached_get.h \ - memcached_result.h \ - memcached_server.h \ - memcached_storage.h \ - memcached_string.h \ - memcached_types.h \ - memcached_watchpoint.h \ - visibility.h + memcached_constants.h \ + memcached_delete.h \ + memcached_dump.h \ + memcached_flush.h \ + memcached_flush_buffers.h \ + memcached_get.h \ + memcached_hash.h \ + memcached_result.h \ + memcached_server.h \ + memcached_st.h \ + memcached_stats.h \ + memcached_storage.h \ + memcached_string.h \ + memcached_types.h \ + memcached_watchpoint.h \ + visibility.h if BUILD_LIBMEMCACHEDUTIL diff --git a/libmemcached/memcached.h b/libmemcached/memcached.h index c3b436bf..479d469c 100644 --- a/libmemcached/memcached.h +++ b/libmemcached/memcached.h @@ -7,8 +7,8 @@ * Author: Brian Aker */ -#ifndef __MEMCACHED_H__ -#define __MEMCACHED_H__ +#ifndef LIBMEMCACHED_MEMCACHED_H +#define LIBMEMCACHED_MEMCACHED_H #include #include @@ -18,6 +18,9 @@ #include #include +#define MEMCACHED_VERSION_STRING_LENGTH 24 +#define LIBMEMCACHED_VERSION_STRING "0.31" + #include #include #include @@ -27,269 +30,20 @@ #include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #ifdef __cplusplus -extern "C" { +#include #endif -#define MEMCACHED_VERSION_STRING_LENGTH 24 -#define LIBMEMCACHED_VERSION_STRING "0.31" - -struct memcached_analysis_st { - uint32_t average_item_size; - uint32_t longest_uptime; - uint32_t least_free_server; - uint32_t most_consumed_server; - uint32_t oldest_server; - double pool_hit_ratio; - uint64_t most_used_bytes; - uint64_t least_remaining_bytes; -}; - -struct memcached_stat_st { - uint32_t connection_structures; - uint32_t curr_connections; - uint32_t curr_items; - uint32_t pid; - uint32_t pointer_size; - uint32_t rusage_system_microseconds; - uint32_t rusage_system_seconds; - uint32_t rusage_user_microseconds; - uint32_t rusage_user_seconds; - uint32_t threads; - uint32_t time; - uint32_t total_connections; - uint32_t total_items; - uint32_t uptime; - uint64_t bytes; - uint64_t bytes_read; - uint64_t bytes_written; - uint64_t cmd_get; - uint64_t cmd_set; - uint64_t evictions; - uint64_t get_hits; - uint64_t get_misses; - uint64_t limit_maxbytes; - char version[MEMCACHED_VERSION_STRING_LENGTH]; -}; - -struct memcached_st { - uint8_t purging; - bool is_allocated; - uint8_t distribution; - uint8_t hash; - uint32_t continuum_points_counter; - memcached_server_st *hosts; - int32_t snd_timeout; - int32_t rcv_timeout; - uint32_t server_failure_limit; - uint32_t io_msg_watermark; - uint32_t io_bytes_watermark; - uint32_t io_key_prefetch; - uint32_t number_of_hosts; - uint32_t cursor_server; - int cached_errno; - uint32_t flags; - int32_t poll_timeout; - int32_t connect_timeout; - int32_t retry_timeout; - uint32_t continuum_count; - int send_size; - int recv_size; - void *user_data; - time_t next_distribution_rebuild; - size_t prefix_key_length; - memcached_hash hash_continuum; - memcached_result_st result; - memcached_continuum_item_st *continuum; - memcached_clone_func on_clone; - memcached_cleanup_func on_cleanup; - memcached_free_function call_free; - memcached_malloc_function call_malloc; - memcached_realloc_function call_realloc; - memcached_calloc_function call_calloc; - memcached_trigger_key get_key_failure; - memcached_trigger_delete_key delete_trigger; - char prefix_key[MEMCACHED_PREFIX_KEY_MAX_SIZE]; - uint32_t number_of_replicas; -}; - -LIBMEMCACHED_API -memcached_return memcached_version(memcached_st *ptr); - -/* Public API */ - -LIBMEMCACHED_API -const char * memcached_lib_version(void); - -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, memcached_st *ptr); - -LIBMEMCACHED_API -memcached_return memcached_delete(memcached_st *ptr, const char *key, size_t key_length, - time_t expiration); -LIBMEMCACHED_API -memcached_return memcached_increment(memcached_st *ptr, - const char *key, size_t key_length, - uint32_t offset, - uint64_t *value); -LIBMEMCACHED_API -memcached_return memcached_decrement(memcached_st *ptr, - const char *key, size_t key_length, - uint32_t offset, - uint64_t *value); -LIBMEMCACHED_API -memcached_return memcached_increment_with_initial(memcached_st *ptr, - const char *key, - size_t key_length, - uint64_t offset, - uint64_t initial, - time_t expiration, - uint64_t *value); -LIBMEMCACHED_API -memcached_return memcached_decrement_with_initial(memcached_st *ptr, - const char *key, - size_t key_length, - uint64_t offset, - uint64_t initial, - time_t expiration, - uint64_t *value); -LIBMEMCACHED_API -void memcached_stat_free(memcached_st *, memcached_stat_st *); -LIBMEMCACHED_API -memcached_stat_st *memcached_stat(memcached_st *ptr, char *args, memcached_return *error); -LIBMEMCACHED_API -memcached_return memcached_stat_servername(memcached_stat_st *memc_stat, char *args, - char *hostname, unsigned int port); -LIBMEMCACHED_API -memcached_return memcached_flush(memcached_st *ptr, time_t expiration); -LIBMEMCACHED_API -memcached_return memcached_verbosity(memcached_st *ptr, unsigned int verbosity); -LIBMEMCACHED_API -void memcached_quit(memcached_st *ptr); -LIBMEMCACHED_API -const char *memcached_strerror(memcached_st *ptr, memcached_return rc); -LIBMEMCACHED_API -memcached_return memcached_behavior_set(memcached_st *ptr, memcached_behavior flag, uint64_t data); -LIBMEMCACHED_API -uint64_t memcached_behavior_get(memcached_st *ptr, memcached_behavior flag); - -/* The two public hash bits */ -LIBMEMCACHED_API -uint32_t memcached_generate_hash_value(const char *key, size_t key_length, memcached_hash hash_algorithm); -LIBMEMCACHED_API -uint32_t memcached_generate_hash(memcached_st *ptr, const char *key, size_t key_length); - -LIBMEMCACHED_API -memcached_return memcached_flush_buffers(memcached_st *mem); - -/* Server Public functions */ - -LIBMEMCACHED_API -memcached_return memcached_server_add_udp(memcached_st *ptr, - const char *hostname, - unsigned int port); -LIBMEMCACHED_API -memcached_return memcached_server_add_unix_socket(memcached_st *ptr, - const char *filename); -LIBMEMCACHED_API -memcached_return memcached_server_add(memcached_st *ptr, const char *hostname, - unsigned int port); - -LIBMEMCACHED_API -memcached_return memcached_server_add_udp_with_weight(memcached_st *ptr, - const char *hostname, - unsigned int port, - uint32_t weight); -LIBMEMCACHED_API -memcached_return memcached_server_add_unix_socket_with_weight(memcached_st *ptr, - const char *filename, - uint32_t weight); -LIBMEMCACHED_API -memcached_return memcached_server_add_with_weight(memcached_st *ptr, const char *hostname, - unsigned int port, - uint32_t weight); -LIBMEMCACHED_API -void memcached_server_list_free(memcached_server_st *ptr); -LIBMEMCACHED_API -memcached_return memcached_server_push(memcached_st *ptr, memcached_server_st *list); - -LIBMEMCACHED_API -memcached_server_st *memcached_server_list_append(memcached_server_st *ptr, - const char *hostname, - unsigned int port, - memcached_return *error); -LIBMEMCACHED_API -memcached_server_st *memcached_server_list_append_with_weight(memcached_server_st *ptr, - const char *hostname, - unsigned int port, - uint32_t weight, - memcached_return *error); -LIBMEMCACHED_API -unsigned int memcached_server_list_count(memcached_server_st *ptr); -LIBMEMCACHED_API -memcached_server_st *memcached_servers_parse(const char *server_strings); - -LIBMEMCACHED_API -char *memcached_stat_get_value(memcached_st *ptr, memcached_stat_st *memc_stat, - const char *key, memcached_return *error); -LIBMEMCACHED_API -char ** memcached_stat_get_keys(memcached_st *ptr, memcached_stat_st *memc_stat, - memcached_return *error); - -LIBMEMCACHED_API -memcached_return memcached_delete_by_key(memcached_st *ptr, - const char *master_key, size_t master_key_length, - const char *key, size_t key_length, - time_t expiration); - -LIBMEMCACHED_API -memcached_return memcached_fetch_execute(memcached_st *ptr, - memcached_execute_function *callback, - void *context, - unsigned int number_of_callbacks); - -LIBMEMCACHED_API -memcached_return memcached_callback_set(memcached_st *ptr, - memcached_callback flag, - void *data); -LIBMEMCACHED_API -void *memcached_callback_get(memcached_st *ptr, - memcached_callback flag, - memcached_return *error); - -LIBMEMCACHED_API -memcached_return memcached_dump(memcached_st *ptr, memcached_dump_func *function, void *context, uint32_t number_of_callbacks); - - -LIBMEMCACHED_API -memcached_return memcached_set_memory_allocators(memcached_st *ptr, - memcached_malloc_function mem_malloc, - memcached_free_function mem_free, - memcached_realloc_function mem_realloc, - memcached_calloc_function mem_calloc); - -LIBMEMCACHED_API -void memcached_get_memory_allocators(memcached_st *ptr, - memcached_malloc_function *mem_malloc, - memcached_free_function *mem_free, - memcached_realloc_function *mem_realloc, - memcached_calloc_function *mem_calloc); - -LIBMEMCACHED_API -void *memcached_get_user_data(memcached_st *ptr); -LIBMEMCACHED_API -void *memcached_set_user_data(memcached_st *ptr, void *data); - -LIBMEMCACHED_API -memcached_return run_distribution(memcached_st *ptr); -#ifdef __cplusplus -} -#endif - - -#endif /* __MEMCACHED_H__ */ +#endif /* LIBMEMCACHED_MEMCACHED_H */ diff --git a/libmemcached/memcached.hpp b/libmemcached/memcached.hpp index c21651bf..23f6ea5b 100644 --- a/libmemcached/memcached.hpp +++ b/libmemcached/memcached.hpp @@ -12,8 +12,8 @@ * @brief Libmemcached C++ interface */ -#ifndef LIBMEMCACHEDPP_H -#define LIBMEMCACHEDPP_H +#ifndef LIBMEMCACHED_MEMCACHED_HPP +#define LIBMEMCACHED_MEMCACHED_HPP #include @@ -795,4 +795,4 @@ private: } -#endif /* LIBMEMCACHEDPP_H */ +#endif /* LIBMEMCACHED_MEMCACHED_HPP */ diff --git a/libmemcached/memcached_allocators.h b/libmemcached/memcached_allocators.h new file mode 100644 index 00000000..a3a7ba28 --- /dev/null +++ b/libmemcached/memcached_allocators.h @@ -0,0 +1,38 @@ +/* + * Summary: Allocator functions for libmemcached + * + * Copy: See Copyright for the status of this software. + * + * Author: Trond Norbye + */ + +#ifndef LIBMEMCACHED_MEMCACHED_ALLOCATORS_H +#define LIBMEMCACHED_MEMCACHED_ALLOCATORS_H + +#ifndef LIBMEMCACHED_MEMCACHED_H +#error "Please include instead" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +LIBMEMCACHED_API +memcached_return memcached_set_memory_allocators(memcached_st *ptr, + memcached_malloc_function mem_malloc, + memcached_free_function mem_free, + memcached_realloc_function mem_realloc, + memcached_calloc_function mem_calloc); + +LIBMEMCACHED_API +void memcached_get_memory_allocators(memcached_st *ptr, + memcached_malloc_function *mem_malloc, + memcached_free_function *mem_free, + memcached_realloc_function *mem_realloc, + memcached_calloc_function *mem_calloc); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBMEMCACHED_MEMCACHED_ALLOCATORS_H */ diff --git a/libmemcached/memcached_arithmetic.h b/libmemcached/memcached_arithmetic.h new file mode 100644 index 00000000..cee5378d --- /dev/null +++ b/libmemcached/memcached_arithmetic.h @@ -0,0 +1,51 @@ +/* + * Summary: Arithmetic functions for libmemcached + * + * Copy: See Copyright for the status of this software. + * + * Author: Trond Norbye + */ + +#ifndef LIBMEMCACHED_MEMCACHED_ARITHMETIC_H +#define LIBMEMCACHED_MEMCACHED_ARITHMETIC_H + +#ifndef LIBMEMCACHED_MEMCACHED_H +#error "Please include instead" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +LIBMEMCACHED_API +memcached_return memcached_increment(memcached_st *ptr, + const char *key, size_t key_length, + uint32_t offset, + uint64_t *value); +LIBMEMCACHED_API +memcached_return memcached_decrement(memcached_st *ptr, + const char *key, size_t key_length, + uint32_t offset, + uint64_t *value); +LIBMEMCACHED_API +memcached_return memcached_increment_with_initial(memcached_st *ptr, + const char *key, + size_t key_length, + uint64_t offset, + uint64_t initial, + time_t expiration, + uint64_t *value); +LIBMEMCACHED_API +memcached_return memcached_decrement_with_initial(memcached_st *ptr, + const char *key, + size_t key_length, + uint64_t offset, + uint64_t initial, + time_t expiration, + uint64_t *value); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBMEMCACHED_MEMCACHED_ARITHMETIC_H */ diff --git a/libmemcached/memcached_behavior.h b/libmemcached/memcached_behavior.h new file mode 100644 index 00000000..e30fecc2 --- /dev/null +++ b/libmemcached/memcached_behavior.h @@ -0,0 +1,29 @@ +/* + * Summary: Behavior functions for libmemcached + * + * Copy: See Copyright for the status of this software. + * + * Author: Trond Norbye + */ + +#ifndef LIBMEMCACHED_MEMCACHED_BEHAVIOR_H +#define LIBMEMCACHED_MEMCACHED_BEHAVIOR_H + +#ifndef LIBMEMCACHED_MEMCACHED_H +#error "Please include instead" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +LIBMEMCACHED_API +memcached_return memcached_behavior_set(memcached_st *ptr, memcached_behavior flag, uint64_t data); +LIBMEMCACHED_API +uint64_t memcached_behavior_get(memcached_st *ptr, memcached_behavior flag); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBMEMCACHED_MEMCACHED_BEHAVIOR_H */ diff --git a/libmemcached/memcached_callback.h b/libmemcached/memcached_callback.h new file mode 100644 index 00000000..97d1cc32 --- /dev/null +++ b/libmemcached/memcached_callback.h @@ -0,0 +1,37 @@ +/* + * Summary: Callback function for libmemcached + * + * Copy: See Copyright for the status of this software. + * + * Author: Trond Norbye + */ +#ifndef LIBMEMCACHED_MEMCACHED_CALLBACK_H +#define LIBMEMCACHED_MEMCACHED_CALLBACK_H + +#ifndef LIBMEMCACHED_MEMCACHED_H +#error "Please include instead" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +LIBMEMCACHED_API +memcached_return memcached_fetch_execute(memcached_st *ptr, + memcached_execute_function *callback, + void *context, + unsigned int number_of_callbacks); + +LIBMEMCACHED_API +memcached_return memcached_callback_set(memcached_st *ptr, + memcached_callback flag, + void *data); +LIBMEMCACHED_API +void *memcached_callback_get(memcached_st *ptr, + memcached_callback flag, + memcached_return *error); +#ifdef __cplusplus +} +#endif + +#endif /* LIBMEMCACHED_MEMCACHED_CALLBACK_H */ diff --git a/libmemcached/memcached_constants.h b/libmemcached/memcached_constants.h index 3bb157c5..c248baff 100644 --- a/libmemcached/memcached_constants.h +++ b/libmemcached/memcached_constants.h @@ -6,8 +6,12 @@ * Author: Brian Aker */ -#ifndef __MEMCACHED_CONSTANTS_H__ -#define __MEMCACHED_CONSTANTS_H__ +#ifndef LIBMEMCACHED_MEMCACHED_CONSTANTS_H +#define LIBMEMCACHED_MEMCACHED_CONSTANTS_H + +#ifndef LIBMEMCACHED_MEMCACHED_H +#error "Please include instead" +#endif /* Public defines */ #define MEMCACHED_DEFAULT_PORT 11211 @@ -139,4 +143,4 @@ typedef enum { MEMCACHED_CONNECTION_UNIX_SOCKET } memcached_connection; -#endif /* __MEMCACHED_CONSTANTS_H__ */ +#endif /* LIBMEMCACHED_MEMCACHED_CONSTANTS_H */ diff --git a/libmemcached/memcached_delete.h b/libmemcached/memcached_delete.h new file mode 100644 index 00000000..0da1f392 --- /dev/null +++ b/libmemcached/memcached_delete.h @@ -0,0 +1,34 @@ +/* + * Summary: Delete functions for libmemcached + * + * Copy: See Copyright for the status of this software. + * + * Author: Trond Norbye + */ + +#ifndef LIBMEMCACHED_MEMCACHED_DELETE_H +#define LIBMEMCACHED_MEMCACHED_DELETE_H + +#ifndef LIBMEMCACHED_MEMCACHED_H +#error "Please include instead" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +LIBMEMCACHED_API +memcached_return memcached_delete(memcached_st *ptr, const char *key, size_t key_length, + time_t expiration); + +LIBMEMCACHED_API +memcached_return memcached_delete_by_key(memcached_st *ptr, + const char *master_key, size_t master_key_length, + const char *key, size_t key_length, + time_t expiration); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBMEMCACHED_MEMCACHED_DELETE_H */ diff --git a/libmemcached/memcached_dump.h b/libmemcached/memcached_dump.h new file mode 100644 index 00000000..0495152a --- /dev/null +++ b/libmemcached/memcached_dump.h @@ -0,0 +1,27 @@ +/* + * Summary: Dump function for libmemcached + * + * Copy: See Copyright for the status of this software. + * + * Author: Trond Norbye + */ + +#ifndef LIBMEMCACHED_MEMCACHED_DUMP_H +#define LIBMEMCACHED_MEMCACHED_DUMP_H + +#ifndef LIBMEMCACHED_MEMCACHED_H +#error "Please include instead" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +LIBMEMCACHED_API +memcached_return memcached_dump(memcached_st *ptr, memcached_dump_func *function, void *context, uint32_t number_of_callbacks); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBMEMCACHED_MEMCACHED_DUMP_H */ diff --git a/libmemcached/memcached_flush.h b/libmemcached/memcached_flush.h new file mode 100644 index 00000000..fa95ae28 --- /dev/null +++ b/libmemcached/memcached_flush.h @@ -0,0 +1,27 @@ +/* + * Summary: Flush functions for libmemcached + * + * Copy: See Copyright for the status of this software. + * + * Author: Trond Norbye + */ + +#ifndef LIBMEMCACHED_MEMCACHED_FLUSH_H +#define LIBMEMCACHED_MEMCACHED_FLUSH_H + +#ifndef LIBMEMCACHED_MEMCACHED_H +#error "Please include instead" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +LIBMEMCACHED_API +memcached_return memcached_flush(memcached_st *ptr, time_t expiration); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBMEMCACHED_MEMCACHED_FLUSH_H */ diff --git a/libmemcached/memcached_flush_buffers.h b/libmemcached/memcached_flush_buffers.h new file mode 100644 index 00000000..5d5f0ef2 --- /dev/null +++ b/libmemcached/memcached_flush_buffers.h @@ -0,0 +1,27 @@ +/* + * Summary: Flush functions for libmemcached + * + * Copy: See Copyright for the status of this software. + * + * Author: Trond Norbye + */ + +#ifndef LIBMEMCACHED_MEMCACHED_FLUSH_BUFFERS_H +#define LIBMEMCACHED_MEMCACHED_FLUSH_BUFFERS_H + +#ifndef LIBMEMCACHED_MEMCACHED_H +#error "Please include instead" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +LIBMEMCACHED_API +memcached_return memcached_flush_buffers(memcached_st *mem); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBMEMCACHED_MEMCACHED_FLUSH_BUFFERS_H */ diff --git a/libmemcached/memcached_get.h b/libmemcached/memcached_get.h index 4ea04a94..34db0893 100644 --- a/libmemcached/memcached_get.h +++ b/libmemcached/memcached_get.h @@ -6,8 +6,12 @@ * Author: Brian Aker */ -#ifndef __MEMCACHED_GET_H__ -#define __MEMCACHED_GET_H__ +#ifndef LIBMEMCACHED_MEMCACHED_GET_H +#define LIBMEMCACHED_MEMCACHED_GET_H + +#ifndef LIBMEMCACHED_MEMCACHED_H +#error "Please include instead" +#endif #ifdef __cplusplus extern "C" { @@ -59,4 +63,4 @@ memcached_result_st *memcached_fetch_result(memcached_st *ptr, } #endif -#endif /* __MEMCACHED_GET_H__ */ +#endif /* LIBMEMCACHED_MEMCACHED_GET_H */ diff --git a/libmemcached/memcached_hash.h b/libmemcached/memcached_hash.h new file mode 100644 index 00000000..62dc7a9f --- /dev/null +++ b/libmemcached/memcached_hash.h @@ -0,0 +1,30 @@ +/* + * Summary: Hash functions for libmemcached + * + * Copy: See Copyright for the status of this software. + * + * Author: Trond Norbye + */ + +#ifndef LIBMEMCACHED_MEMCACHED_HASH_H +#define LIBMEMCACHED_MEMCACHED_HASH_H + +#ifndef LIBMEMCACHED_MEMCACHED_H +#error "Please include instead" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +LIBMEMCACHED_API +uint32_t memcached_generate_hash_value(const char *key, size_t key_length, memcached_hash hash_algorithm); +LIBMEMCACHED_API +uint32_t memcached_generate_hash(memcached_st *ptr, const char *key, size_t key_length); + + +#ifdef __cplusplus +} +#endif + +#endif /* LIBMEMCACHED_MEMCACHED_HASH_H */ diff --git a/libmemcached/memcached_pool.h b/libmemcached/memcached_pool.h index 7efe65e9..f4cf1c19 100644 --- a/libmemcached/memcached_pool.h +++ b/libmemcached/memcached_pool.h @@ -6,8 +6,8 @@ * Author: Trond Norbye */ -#ifndef MEMCACHED_POOL_H -#define MEMCACHED_POOL_H +#ifndef LIBMEMCACHED_MEMCACHED_POOL_H +#define LIBMEMCACHED_MEMCACHED_POOL_H #include @@ -35,4 +35,4 @@ memcached_return memcached_pool_push(memcached_pool_st* pool, } #endif -#endif /* MEMCACHED_POOL_H */ +#endif /* LIBMEMCACHED_MEMCACHED_POOL_H */ diff --git a/libmemcached/memcached_result.h b/libmemcached/memcached_result.h index e7ce012b..77f12010 100644 --- a/libmemcached/memcached_result.h +++ b/libmemcached/memcached_result.h @@ -6,26 +6,17 @@ * Author: Brian Aker */ -#ifndef __MEMCACHED_RESULT_H__ -#define __MEMCACHED_RESULT_H__ +#ifndef LIBMEMCACHED_MEMCACHED_RESULT_H +#define LIBMEMCACHED_MEMCACHED_RESULT_H + +#ifndef LIBMEMCACHED_MEMCACHED_H +#error "Please include instead" +#endif #ifdef __cplusplus extern "C" { #endif -struct memcached_result_st { - uint32_t flags; - bool is_allocated; - time_t expiration; - memcached_st *root; - size_t key_length; - uint64_t cas; - memcached_string_st value; - char key[MEMCACHED_MAX_KEY]; - /* Add result callback function */ -}; - -/* Result Struct */ LIBMEMCACHED_API void memcached_result_free(memcached_result_st *result); LIBMEMCACHED_API @@ -56,4 +47,4 @@ memcached_return memcached_result_set_value(memcached_result_st *ptr, const char } #endif -#endif /* __MEMCACHED_RESULT_H__ */ +#endif /* LIBMEMCACHED_MEMCACHED_RESULT_H */ diff --git a/libmemcached/memcached_server.h b/libmemcached/memcached_server.h index ec1014a6..a91454f2 100644 --- a/libmemcached/memcached_server.h +++ b/libmemcached/memcached_server.h @@ -6,8 +6,12 @@ * Author: Brian Aker */ -#ifndef __MEMCACHED_SERVER_H__ -#define __MEMCACHED_SERVER_H__ +#ifndef LIBMEMCACHED_MEMCACHED_SERVER_H +#define LIBMEMCACHED_MEMCACHED_SERVER_H + +#ifndef LIBMEMCACHED_MEMCACHED_H +#error "Please include instead" +#endif #ifdef __cplusplus extern "C" { @@ -86,8 +90,56 @@ memcached_analysis_st *memcached_analyze(memcached_st *memc, memcached_stat_st * LIBMEMCACHED_API memcached_return memcached_server_remove(memcached_server_st *st_ptr); +/* Server Public functions */ + +LIBMEMCACHED_API +memcached_return memcached_server_add_udp(memcached_st *ptr, + const char *hostname, + unsigned int port); +LIBMEMCACHED_API +memcached_return memcached_server_add_unix_socket(memcached_st *ptr, + const char *filename); +LIBMEMCACHED_API +memcached_return memcached_server_add(memcached_st *ptr, const char *hostname, + unsigned int port); + +LIBMEMCACHED_API +memcached_return memcached_server_add_udp_with_weight(memcached_st *ptr, + const char *hostname, + unsigned int port, + uint32_t weight); +LIBMEMCACHED_API +memcached_return memcached_server_add_unix_socket_with_weight(memcached_st *ptr, + const char *filename, + uint32_t weight); +LIBMEMCACHED_API +memcached_return memcached_server_add_with_weight(memcached_st *ptr, const char *hostname, + unsigned int port, + uint32_t weight); +LIBMEMCACHED_API +void memcached_server_list_free(memcached_server_st *ptr); +LIBMEMCACHED_API +memcached_return memcached_server_push(memcached_st *ptr, memcached_server_st *list); + +LIBMEMCACHED_API +memcached_server_st *memcached_server_list_append(memcached_server_st *ptr, + const char *hostname, + unsigned int port, + memcached_return *error); +LIBMEMCACHED_API +memcached_server_st *memcached_server_list_append_with_weight(memcached_server_st *ptr, + const char *hostname, + unsigned int port, + uint32_t weight, + memcached_return *error); +LIBMEMCACHED_API +unsigned int memcached_server_list_count(memcached_server_st *ptr); +LIBMEMCACHED_API +memcached_server_st *memcached_servers_parse(const char *server_strings); + + #ifdef __cplusplus } #endif -#endif /* __MEMCACHED_SERVER_H__ */ +#endif /* LIBMEMCACHED_MEMCACHED_SERVER_H */ diff --git a/libmemcached/memcached_st.h b/libmemcached/memcached_st.h new file mode 100644 index 00000000..d45dd59e --- /dev/null +++ b/libmemcached/memcached_st.h @@ -0,0 +1,52 @@ +/* + * Summary: Common functions to operate on the memcached_st for libmemcached + * + * Copy: See Copyright for the status of this software. + * + * Author: Trond Norbye + */ + +#ifndef LIBMEMCACHED_MEMCACHED_ST_H +#define LIBMEMCACHED_MEMCACHED_ST_H + +#ifndef LIBMEMCACHED_MEMCACHED_H +#error "Please include instead" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +LIBMEMCACHED_API +memcached_return memcached_version(memcached_st *ptr); + +LIBMEMCACHED_API +const char * memcached_lib_version(void); + +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, memcached_st *ptr); + +LIBMEMCACHED_API +memcached_return memcached_verbosity(memcached_st *ptr, unsigned int verbosity); +LIBMEMCACHED_API +void memcached_quit(memcached_st *ptr); +LIBMEMCACHED_API +const char *memcached_strerror(memcached_st *ptr, memcached_return rc); + +LIBMEMCACHED_API +void *memcached_get_user_data(memcached_st *ptr); +LIBMEMCACHED_API +void *memcached_set_user_data(memcached_st *ptr, void *data); + +LIBMEMCACHED_API +memcached_return run_distribution(memcached_st *ptr); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBMEMCACHED_MEMCACHED_ST_H */ diff --git a/libmemcached/memcached_stats.h b/libmemcached/memcached_stats.h new file mode 100644 index 00000000..0b96f59e --- /dev/null +++ b/libmemcached/memcached_stats.h @@ -0,0 +1,76 @@ +/* + * Summary: Stat functions for libmemcached + * + * Copy: See Copyright for the status of this software. + * + * Author: Trond Norbye + */ + +#ifndef LIBMEMCACHED_MEMCACHED_STATS_H +#define LIBMEMCACHED_MEMCACHED_STATS_H + +#ifndef LIBMEMCACHED_MEMCACHED_H +#error "Please include instead" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +struct memcached_analysis_st { + uint32_t average_item_size; + uint32_t longest_uptime; + uint32_t least_free_server; + uint32_t most_consumed_server; + uint32_t oldest_server; + double pool_hit_ratio; + uint64_t most_used_bytes; + uint64_t least_remaining_bytes; +}; + +struct memcached_stat_st { + uint32_t connection_structures; + uint32_t curr_connections; + uint32_t curr_items; + uint32_t pid; + uint32_t pointer_size; + uint32_t rusage_system_microseconds; + uint32_t rusage_system_seconds; + uint32_t rusage_user_microseconds; + uint32_t rusage_user_seconds; + uint32_t threads; + uint32_t time; + uint32_t total_connections; + uint32_t total_items; + uint32_t uptime; + uint64_t bytes; + uint64_t bytes_read; + uint64_t bytes_written; + uint64_t cmd_get; + uint64_t cmd_set; + uint64_t evictions; + uint64_t get_hits; + uint64_t get_misses; + uint64_t limit_maxbytes; + char version[MEMCACHED_VERSION_STRING_LENGTH]; +}; + +LIBMEMCACHED_API +void memcached_stat_free(memcached_st *, memcached_stat_st *); +LIBMEMCACHED_API +memcached_stat_st *memcached_stat(memcached_st *ptr, char *args, memcached_return *error); +LIBMEMCACHED_API +memcached_return memcached_stat_servername(memcached_stat_st *memc_stat, char *args, + char *hostname, unsigned int port); +LIBMEMCACHED_API +char *memcached_stat_get_value(memcached_st *ptr, memcached_stat_st *memc_stat, + const char *key, memcached_return *error); +LIBMEMCACHED_API +char ** memcached_stat_get_keys(memcached_st *ptr, memcached_stat_st *memc_stat, + memcached_return *error); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBMEMCACHED_MEMCACHED_STATS_H */ diff --git a/libmemcached/memcached_storage.h b/libmemcached/memcached_storage.h index 834401a6..87d8baeb 100644 --- a/libmemcached/memcached_storage.h +++ b/libmemcached/memcached_storage.h @@ -6,8 +6,8 @@ * Author: Brian Aker */ -#ifndef __MEMCACHED_STORAGE_H__ -#define __MEMCACHED_STORAGE_H__ +#ifndef LIBMEMCACHED_MEMCACHED_STORAGE_H +#define LIBMEMCACHED_MEMCACHED_STORAGE_H #include "libmemcached/memcached_types.h" @@ -104,4 +104,4 @@ memcached_return memcached_cas_by_key(memcached_st *ptr, } #endif -#endif /* __MEMCACHED_STORAGE_H__ */ +#endif /* LIBMEMCACHED_MEMCACHED_STORAGE_H */ diff --git a/libmemcached/memcached_string.h b/libmemcached/memcached_string.h index bed14281..b643302d 100644 --- a/libmemcached/memcached_string.h +++ b/libmemcached/memcached_string.h @@ -6,22 +6,17 @@ * Author: Brian Aker */ -#ifndef __MEMCACHED_STRING_H__ -#define __MEMCACHED_STRING_H__ +#ifndef LIBMEMCACHED_MEMCACHED_STRING_H +#define LIBMEMCACHED_MEMCACHED_STRING_H + +#ifndef LIBMEMCACHED_MEMCACHED_H +#error "Please include instead" +#endif #ifdef __cplusplus extern "C" { #endif -struct memcached_string_st { - memcached_st *root; - char *end; - char *string; - size_t current_size; - size_t block_size; - bool is_allocated; -}; - #define memcached_string_length(A) (size_t)((A)->end - (A)->string) #define memcached_string_set_length(A, B) (A)->end= (A)->string + B #define memcached_string_size(A) (A)->current_size @@ -50,4 +45,4 @@ void memcached_string_free(memcached_string_st *string); } #endif -#endif /* __MEMCACHED_STRING_H__ */ +#endif /* LIBMEMCACHED_MEMCACHED_STRING_H */ diff --git a/libmemcached/memcached_types.h b/libmemcached/memcached_types.h index d7bb470a..d8c68f18 100644 --- a/libmemcached/memcached_types.h +++ b/libmemcached/memcached_types.h @@ -6,8 +6,12 @@ * Author: Brian Aker */ -#ifndef __MEMCACHED_TYPES_H__ -#define __MEMCACHED_TYPES_H__ +#ifndef LIBMEMCACHED_MEMCACHED_TYPES_H +#define LIBMEMCACHED_MEMCACHED_TYPES_H + +#ifndef LIBMEMCACHED_MEMCACHED_H +#error "Please include instead" +#endif #ifdef __cplusplus extern "C" { @@ -37,8 +41,70 @@ typedef memcached_return (*memcached_trigger_delete_key)(memcached_st *ptr, typedef memcached_return (*memcached_dump_func)(memcached_st *ptr, const char *key, size_t key_length, void *context); +struct memcached_string_st { + memcached_st *root; + char *end; + char *string; + size_t current_size; + size_t block_size; + bool is_allocated; +}; + +struct memcached_result_st { + uint32_t flags; + bool is_allocated; + time_t expiration; + memcached_st *root; + size_t key_length; + uint64_t cas; + memcached_string_st value; + char key[MEMCACHED_MAX_KEY]; + /* Add result callback function */ +}; + +struct memcached_st { + uint8_t purging; + bool is_allocated; + uint8_t distribution; + uint8_t hash; + uint32_t continuum_points_counter; + memcached_server_st *hosts; + int32_t snd_timeout; + int32_t rcv_timeout; + uint32_t server_failure_limit; + uint32_t io_msg_watermark; + uint32_t io_bytes_watermark; + uint32_t io_key_prefetch; + uint32_t number_of_hosts; + uint32_t cursor_server; + int cached_errno; + uint32_t flags; + int32_t poll_timeout; + int32_t connect_timeout; + int32_t retry_timeout; + uint32_t continuum_count; + int send_size; + int recv_size; + void *user_data; + time_t next_distribution_rebuild; + size_t prefix_key_length; + memcached_hash hash_continuum; + memcached_result_st result; + memcached_continuum_item_st *continuum; + memcached_clone_func on_clone; + memcached_cleanup_func on_cleanup; + memcached_free_function call_free; + memcached_malloc_function call_malloc; + memcached_realloc_function call_realloc; + memcached_calloc_function call_calloc; + memcached_trigger_key get_key_failure; + memcached_trigger_delete_key delete_trigger; + char prefix_key[MEMCACHED_PREFIX_KEY_MAX_SIZE]; + uint32_t number_of_replicas; +}; + #ifdef __cplusplus } #endif -#endif /* __MEMCACHED_TYPES_H__ */ +#endif /* LIBMEMCACHED_MEMCACHED_TYPES_H */ diff --git a/libmemcached/memcached_util.h b/libmemcached/memcached_util.h index 65732c87..501b81ae 100644 --- a/libmemcached/memcached_util.h +++ b/libmemcached/memcached_util.h @@ -7,9 +7,9 @@ * Author: Trond Norbye */ -#ifndef MEMCACHED_UTIL_H -#define MEMCACHED_UTIL_H +#ifndef LIBMEMCACHED_MEMCACHED_UTIL_H +#define LIBMEMCACHED_MEMCACHED_UTIL_H #include -#endif /* MEMCACHED_UTIL_H */ +#endif /* LIBMEMCACHED_MEMCACHED_UTIL_H */ diff --git a/libmemcached/visibility.h b/libmemcached/visibility.h index 9405a88d..1f3e85bb 100644 --- a/libmemcached/visibility.h +++ b/libmemcached/visibility.h @@ -13,8 +13,8 @@ * @brief Visibility control macros */ -#ifndef __LIBMEMCACHED_VISIBILITY_H -#define __LIBMEMCACHED_VISIBILITY_H +#ifndef LIBMEMCACHED_VISIBILITY_H +#define LIBMEMCACHED_VISIBILITY_H /** * @@ -48,4 +48,4 @@ # endif /* defined(_MSC_VER) */ #endif /* defined(BUILDING_LIBMEMCACHED) */ -#endif /* __LIBMEMCACHED_VISIBILITY_H */ +#endif /* LIBMEMCACHED_VISIBILITY_H */ diff --git a/tests/plus.cpp b/tests/plus.cpp index 6b431644..b8bd89a1 100644 --- a/tests/plus.cpp +++ b/tests/plus.cpp @@ -1,7 +1,7 @@ /* C++ interface test */ -#include "libmemcached/memcached.hpp" +#include "libmemcached/memcached.h" #include #include -- 2.30.2