Add memcached_[gs]et_user_data and updated the doc for memcached_set_memory_allocator...
authorTrond Norbye <trond.norbye@sun.com>
Sun, 14 Jun 2009 14:36:57 +0000 (16:36 +0200)
committerTrond Norbye <trond.norbye@sun.com>
Sun, 14 Jun 2009 14:36:57 +0000 (16:36 +0200)
.bzrignore
docs/Makefile.am
docs/libmemcached.pod
docs/memcached_memory_allocators.pod
docs/memcached_user_data.pod [new file with mode: 0644]
libmemcached/memcached.c
libmemcached/memcached.h
tests/function.c

index 67b1698c53a420337eb9f4a05590fb26e90dfe46..4b8966e156676baddbf3da7be4120f04b7244168 100644 (file)
@@ -97,6 +97,8 @@ docs/memslap.1
 docs/memstat.1
 docs/memcached_set_memory_allocators.3
 docs/memcached_get_memory_allocators.3
+docs/memcached_set_user_data.3
+docs/memcached_get_user_data.3
 libmemcached/.deps
 libmemcached/.libs
 libmemcached/Makefile
index e7c7df35f50662fea03ebd1811e01495c923fa7d..fa2d338325f8ac70e0be49a217a5a447788477a9 100644 (file)
@@ -32,7 +32,8 @@ EXTRA_DIST = libmemcached.pod\
        memcached_flush_buffers.pod\
         memcached_analyze.pod\
         memcached_generate_hash_value.pod\
-        memcached_memory_allocators.pod
+        memcached_memory_allocators.pod\
+        memory_user_data.pod
 
 man_MANS = libmemcached.3\
        libmemcached_examples.3\
@@ -98,7 +99,9 @@ man_MANS = libmemcached.3\
         memcached_dump.3\
         memcached_generate_hash_value.3\
         memcached_set_memory_allocators.3\
-        memcached_get_memory_allocators.3
+        memcached_get_memory_allocators.3\
+        memcached_set_user_data.3\
+        memcached_get_user_data.3
 
 if BUILD_LIBMEMCACHEDUTIL
 man_MANS+= libmemcachedutil.3 \
@@ -316,6 +319,12 @@ memcached_get_memory_allocators.3: memcached_memory_allocators.pod
 memcached_set_memory_allocators.3: memcached_memory_allocators.pod
        @POD2MAN@ -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_memory_allocators.pod > memcached_set_memory_allocators.3
 
+memcached_get_user_data.3: memcached_user_data.pod
+       @POD2MAN@ -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_user_data.pod > memcached_get_user_data.3
+
+memcached_set_user_data.3: memcached_user_data.pod
+       @POD2MAN@ -c "libmemcached" -r "" -s 3 ${top_srcdir}/docs/memcached_user_data.pod > memcached_set_user_data.3
+
 memcached_pool_create.3: memcached_pool.pod 
        @POD2MAN@ -c "libmemcachedutil" -r "" -s 3 ${top_srcdir}/docs/memcached_pool.pod > memcached_pool_create.3
 
@@ -380,6 +389,7 @@ test:
        podchecker $(top_srcdir)/docs/memcached_flush_buffers.pod
        podchecker $(top_srcdir)/docs/memcached_pool.pod
        podchecker $(top_srcdir)/docs/memcached_memory_allocators.pod
+       podchecker $(top_srcdir)/docs/memcached_user_data.pod
 
 html-local:
        pod2htmltree "/libmemcached" .
index 19472e83b405f4900ac39601942d1771f462141f..e1a95a73eebdd34bfcf69a8b5e355c37f75437be 100644 (file)
@@ -121,7 +121,7 @@ Brian Aker, E<lt>brian@tangent.orgE<gt>
 
 =head1 SEE ALSO
 
-memcached(1) libmemcached_examples(3) libmemcached(1) memcat(1) memcp(1) memflush(1) memrm(1) memslap(1) memstat(1) memcached_fetch(3) memcached_replace(3) memcached_server_list_free(3) libmemcached_examples(3) memcached_clone(3) memcached_free(3) memcached_server_add(3) memcached_server_push(3) memcached_add(3) memcached_get(3) memcached_server_count(3) memcached_servers_parse(3) memcached_create(3) memcached_increment(3) memcached_server_list(3) memcached_set(3) memcached_decrement(3) memcached_mget(3) memcached_server_list_append(3) memcached_strerror(3) memcached_delete(3) memcached_quit(3) memcached_server_list_count(3) memcached_verbosity(3) memcached_server_add_unix_socket(3) memcached_result_create(3)  memcached_result_free(3)  memcached_result_key_value(3)  memcached_result_key_length(3)  memcached_result_value(3)  memcached_result_length(3)  memcached_result_flags(3)  memcached_result_cas(3) memcached_result_st(3) memcached_append(3) memcached_prepend(3) memcached_fetch_result(3) memerror(1) memcached_get_by_key(3) memcached_mget_by_key(3) memcached_delete_by_key(3) memcached_fetch_execute(3) memcached_callback_get(3) memcached_callback_set(3) memcached_version(3) memcached_lib_version(3) memcached_result_set_value(3) memcached_dump(3) memdump(1) memcached_set_memory_allocators(3) memcached_get_memory_allocators(3)
+memcached(1) libmemcached_examples(3) libmemcached(1) memcat(1) memcp(1) memflush(1) memrm(1) memslap(1) memstat(1) memcached_fetch(3) memcached_replace(3) memcached_server_list_free(3) libmemcached_examples(3) memcached_clone(3) memcached_free(3) memcached_server_add(3) memcached_server_push(3) memcached_add(3) memcached_get(3) memcached_server_count(3) memcached_servers_parse(3) memcached_create(3) memcached_increment(3) memcached_server_list(3) memcached_set(3) memcached_decrement(3) memcached_mget(3) memcached_server_list_append(3) memcached_strerror(3) memcached_delete(3) memcached_quit(3) memcached_server_list_count(3) memcached_verbosity(3) memcached_server_add_unix_socket(3) memcached_result_create(3)  memcached_result_free(3)  memcached_result_key_value(3)  memcached_result_key_length(3)  memcached_result_value(3)  memcached_result_length(3)  memcached_result_flags(3)  memcached_result_cas(3) memcached_result_st(3) memcached_append(3) memcached_prepend(3) memcached_fetch_result(3) memerror(1) memcached_get_by_key(3) memcached_mget_by_key(3) memcached_delete_by_key(3) memcached_fetch_execute(3) memcached_callback_get(3) memcached_callback_set(3) memcached_version(3) memcached_lib_version(3) memcached_result_set_value(3) memcached_dump(3) memdump(1) memcached_set_memory_allocators(3) memcached_get_memory_allocators(3) memcached_get_user_data(3) memcached_set_user_data(3)
 
 =cut
 
