*
*/
-#include "common.h"
+#include "libmemcached/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,
- memcached_callback_t flag,
+memcached_return_t memcached_callback_set(memcached_st *ptr,
+ const memcached_callback_t flag,
void *data)
{
switch (flag)
{
case MEMCACHED_CALLBACK_PREFIX_KEY:
{
- char *key= (char *)data;
-
- if (key)
- {
- size_t key_length= strlen(key);
-
- if (memcached_key_test((const char **)&key, &key_length, 1) == MEMCACHED_BAD_KEY_PROVIDED)
- {
- return MEMCACHED_BAD_KEY_PROVIDED;
- }
-
- if ((key_length > MEMCACHED_PREFIX_KEY_MAX_SIZE -1)
- || (strcpy(ptr->prefix_key, key) == NULL))
- {
- ptr->prefix_key_length= 0;
- return MEMCACHED_BAD_KEY_PROVIDED;
- }
- else
- {
- ptr->prefix_key_length= key_length;
- }
- }
- else
- {
- memset(ptr->prefix_key, 0, MEMCACHED_PREFIX_KEY_MAX_SIZE);
- ptr->prefix_key_length= 0;
- }
-
- break;
+ return memcached_set_prefix_key(ptr, (char*)data, data ? strlen((char*)data) : 0);
}
case MEMCACHED_CALLBACK_USER_DATA:
{
ptr->delete_trigger= func;
break;
}
+ case MEMCACHED_CALLBACK_MAX:
default:
return MEMCACHED_FAILURE;
}
return MEMCACHED_SUCCESS;
}
-void *memcached_callback_get(memcached_st *ptr,
- memcached_callback_t flag,
+void *memcached_callback_get(memcached_st *ptr,
+ const memcached_callback_t flag,
memcached_return_t *error)
{
memcached_return_t local_error;
{
case MEMCACHED_CALLBACK_PREFIX_KEY:
{
- if (ptr->prefix_key[0] == 0)
+ if (ptr->prefix_key)
{
- *error= MEMCACHED_FAILURE;
- return NULL;
+ *error= MEMCACHED_SUCCESS;
+ return (void *)memcached_array_string(ptr->prefix_key);
}
else
{
- *error= MEMCACHED_SUCCESS;
- return (void *)ptr->prefix_key;
+ *error= MEMCACHED_FAILURE;
+ return NULL;
}
}
case MEMCACHED_CALLBACK_USER_DATA:
*error= ptr->delete_trigger ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
return *(void **)&ptr->delete_trigger;
}
+ case MEMCACHED_CALLBACK_MAX:
default:
WATCHPOINT_ASSERT(0);
*error= MEMCACHED_FAILURE;