Move cached errno such that it now lives behind the API.
authorBrian Aker <brian@tangent.org>
Mon, 28 Mar 2011 01:31:30 +0000 (18:31 -0700)
committerBrian Aker <brian@tangent.org>
Mon, 28 Mar 2011 01:31:30 +0000 (18:31 -0700)
16 files changed:
clients/memcat.c
clients/memcp.c
clients/memdump.c
clients/memflush.c
clients/memrm.c
libmemcached/behavior.c
libmemcached/error.c
libmemcached/error.h
libmemcached/hosts.c
libmemcached/io.c
libmemcached/memcached.c
libmemcached/memcached.h
libmemcached/result.c
libmemcached/result.h
libmemcached/string.c
libmemcached/string.h

index 8998ff0cd676e2c1a5a829c26339e1d9c2a4842a..3f0d92b4af6e8afceab649e74950ad89a59c1470 100644 (file)
@@ -138,9 +138,9 @@ int main(int argc, char *argv[])
     {
       fprintf(stderr, "memcat: %s: memcache error %s",
               argv[optind], memcached_strerror(memc, rc));
-      if (memc->cached_errno)
+      if (memcached_last_error_errno(memc))
       {
-       fprintf(stderr, " system error %s", strerror(memc->cached_errno));
+       fprintf(stderr, " system error %s", strerror(memcached_last_error_errno(memc)));
       }
       fprintf(stderr, "\n");
 
index bce35ce6d3ddebcd34474620695f3e0602d2cf24..bf3828ae544ba64476a36887c101c9f8fa41873d 100644 (file)
@@ -188,8 +188,8 @@ int main(int argc, char *argv[])
     {
       fprintf(stderr, "memcp: %s: memcache error %s",
              ptr, memcached_strerror(memc, rc));
-      if (memc->cached_errno)
-       fprintf(stderr, " system error %s", strerror(memc->cached_errno));
+      if (memcached_last_error_errno(memc))
+       fprintf(stderr, " system error %s", strerror(memcached_last_error_errno(memc)));
       fprintf(stderr, "\n");
 
       return_code= -1;
index 67a2a5400508240c4c8d42fff55f2067d05f2bec..0e81dad491849f43c8b9b668b5f2cdd640bc3f63 100644 (file)
@@ -100,8 +100,8 @@ int main(int argc, char *argv[])
   if (rc != MEMCACHED_SUCCESS)
   {
     fprintf(stderr, "memdump: memcache error %s", memcached_strerror(memc, rc));
-    if (memc->cached_errno)
-      fprintf(stderr, " system error %s", strerror(memc->cached_errno));
+    if (memcached_last_error_errno(memc))
+      fprintf(stderr, " system error %s", strerror(memcached_last_error_errno(memc)));
     fprintf(stderr, "\n");
   }
 
index 813bf9e133e38cd9ff0c42f41a1fce442b1b8a85..848bc1e7d1677937d620afd91fc9a1171b6bc35a 100644 (file)
@@ -71,8 +71,8 @@ int main(int argc, char *argv[])
   {
     fprintf(stderr, "memflush: memcache error %s",
            memcached_strerror(memc, rc));
-    if (memc->cached_errno)
-      fprintf(stderr, " system error %s", strerror(memc->cached_errno));
+    if (memcached_last_error_errno(memc))
+      fprintf(stderr, " system error %s", strerror(memcached_last_error_errno(memc)));
     fprintf(stderr, "\n");
   }
 
index 8023a6387e4d07ffad09b7978c0d963a23de8837..d4d93c2e9c2621e80b3bc56613889f715802f231 100644 (file)
@@ -81,8 +81,8 @@ int main(int argc, char *argv[])
     {
       fprintf(stderr, "memrm: %s: memcache error %s",
              argv[optind], memcached_strerror(memc, rc));
-      if (memc->cached_errno)
-       fprintf(stderr, " system error %s", strerror(memc->cached_errno));
+      if (memcached_last_error_errno(memc))
+       fprintf(stderr, " system error %s", strerror(memcached_last_error_errno(memc)));
       fprintf(stderr, "\n");
 
       return_code= -1;
@@ -95,6 +95,7 @@ int main(int argc, char *argv[])
 
   if (opt_servers)
     free(opt_servers);
+
   if (opt_hash)
     free(opt_hash);
 
index ab2c02306216968d3da96a092704a143843a1a35..48c6487f5f42f5da079dc55143f99d0582e7f36a 100644 (file)
@@ -198,7 +198,7 @@ memcached_return_t memcached_behavior_set(memcached_st *ptr,
         switch (enabled)
         {
         case MEM_FALSE:
-          return ptr->cached_errno ? MEMCACHED_ERRNO : MEMCACHED_FAILURE ;
+          return memcached_last_error_errno(ptr) ? MEMCACHED_ERRNO : MEMCACHED_FAILURE ;
         case MEM_TRUE:
           {
             enabled= test_cork(instance, false);
@@ -321,7 +321,7 @@ uint64_t memcached_behavior_get(memcached_st *ptr,
 
         if (getsockopt(instance->fd, SOL_SOCKET, SO_SNDBUF, &sock_size, &sock_length) < 0)
         {
-          ptr->cached_errno= errno;
+          memcached_set_errno(ptr, errno, NULL);
           return 0; /* Zero means error */
         }
       }
@@ -357,7 +357,7 @@ uint64_t memcached_behavior_get(memcached_st *ptr,
 
         if (getsockopt(instance->fd, SOL_SOCKET, SO_RCVBUF, &sock_size, &sock_length) < 0)
         {
-          ptr->cached_errno= errno;
+          memcached_set_errno(ptr, errno, NULL);
           return 0; /* Zero means error */
         }
 
index 81f6504d41785c4a0caa9dc838a977d996b17d87..86f58e60200a2da5a0a53c4c658fe81286526eab 100644 (file)
@@ -191,13 +191,13 @@ memcached_return_t memcached_last_error(memcached_st *memc)
   return memc->error_messages->rc;
 }
 
-memcached_return_t memcached_last_error_errno(memcached_st *memc)
+int memcached_last_error_errno(memcached_st *memc)
 {
   if (! memc)
-    return MEMCACHED_INVALID_ARGUMENTS;
+    return 0;
 
   if (! memc->error_messages)
-    return MEMCACHED_SUCCESS;
+    return 0;
 
   return memc->error_messages->local_errno;
 }
index d9a08dd764823cc142bd482b45bf6223ac2bf97a..f8320802321f0949ff984bb1d91a4242cc6cc071 100644 (file)
@@ -63,7 +63,7 @@ LIBMEMCACHED_API
   memcached_return_t memcached_last_error(memcached_st *memc);
 
 LIBMEMCACHED_API
-  memcached_return_t memcached_last_error_errno(memcached_st *memc);
+  int memcached_last_error_errno(memcached_st *memc);
 
 
 #ifdef __cplusplus
index 709d86fdd6e8ab525caac53116cbdb77a84f027e..eb7197085b66965643817c391af4a7691960aa54 100644 (file)
@@ -119,7 +119,7 @@ static memcached_return_t update_continuum(memcached_st *ptr)
 
   if (gettimeofday(&now, NULL) != 0)
   {
-    ptr->cached_errno = errno;
+    memcached_set_errno(ptr, errno, NULL);
     return MEMCACHED_ERRNO;
   }
 
index dedcdaf9e9deff939b1d599255263dae8baa4d30..5a9a7320f4d691ec2b5bc7a7004a824e1f98d6f5 100644 (file)
@@ -541,7 +541,7 @@ memcached_server_write_instance_st memcached_io_get_readable_server(memcached_st
   int err= poll(fds, host_index, memc->poll_timeout);
   switch (err) {
   case -1:
-    memc->cached_errno = get_socket_errno();
+    memcached_set_errno(memc, get_socket_errno(), NULL);
     /* FALLTHROUGH */
   case 0:
     break;
index 8923a86d2c0b6ea8ffe8f8f69226ef87704f3ff8..8cacdc47a3062f39cbffc5a12dace320b79fe154 100644 (file)
@@ -68,7 +68,6 @@ static inline bool _memcached_init(memcached_st *self)
   self->tcp_keepidle= 0;
 
   self->io_key_prefetch= 0;
-  self->cached_errno= 0;
   self->poll_timeout= MEMCACHED_DEFAULT_TIMEOUT;
   self->connect_timeout= MEMCACHED_DEFAULT_CONNECT_TIMEOUT;
   self->retry_timeout= 0;
index 622f9fb674ff7cc7e1ca6f4f3a42fd77b010035d..b2cb0bfd3c2ac49ae41912da309662a1a2682e02 100644 (file)
@@ -99,7 +99,6 @@ struct memcached_st {
   uint32_t io_bytes_watermark;
   uint32_t io_key_prefetch;
   uint32_t tcp_keepidle;
-  int cached_errno;
   int32_t poll_timeout;
   int32_t connect_timeout;
   int32_t retry_timeout;
index c6c754f3ea3aad568710f62a98e67946fd586f63..6e58eebd998f2f2f2362f1a018b8db2cb1fb72ec 100644 (file)
@@ -18,7 +18,7 @@
 #include "common.h"
 
 static inline void _result_init(memcached_result_st *self,
-                                const memcached_st *memc)
+                                memcached_st *memc)
 {
   self->item_flags= 0;
   self->item_expiration= 0;
@@ -50,9 +50,8 @@ memcached_result_st *memcached_result_create(const memcached_st *memc,
 
   ptr->options.is_initialized= true;
 
-  _result_init(ptr, memc);
+  _result_init(ptr, (memcached_st *)memc);
 
-  ptr->root= memc;
   WATCHPOINT_SET(ptr->value.options.is_initialized= false);
   memcached_string_create(memc, &ptr->value, 0);
   WATCHPOINT_ASSERT_INITIALIZED(&ptr->value);
@@ -96,7 +95,7 @@ memcached_return_t memcached_result_set_value(memcached_result_st *ptr,
 
   if (rc == MEMCACHED_MEMORY_ALLOCATION_FAILURE)
   {
-    ((memcached_st *)ptr->root)->cached_errno= errno;
+    memcached_set_errno(ptr->root, errno, NULL);
   }
 
       return rc;
index 46ea6eff2def0544982317bacf89b9f4ca5da6d0..701b89b764c828046cc76154447a08893a2e0eab 100644 (file)
@@ -17,7 +17,7 @@ struct memcached_result_st {
   time_t item_expiration;
   size_t key_length;
   uint64_t item_cas;
-  const memcached_st *root;
+  memcached_st *root;
   memcached_string_st value;
   char item_key[MEMCACHED_MAX_KEY];
   struct {
index 34597067b157edcbb818100da12a79061bbbd5d0..b5badc5eff8bb23f970fdd9d5f262cd9ecb60324 100644 (file)
@@ -75,7 +75,7 @@ memcached_string_st *memcached_string_create(const memcached_st *memc, memcached
 
     self->options.is_allocated= true;
   }
-  self->root= memc;
+  self->root= (memcached_st *)memc;
 
   _init_string(self);
 
@@ -84,7 +84,7 @@ memcached_string_st *memcached_string_create(const memcached_st *memc, memcached
   {
     if (rc == MEMCACHED_MEMORY_ALLOCATION_FAILURE)
     {
-      ((memcached_st *)memc)->cached_errno= errno;
+      memcached_set_errno(self->root, errno, NULL);
     }
     libmemcached_free(memc, self);
 
index 77c55489a2056291bdebf94e3cf9dda44af6b743..ca3dad14faa64e2601c652b1f98b624a26df69b6 100644 (file)
@@ -27,7 +27,7 @@ struct memcached_string_st {
   char *end;
   char *string;
   size_t current_size;
-  const memcached_st *root;
+  memcached_st *root;
   struct {
     bool is_allocated:1;
     bool is_initialized:1;