index b2ac84cb9eb2053c943a91004bf3e6c4228afecd..5d6d00ae6cce0a8aac99e256937d0432385c4629 100644 (file)
@@ -46,6 +46,11 @@ all functions to reset them to the default values.
 memcached_get_memory_allocators() is used to get the currently used memory
 allocators by a mamcached handle.
 
+The first argument to the memory allocator functions is a pointer to a
+memcached structure, and you may use the memcached_set_user_data() and
+memcached_get_user_data() to store a user-specific value to each memcached
+structure.
+
 =head1 RETURN
 
 memcached_set_memory_allocators() return MEMCACHED_SUCCESS upon success, 
@@ -62,7 +67,7 @@ Trond Norbye, E<lt>trond.norbye@sun.comE<gt>
 
 =head1 SEE ALSO
 
-memcached(1) libmemcached(3)
+memcached(1) libmemcached(3) memcached_get_user_data(3) memcached_set_user_data(3)
 
 =cut
 
diff --git a/docs/memcached_user_data.pod b/docs/memcached_user_data.pod
new file mode 100644 (file)
index 0000000..d5161a1
--- /dev/null
@@ -0,0 +1,49 @@
+=head1 NAME
+
+memcached_set_user_data, memcached_get_user_data
+
+=head1 LIBRARY
+
+C Client Library for memcached (libmemcached, -lmemcached)
+
+=head1 SYNOPSIS
+
+  #include <memcached.h>
+
+  void *memcached_get_user_data(memcached_st *ptr);
+  void *memcached_set_user_data(memcached_st *ptr, void *data);
+
+=head1 DESCRIPTION
+
+libmemcached(3) allows you to store a pointer to a user specific data inside
+the memcached_st structure. 
+
+memcached_set_user_data() is used to set the user specific data in the
+memcached_st structure.
+
+memcached_get_user_data() is used to retrieve the user specific data in
+the memcached_st structure.
+
+=head1 RETURN
+
+memcached_set_user_data() returns the previous value of the user specific 
+data.
+
+memcached_get_user_data() returns the current value uf the user specific
+data.
+
+=head1 HOME
+
+To find out more information please check:
+L<http://tangent.org/552/libmemcached.html>
+
+=head1 AUTHOR
+
+Trond Norbye, E<lt>trond.norbye@sun.comE<gt>
+
+=head1 SEE ALSO
+
+memcached(1) libmemcached(3)
+
+=cut
+
index 61a3b399239e4e76cb5d4fb992347767b25e3987..5991aabb46ced3c685ed7a26fcf0f9a4ce40786e 100644 (file)
@@ -136,3 +136,14 @@ memcached_st *memcached_clone(memcached_st *clone, memcached_st *source)
 
   return new_clone;
 }
+void *memcached_get_user_data(memcached_st *ptr)
+{
+  return ptr->user_data;
+}
+
+void *memcached_set_user_data(memcached_st *ptr, void *data)
+{
+  void *ret= ptr->user_data;
+  ptr->user_data= data;
+  return ret;
+}
index a0e2f6deedbecd4a1d9bb2d416760f3042e2a666..607fb4b6000d7fdbc66fa00a89af47165aef0454 100644 (file)
@@ -243,6 +243,9 @@ void memcached_get_memory_allocators(memcached_st *ptr,
                                      memcached_realloc_function *mem_realloc,
                                      memcached_calloc_function *mem_calloc);
 
+void *memcached_get_user_data(memcached_st *ptr);
+void *memcached_set_user_data(memcached_st *ptr, void *data);
+
 #ifdef __cplusplus
 }
 #endif
index 4b7fbdee15edb3a53d44f1e12b00a800e81e6a7a..99ad776aecc1bc8154c4dc58cca229b885fd925c 100644 (file)
@@ -263,6 +263,16 @@ static test_return  clone_test(memcached_st *memc)
   return 0;
 }
 
+static test_return userdata_test(memcached_st *memc)
+{
+  void* foo;
+  assert(memcached_set_user_data(memc, foo) == NULL);
+  assert(memcached_get_user_data(memc) == foo);
+  assert(memcached_set_user_data(memc, NULL) == foo);
+  
+  return TEST_SUCCESS;
+}
+
 static test_return  connection_test(memcached_st *memc)
 {
   memcached_return rc;
@@ -4131,6 +4141,7 @@ test_st tests[] ={
   {"connection_test", 0, connection_test},
   {"callback_test", 0, callback_test},
   {"behavior_test", 0, behavior_test},
+  {"userdata_test", 0, userdata_test},
   {"error", 0, error_test },
   {"set", 0, set_test },
   {"set2", 0, set_test2 },