Updated stats object to use a root like other structures.
authorBrian Aker <brian@gaz>
Sun, 3 Jan 2010 01:58:40 +0000 (17:58 -0800)
committerBrian Aker <brian@gaz>
Sun, 3 Jan 2010 01:58:40 +0000 (17:58 -0800)
libmemcached/internal.h
libmemcached/io.h
libmemcached/stats.c
libmemcached/stats.h

index 3e4415ddea34b5d20cd12e16d57a13b2748d8b75..2a151514b21022709fca727593807f2a0e144151 100644 (file)
@@ -1,5 +1,5 @@
 /* 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
index 7aab7bae3d711320f5ab6a43b5008ce5f38549fb..af51506593c71ada92eb20a3675e0f52c94aca1d 100644 (file)
@@ -40,34 +40,43 @@ struct udp_datagram_header_st
   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 */
index 6b09e604ec0d969f6bffc18759d4b74f77730273..4f3bdb0d0af548b15fa2465d16feb1c209dba674 100644 (file)
@@ -371,6 +371,8 @@ memcached_stat_st *memcached_stat(memcached_st *ptr, char *args, memcached_retur
 
   stats= ptr->call_calloc(ptr, ptr->number_of_hosts, sizeof(memcached_stat_st));
 
+  stats->root= ptr;
+
   if (!stats)
   {
     *error= MEMCACHED_MEMORY_ALLOCATION_FAILURE;
@@ -451,8 +453,16 @@ void memcached_stat_free(memcached_st *ptr, memcached_stat_st *memc_stat)
     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);
+  }
 }
index 79f7e6cfbc666b2e7a307a547ee65cfc12885df9..4b7d48ca7d2763a9c28a24eb74a4e98da11a707b 100644 (file)
@@ -5,7 +5,7 @@
  * 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.
  *
  */
 
@@ -41,6 +41,7 @@ struct memcached_stat_st {
   uint64_t get_misses;
   uint64_t limit_maxbytes;
   char version[MEMCACHED_VERSION_STRING_LENGTH];
+  memcached_st *root;
 };
 
 LIBMEMCACHED_API