Refactor (1st piece) of logic around creating messages and recieving
authorBrian Aker <brian@tangent.org>
Mon, 17 Dec 2007 06:59:04 +0000 (22:59 -0800)
committerBrian Aker <brian@tangent.org>
Mon, 17 Dec 2007 06:59:04 +0000 (22:59 -0800)
messages.

include/memcached.h
lib/memcached_delete.c
lib/memcached_do.c
lib/memcached_fetch.c
lib/memcached_get.c
lib/memcached_response.c
lib/memcached_storage.c

index 182d69928973d3a82b225fb1b8651bdc89b8caf3..1e2d3b3fd74652cee586e9580c892efdacbce74e 100644 (file)
@@ -199,8 +199,10 @@ struct memcached_st {
   memcached_hash hash;
   memcached_server_distribution distribution;
   unsigned int wheel[MEMCACHED_WHEEL_SIZE];
+#ifdef NOT_USED /* Future Use */
   uint8_t replicas;
-  memcached_return warning; /* Future Use */
+  memcached_return warning;
+#endif
 };
 
 /* Public API */
index 7c026cbcd9835005833220fd008f4e07c7856801..f68d73403a9601e70f4b2d57cdb750f6e37684f0 100644 (file)
@@ -54,7 +54,6 @@ memcached_return memcached_delete_by_key(memcached_st *ptr,
   if ((ptr->flags & MEM_NO_BLOCK))
   {
     rc= MEMCACHED_SUCCESS;
-    memcached_server_response_increment(ptr, server_key);
   }
   else
   {
index ce9cceb647620384e795e7fe23390fda1cdb2c82..a929927c59a7a478ac29bd1ba9cabe97de66f7ac 100644 (file)
@@ -19,6 +19,8 @@ memcached_return memcached_do(memcached_st *ptr, unsigned int server_key, char *
 
   if (sent_length == -1 || sent_length != command_length)
     rc= MEMCACHED_WRITE_FAILURE;
+  else
+    memcached_server_response_increment(ptr, server_key);
 
   return rc;
 }
index 4f6a575cb03732152427fe34f0bf72acfb54a9d5..b6161845385e6f917cbfc879f272c8d99977bab2 100644 (file)
@@ -21,7 +21,6 @@ static memcached_return memcached_value_fetch(memcached_st *ptr, char *key, size
 
   rc= memcached_response(ptr, buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, server_key);
 
-
   if (rc == MEMCACHED_SUCCESS)
   {
     char *next_ptr;
index 63a981e11ae13b9604ca7d948e8e2ad96b4c6c11..ffb2c5f6203b1b6b63b30c0f86307bc2e770f2d5 100644 (file)
@@ -103,7 +103,7 @@ memcached_return memcached_mget_by_key(memcached_st *ptr,
         rc= MEMCACHED_SOME_ERRORS;
         continue;
       }
-      ptr->hosts[server_key].cursor_active= 1;
+      ptr->hosts[server_key].cursor_active++;
     }
 
     if ((memcached_io_write(ptr, server_key, keys[x], key_length[x], 0)) == -1)
@@ -126,13 +126,14 @@ memcached_return memcached_mget_by_key(memcached_st *ptr,
   */
   for (x= 0; x < ptr->number_of_hosts; x++)
   {
-    if (ptr->hosts[x].cursor_active == 1)
+    if (ptr->hosts[x].cursor_active)
     {
       /* We need to doo something about non-connnected hosts in the future */
       if ((memcached_io_write(ptr, x, "\r\n", 2, 1)) == -1)
       {
         rc= MEMCACHED_SOME_ERRORS;
       }
+      memcached_server_response_increment(ptr, x);
     }
   }
 
index 7402975f895761ade88c41864174b074e630c433..a695e9d8c40881eb40ec7f589c6d29407c45eeb2 100644 (file)
@@ -21,7 +21,7 @@ memcached_return memcached_response(memcached_st *ptr,
   send_length= 0;
 
   max_messages= memcached_server_response_count(ptr, server_key);
-  for (x= 0; x <=  max_messages; x++)
+  for (x= 0; x <  max_messages; x++)
   {
     size_t total_length= 0;
     buffer_ptr= buffer;
@@ -50,26 +50,47 @@ memcached_return memcached_response(memcached_st *ptr,
     buffer_ptr++;
     *buffer_ptr= 0;
 
-    if (memcached_server_response_count(ptr, server_key))
-      memcached_server_response_decrement(ptr, server_key);
+    memcached_server_response_decrement(ptr, server_key);
   }
 
   switch(buffer[0])
   {
   case 'V': /* VALUE || VERSION */
-    return MEMCACHED_SUCCESS;
+    if (buffer[1] == 'A') /* VALUE */
+    {
+      /* We add back in one because we will need to search for END */
+      memcached_server_response_increment(ptr, server_key);
+      return MEMCACHED_SUCCESS;
+    }
+    else if (buffer[1] == 'E') /* VERSION */
+    {
+      return MEMCACHED_SUCCESS;
+    }
+    else
+    {
+      WATCHPOINT_STRING(buffer);
+      WATCHPOINT_ASSERT(0);
+      return MEMCACHED_UNKNOWN_READ_FAILURE;
+    }
   case 'O': /* OK */
     return MEMCACHED_SUCCESS;
   case 'S': /* STORED STATS SERVER_ERROR */
     {
       if (buffer[2] == 'A') /* STORED STATS */
+      {
+        memcached_server_response_increment(ptr, server_key);
         return MEMCACHED_STAT;
+      }
       else if (buffer[1] == 'E')
         return MEMCACHED_SERVER_ERROR;
       else if (buffer[1] == 'T')
         return MEMCACHED_STORED;
       else
+      {
+        WATCHPOINT_STRING(buffer);
+        WATCHPOINT_ASSERT(0);
         return MEMCACHED_UNKNOWN_READ_FAILURE;
+      }
     }
   case 'D': /* DELETED */
     return MEMCACHED_DELETED;
index 3f55796d52b6e5f92375f6113e6581be7e8f3a7d..5f69413564dcdcc9dc1f9d20becedc8b40f013dc 100644 (file)
@@ -108,14 +108,10 @@ static inline memcached_return memcached_send(memcached_st *ptr,
   }
 
   if (to_write == 0)
-  {
     rc= MEMCACHED_SUCCESS;
-    memcached_server_response_increment(ptr, server_key);
-  }
   else
-  {
     rc= memcached_response(ptr, buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, server_key);
-  }
+
   if (rc == MEMCACHED_STORED)
     return MEMCACHED_SUCCESS;
   else