uint64_t total_get_cmds= 0, total_get_hits= 0;
uint32_t server_count, x;
memcached_analysis_st *result;
-
+
*error= MEMCACHED_SUCCESS;
server_count= memcached_server_count(memc);
result= (memcached_analysis_st*)calloc(memc->number_of_hosts,
return NULL;
}
- result->options.allocated= true;
result->root= memc;
for (x= 0; x < server_count; x++)
void memcached_analyze_free(memcached_analysis_st *ptr)
{
- if (ptr->options.allocated)
- free(ptr);
+ free(ptr);
}
* Use and distribution licensed under the BSD license. See
* the COPYING file in the parent directory for full text.
*
- * Summary: Change the behavior of the memcached connection.
+ * Summary: Generate a memcached_analysis_st
*
*/
struct memcached_analysis_st {
- struct {
- bool allocated:1;
- } options;
memcached_st *root;
uint32_t average_item_size;
uint32_t longest_uptime;
*
*/
-#include "common.h"
+#include "common.h"
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/tcp.h>
-/*
+/*
These functions provide data and function callback support
*/
-memcached_return_t memcached_callback_set(memcached_st *ptr,
- const memcached_callback_t flag,
+memcached_return_t memcached_callback_set(memcached_st *ptr,
+ const memcached_callback_t flag,
void *data)
{
switch (flag)
return MEMCACHED_SUCCESS;
}
-void *memcached_callback_get(memcached_st *ptr,
+void *memcached_callback_get(memcached_st *ptr,
const memcached_callback_t flag,
memcached_return_t *error)
{
#define SMALL_STRING_LEN 1024
#define HUGE_STRING_LEN 8196
-
-typedef enum {
- MEM_NO_BLOCK= (1 << 0),
- MEM_TCP_NODELAY= (1 << 1),
- MEM_REUSE_MEMORY= (1 << 2),
- MEM_USE_MD5= (1 << 3),
- /* 4 was once Ketama */
- MEM_USE_CRC= (1 << 5),
- MEM_USE_CACHE_LOOKUPS= (1 << 6),
- MEM_SUPPORT_CAS= (1 << 7),
- MEM_BUFFER_REQUESTS= (1 << 8),
- MEM_USE_SORT_HOSTS= (1 << 9),
- MEM_VERIFY_KEY= (1 << 10),
- /* 11 used for weighted ketama */
- MEM_KETAMA_WEIGHTED= (1 << 11),
- MEM_BINARY_PROTOCOL= (1 << 12),
- MEM_HASH_WITH_PREFIX_KEY= (1 << 13),
- MEM_NOREPLY= (1 << 14),
- MEM_USE_UDP= (1 << 15),
- MEM_AUTO_EJECT_HOSTS= (1 << 16),
- MEM_RANDOMIZE_REPLICA_READ= (1 << 17)
-} memcached_flags;
-
/* Hashing algo */
LIBMEMCACHED_LOCAL
void server_list_free(memcached_st *ptr, memcached_server_st *servers);
LIBMEMCACHED_LOCAL
-memcached_return_t memcached_key_test(const char * const *keys,
+memcached_return_t memcached_key_test(const char * const *keys,
const size_t *key_length,
size_t number_of_keys);
WATCHPOINT_ASSERT(ptr->cursor_active == 0);
- if (!ptr->sockaddr_inited ||
+ if (! ptr->options.sockaddr_inited ||
(!(ptr->root->flags.use_cache_lookups)))
{
memcached_return_t rc;
rc= set_hostinfo(ptr);
if (rc != MEMCACHED_SUCCESS)
return rc;
- ptr->sockaddr_inited= true;
+ ptr->options.sockaddr_inited= true;
}
use= ptr->address_info;
new_host_list= ptr->call_realloc(ptr, ptr->hosts,
sizeof(memcached_server_st) * (count + ptr->number_of_hosts));
- if (!new_host_list)
+ if (! new_host_list)
return MEMCACHED_MEMORY_ALLOCATION_FAILURE;
ptr->hosts= new_host_list;
/* LibMemcached
- * Copyright (C) 2006-2009 Brian Aker
+ * Copyright (C) 2006-2009 Brian Aker
* All rights reserved.
*
* Use and distribution licensed under the BSD license. See
uint16_t reserved;
};
+LIBMEMCACHED_LOCAL
ssize_t memcached_io_write(memcached_server_st *ptr,
const void *buffer, size_t length, char with_flush);
+LIBMEMCACHED_LOCAL
void memcached_io_reset(memcached_server_st *ptr);
+LIBMEMCACHED_LOCAL
memcached_return_t memcached_io_read(memcached_server_st *ptr,
void *buffer, size_t length, ssize_t *nread);
/* Read a line (terminated by '\n') into the buffer */
+LIBMEMCACHED_LOCAL
memcached_return_t memcached_io_readline(memcached_server_st *ptr,
char *buffer_ptr,
size_t size);
+LIBMEMCACHED_LOCAL
memcached_return_t memcached_io_close(memcached_server_st *ptr);
/* Read n bytes of data from the server and store them in dta */
+LIBMEMCACHED_LOCAL
memcached_return_t memcached_safe_read(memcached_server_st *ptr,
void *dta,
size_t size);
/* Read a single response from the server */
+LIBMEMCACHED_LOCAL
memcached_return_t memcached_read_one_response(memcached_server_st *ptr,
char *buffer, size_t buffer_length,
memcached_result_st *result);
+LIBMEMCACHED_LOCAL
memcached_return_t memcached_io_init_udp_header(memcached_server_st *ptr,
uint16_t thread_id);
+LIBMEMCACHED_LOCAL
memcached_server_st *memcached_io_get_readable_server(memcached_st *memc);
#endif /* BUILDING_LIBMEMCACHED */
#include "common.h"
-memcached_return_t memcached_key_test(const char * const *keys,
- const size_t *key_length,
+memcached_return_t memcached_key_test(const char * const *keys,
+ const size_t *key_length,
size_t number_of_keys)
{
uint32_t x;
rc= memcached_validate_key_length(*(key_length + x), false);
if (rc != MEMCACHED_SUCCESS)
return rc;
-
+
for (y= 0; y < *(key_length + x); y++)
{
if ((isgraph(keys[x][y])) == 0)
/* LibMemcached
- * Copyright (C) 2006-2009 Brian Aker
+ * Copyright (C) 2006-2009 Brian Aker
* All rights reserved.
*
* Use and distribution licensed under the BSD license. See
if (ptr == NULL)
return NULL;
- rv = memcached_server_create_with(ptr->root, clone,
- ptr->hostname, ptr->port, ptr->weight,
- ptr->type);
+ rv= memcached_server_create_with(ptr->root, clone,
+ ptr->hostname, ptr->port, ptr->weight,
+ ptr->type);
if (rv != NULL)
{
rv->cached_errno= ptr->cached_errno;
/* LibMemcached
- * Copyright (C) 2006-2009 Brian Aker
+ * Copyright (C) 2006-2009 Brian Aker
* All rights reserved.
*
* Use and distribution licensed under the BSD license. See
struct memcached_server_st {
struct {
bool is_allocated:1;
+ bool sockaddr_inited:1;
} options;
- bool sockaddr_inited;
uint16_t count;
uint32_t cursor_active;
in_port_t port;
stats= ptr->call_calloc(ptr, ptr->number_of_hosts, sizeof(memcached_stat_st));
+ stats->root= ptr;
+
if (!stats)
{
*error= MEMCACHED_MEMORY_ALLOCATION_FAILURE;
return;
}
- if (ptr)
+ if (memc_stat->root)
+ {
+ memc_stat->root->call_free(ptr, memc_stat);
+ }
+ else if (ptr)
+ {
ptr->call_free(ptr, memc_stat);
+ }
else
+ {
free(memc_stat);
+ }
}
* Use and distribution licensed under the BSD license. See
* the COPYING file in the parent directory for full text.
*
- * Summary: Change the behavior of the memcached connection.
+ * Summary: Collect up the stats for a memcached server.
*
*/
uint64_t get_misses;
uint64_t limit_maxbytes;
char version[MEMCACHED_VERSION_STRING_LENGTH];
+ memcached_st *root;
};
LIBMEMCACHED_API