return hashkit_md5(key, key_length, NULL);
}
-void libhashkit_md5_signature(const unsigned char *key, uint32_t length, unsigned char *result)
+void libhashkit_md5_signature(const unsigned char *key, size_t length, unsigned char *result)
{
- md5_signature(key, length, result);
+ md5_signature(key, (uint32_t)length, result);
}
uint32_t hashkit_md5(const char *key, size_t key_length, void *context);
HASHKIT_API
-void libhashkit_md5_signature(const unsigned char *key, uint32_t length, unsigned char *result);
+void libhashkit_md5_signature(const unsigned char *key, size_t length, unsigned char *result);
#ifdef __cplusplus
}
endif
libhashkit_libhashkit_la_CFLAGS= \
- ${AM_CFLAGS} \
- -DBUILDING_HASHKIT
+ ${AM_CFLAGS} \
+ -DBUILDING_HASHKIT
libhashkit_libhashkit_la_LDFLAGS= \
$(LIBM) \
-version-info $(HASHKIT_LIBRARY_VERSION)
-noinst_LTLIBRARIES+= \
- libhashkit/libhashkitinc.la
+noinst_LTLIBRARIES+= libhashkit/libhashkitinc.la
libhashkit_libhashkitinc_la_SOURCES= ${libhashkit_libhashkit_la_SOURCES}
libhashkit_libhashkitinc_la_CFLAGS= ${libhashkit_libhashkit_la_CFLAGS}
-libhashkit_libhashkitinc_la_LDFLAGS= ${libhashkit_libhashkit_la_LDFLAGS}
-
+libhashkit_libhashkitinc_la_LDFLAGS= $(LIBM)
/* Update number of bits */
if ((context->count[0] += ((UINT4)inputLen << 3))
- < ((UINT4)inputLen << 3))
- context->count[1]++;
+ < ((UINT4)inputLen << 3))
+ context->count[1]++;
context->count[1] += ((UINT4)inputLen >> 29);
partLen = 64 - idx;
+/* LibMemcached
+ * Copyright (C) 2006-2010 Brian Aker
+ * All rights reserved.
+ *
+ * Use and distribution licensed under the BSD license. See
+ * the COPYING file in the parent directory for full text.
+ *
+ * Summary:
+ *
+ */
+
#include "common.h"
memcached_return_t memcached_do(memcached_server_st *ptr, const void *command,
/* LibMemcached
- * Copyright (C) 2006-2009 Brian Aker
+ * Copyright (C) 2006-2010 Brian Aker
* All rights reserved.
*
* Use and distribution licensed under the BSD license. See
}
if (is_master_key_set)
+ {
for (size_t x= 0; x < number_of_keys; x++)
+ {
hash[x]= master_server_key;
+ }
+ }
else
+ {
for (size_t x= 0; x < number_of_keys; x++)
+ {
hash[x]= memcached_generate_hash(ptr, keys[x], key_length[x]);
+ }
+ }
rc= replication_binary_mget(ptr, hash, dead_servers, keys,
key_length, number_of_keys);
+/* LibMemcached
+ * Copyright (C) 2006-2010 Brian Aker
+ * All rights reserved.
+ *
+ * Use and distribution licensed under the BSD license. See
+ * the COPYING file in the parent directory for full text.
+ *
+ * Summary:
+ *
+ */
+
#include "common.h"
return dispatch_host(ptr, hash);
}
+
+hashkit_st *memcached_get_hashkit(memcached_st *ptr)
+{
+ return &ptr->hashkit;
+}
LIBMEMCACHED_API
uint32_t memcached_generate_hash_value(const char *key, size_t key_length, memcached_hash_t hash_algorithm);
+LIBMEMCACHED_API
+hashkit_st *memcached_get_hashkit(memcached_st *ptr);
+
LIBMEMCACHED_API
uint32_t memcached_generate_hash(memcached_st *ptr, const char *key, size_t key_length);
+
#ifdef __cplusplus
}
#endif
+/* LibMemcached
+ * Copyright (C) 2006-2010 Brian Aker
+ * All rights reserved.
+ *
+ * Use and distribution licensed under the BSD license. See
+ * the COPYING file in the parent directory for full text.
+ *
+ * Summary:
+ *
+ */
+
#include "common.h"
#include <math.h>
return MEMCACHED_SUCCESS;
}
-static uint32_t ketama_server_hash(const char *key, unsigned int key_length, uint32_t alignment)
+static uint32_t ketama_server_hash(const char *key, size_t key_length, uint32_t alignment)
{
unsigned char results[16];
if (is_ketama_weighted)
{
- for (uint32_t x = 0; x < pointer_per_hash; x++)
+ for (uint32_t x= 0; x < pointer_per_hash; x++)
{
- value= ketama_server_hash(sort_host, (uint32_t) sort_host_length, x);
+ value= ketama_server_hash(sort_host, sort_host_length, x);
ptr->continuum[continuum_index].index= host_index;
ptr->continuum[continuum_index++].value= value;
}
{
for (uint32_t x = 0; x < pointer_per_hash; x++)
{
- value= ketama_server_hash(sort_host, (uint32_t) sort_host_length, (int) x);
+ value= ketama_server_hash(sort_host, sort_host_length, x);
ptr->continuum[continuum_index].index= host_index;
ptr->continuum[continuum_index++].value= value;
}
return run_distribution(ptr);
}
-
-/**
- @todo allow lists to query themselves even if they lack a root
-*/
-memcached_return_t memcached_server_remove(memcached_server_st *st_ptr)
-{
- uint32_t x, host_index;
- memcached_st *root= (memcached_st *)st_ptr->root;
- memcached_server_st *list;
-
- if (root == NULL)
- return MEMCACHED_FAILURE;
-
- list= memcached_server_list(root);
-
- for (x= 0, host_index= 0; x < memcached_server_count(root); x++)
- {
- if (strncmp(list[x].hostname, st_ptr->hostname, MEMCACHED_MAX_HOST_LENGTH) != 0 || list[x].port != st_ptr->port)
- {
- if (host_index != x)
- memcpy(list+host_index, list+x, sizeof(memcached_server_st));
- host_index++;
- }
- }
- root->number_of_hosts= host_index;
-
- if (st_ptr->address_info)
- {
- freeaddrinfo(st_ptr->address_info);
- st_ptr->address_info= NULL;
- }
- run_distribution(root);
-
- return MEMCACHED_SUCCESS;
-}
-
-memcached_server_st *memcached_server_list_append(memcached_server_st *ptr,
- const char *hostname, in_port_t port,
- memcached_return_t *error)
-{
- return memcached_server_list_append_with_weight(ptr, hostname, port, 0, error);
-}
-
-memcached_server_st *memcached_server_list_append_with_weight(memcached_server_st *ptr,
- const char *hostname, in_port_t port,
- uint32_t weight,
- memcached_return_t *error)
-{
- unsigned int count;
- memcached_server_instance_st *new_host_list;
-
- if (hostname == NULL || error == NULL)
- return NULL;
-
- if (! port)
- port= MEMCACHED_DEFAULT_PORT;
-
- /* Increment count for hosts */
- count= 1;
- if (ptr != NULL)
- {
- count+= memcached_servers_count(ptr);
- }
-
- new_host_list= (memcached_server_instance_st *)realloc(ptr, sizeof(memcached_server_instance_st) * count);
- if (!new_host_list)
- {
- *error= MEMCACHED_MEMORY_ALLOCATION_FAILURE;
- return NULL;
- }
-
- /* TODO: Check return type */
- memcached_server_create_with(NULL, &new_host_list[count-1], hostname, port, weight, MEMCACHED_CONNECTION_TCP);
-
- /* Backwards compatibility hack */
- memcached_servers_set_count(new_host_list, count);
-
- *error= MEMCACHED_SUCCESS;
- return new_host_list;
-}
# This noinst lib contains things we want to be ABI private but still want to
# either use in client programs or be able to test in test cases
# These symbols will not be exposed in the shipped .so
-noinst_LTLIBRARIES+= \
- libmemcached/libmemcachedinternal.la
-libmemcached_libmemcachedinternal_la_SOURCES = libmemcached/string.c
+noinst_LTLIBRARIES+= libmemcached/libmemcachedinternal.la
+libmemcached_libmemcachedinternal_la_SOURCES= \
+ libmemcached/string.c
lib_LTLIBRARIES+= libmemcached/libmemcached.la
libmemcached_libmemcached_la_CFLAGS= ${AM_CFLAGS} ${NO_CONVERSION}
libmemcached/response.c \
libmemcached/result.c \
libmemcached/server.c \
+ libmemcached/server_list.c \
libmemcached/stats.c \
libmemcached/storage.c \
libmemcached/strerror.c \
-/*
- Memcached library
-*/
+/* LibMemcached
+ * Copyright (C) 2006-2010 Brian Aker
+ * All rights reserved.
+ *
+ * Use and distribution licensed under the BSD license. See
+ * the COPYING file in the parent directory for full text.
+ *
+ * Summary:
+ *
+ */
+
#include "common.h"
static const memcached_st global_copy= {
{
server_list_free(NULL, ptr);
}
+
+/**
+ @todo allow lists to query themselves even if they lack a root
+*/
+memcached_return_t memcached_server_remove(memcached_server_st *st_ptr)
+{
+ uint32_t x, host_index;
+ memcached_st *root= (memcached_st *)st_ptr->root;
+ memcached_server_st *list;
+
+ if (root == NULL)
+ return MEMCACHED_FAILURE;
+
+ list= memcached_server_list(root);
+
+ for (x= 0, host_index= 0; x < memcached_server_count(root); x++)
+ {
+ if (strncmp(list[x].hostname, st_ptr->hostname, MEMCACHED_MAX_HOST_LENGTH) != 0 || list[x].port != st_ptr->port)
+ {
+ if (host_index != x)
+ memcpy(list+host_index, list+x, sizeof(memcached_server_st));
+ host_index++;
+ }
+ }
+ root->number_of_hosts= host_index;
+
+ if (st_ptr->address_info)
+ {
+ freeaddrinfo(st_ptr->address_info);
+ st_ptr->address_info= NULL;
+ }
+ run_distribution(root);
+
+ return MEMCACHED_SUCCESS;
+}
--- /dev/null
+/* LibMemcached
+ * Copyright (C) 2006-2010 Brian Aker
+ * All rights reserved.
+ *
+ * Use and distribution licensed under the BSD license. See
+ * the COPYING file in the parent directory for full text.
+ *
+ * Summary:
+ *
+ */
+
+
+#include "common.h"
+
+memcached_server_st *memcached_server_list_append_with_weight(memcached_server_st *ptr,
+ const char *hostname, in_port_t port,
+ uint32_t weight,
+ memcached_return_t *error)
+{
+ unsigned int count;
+ memcached_server_instance_st *new_host_list;
+
+ if (hostname == NULL || error == NULL)
+ return NULL;
+
+ if (! port)
+ port= MEMCACHED_DEFAULT_PORT;
+
+ /* Increment count for hosts */
+ count= 1;
+ if (ptr != NULL)
+ {
+ count+= memcached_servers_count(ptr);
+ }
+
+ new_host_list= (memcached_server_instance_st *)realloc(ptr, sizeof(memcached_server_instance_st) * count);
+ if (!new_host_list)
+ {
+ *error= MEMCACHED_MEMORY_ALLOCATION_FAILURE;
+ return NULL;
+ }
+
+ /* TODO: Check return type */
+ memcached_server_create_with(NULL, &new_host_list[count-1], hostname, port, weight, MEMCACHED_CONNECTION_TCP);
+
+ /* Backwards compatibility hack */
+ memcached_servers_set_count(new_host_list, count);
+
+ *error= MEMCACHED_SUCCESS;
+ return new_host_list;
+}
+
+memcached_server_st *memcached_server_list_append(memcached_server_st *ptr,
+ const char *hostname, in_port_t port,
+ memcached_return_t *error)
+{
+ return memcached_server_list_append_with_weight(ptr, hostname, port, 0, error);
+}
*/
-#ifndef MEMCACHED_POOL_H
-#define MEMCACHED_POOL_H
+#ifndef __LIMEMCACHED_UTIL_POOL_H__
+#define __LIMEMCACHED_UTIL_POOL_H__
#include <libmemcached/memcached.h>
uint64_t *value);
#ifdef __cplusplus
-}
+} // extern "C"
#endif
-#endif /* MEMCACHED_POOL_H */
+#endif /* __LIMEMCACHED_UTIL_POOL_H__ */
tests_testapp_CFLAGS= $(AM_CFLAGS) $(NO_CONVERSION) $(NO_STRICT_ALIASING)
tests_testapp_SOURCES= tests/mem_functions.c
tests_testapp_LDADD= \
- clients/libgenexec.la \
- tests/libserver.la \
- tests/libtest.la \
- libmemcached/libmemcachedinternal.la \
- $(TESTS_LDADDS)
+ clients/libgenexec.la \
+ tests/libserver.la \
+ tests/libtest.la \
+ libmemcached/libmemcachedinternal.la \
+$(TESTS_LDADDS)
tests_testapp_DEPENDENCIES= $(tests_testapp_LDADD)
tests_testplus_SOURCES= tests/plus.cpp