Added --args to memstat
[awesomized/libmemcached] / libmemcached / version.c
index 91e926e30b0f40db7756205f4318d5da0f6ea771..54545cb9d46ff59112b4b30a028a4fb5877d0766 100644 (file)
@@ -13,15 +13,23 @@ memcached_return_t memcached_version(memcached_st *ptr)
   if (ptr->flags.use_udp)
     return MEMCACHED_NOT_SUPPORTED;
 
+  bool was_blocking= ptr->flags.no_block;
+  memcached_return_t rc;
+
+  ptr->flags.no_block= false;
+
   if (ptr->flags.binary_protocol)
-    return memcached_version_binary(ptr);
+    rc= memcached_version_binary(ptr);
   else
-    return memcached_version_textual(ptr);      
+    rc= memcached_version_textual(ptr);      
+
+  ptr->flags.no_block= was_blocking;
+
+  return rc;
 }
 
 static inline memcached_return_t memcached_version_textual(memcached_st *ptr)
 {
-  unsigned int x;
   size_t send_length;
   memcached_return_t rc;
   char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE];
@@ -31,18 +39,20 @@ static inline memcached_return_t memcached_version_textual(memcached_st *ptr)
   send_length= strlen(command);
 
   rc= MEMCACHED_SUCCESS;
-  for (x= 0; x < memcached_server_count(ptr); x++)
+  for (uint32_t x= 0; x < memcached_server_count(ptr); x++)
   {
     memcached_return_t rrc;
+    memcached_server_write_instance_st instance=
+      memcached_server_instance_fetch(ptr, x);
 
-    rrc= memcached_do(&ptr->hosts[x], command, send_length, 1);
+    rrc= memcached_do(instance, command, send_length, true);
     if (rrc != MEMCACHED_SUCCESS)
     {
       rc= MEMCACHED_SOME_ERRORS;
       continue;
     }
 
-    rrc= memcached_response(&ptr->hosts[x], buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, NULL);
+    rrc= memcached_response(instance, buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, NULL);
     if (rrc != MEMCACHED_SUCCESS)
     {
       rc= MEMCACHED_SOME_ERRORS;
@@ -53,13 +63,13 @@ static inline memcached_return_t memcached_version_textual(memcached_st *ptr)
     response_ptr= index(buffer, ' ');
     response_ptr++;
 
-    ptr->hosts[x].major_version= (uint8_t)strtol(response_ptr, (char **)NULL, 10);
+    instance->major_version= (uint8_t)strtol(response_ptr, (char **)NULL, 10);
     response_ptr= index(response_ptr, '.');
     response_ptr++;
-    ptr->hosts[x].minor_version= (uint8_t)strtol(response_ptr, (char **)NULL, 10);
+    instance->minor_version= (uint8_t)strtol(response_ptr, (char **)NULL, 10);
     response_ptr= index(response_ptr, '.');
     response_ptr++;
-    ptr->hosts[x].micro_version= (uint8_t)strtol(response_ptr, (char **)NULL, 10);
+    instance->micro_version= (uint8_t)strtol(response_ptr, (char **)NULL, 10);
   }
 
   return rc;
@@ -68,45 +78,50 @@ static inline memcached_return_t memcached_version_textual(memcached_st *ptr)
 static inline memcached_return_t memcached_version_binary(memcached_st *ptr)
 {
   memcached_return_t rc;
-  unsigned int x;
   protocol_binary_request_version request= { .bytes= {0}};
   request.message.header.request.magic= PROTOCOL_BINARY_REQ;
   request.message.header.request.opcode= PROTOCOL_BINARY_CMD_VERSION;
   request.message.header.request.datatype= PROTOCOL_BINARY_RAW_BYTES;
 
   rc= MEMCACHED_SUCCESS;
-  for (x= 0; x < memcached_server_count(ptr); x++) 
+  for (uint32_t x= 0; x < memcached_server_count(ptr); x++) 
   {
     memcached_return_t rrc;
 
-    rrc= memcached_do(&ptr->hosts[x], request.bytes, sizeof(request.bytes), 1);
+    memcached_server_write_instance_st instance=
+      memcached_server_instance_fetch(ptr, x);
+
+    rrc= memcached_do(instance, request.bytes, sizeof(request.bytes), true);
     if (rrc != MEMCACHED_SUCCESS) 
     {
-      memcached_io_reset(&ptr->hosts[x]);
+      memcached_io_reset(instance);
       rc= MEMCACHED_SOME_ERRORS;
       continue;
     }
   }
 
-  for (x= 0; x < memcached_server_count(ptr); x++) 
+  for (uint32_t x= 0; x < memcached_server_count(ptr); x++) 
   {
-    if (memcached_server_response_count(&ptr->hosts[x]) > 0) 
+    memcached_server_write_instance_st instance=
+      memcached_server_instance_fetch(ptr, x);
+
+    if (memcached_server_response_count(instance) > 0) 
     {
       memcached_return_t rrc;
       char buffer[32];
       char *p;
 
-      rrc= memcached_response(&ptr->hosts[x], buffer, sizeof(buffer), NULL);
+      rrc= memcached_response(instance, buffer, sizeof(buffer), NULL);
       if (rrc != MEMCACHED_SUCCESS) 
       {
-        memcached_io_reset(&ptr->hosts[x]);
+        memcached_io_reset(instance);
         rc= MEMCACHED_SOME_ERRORS;
         continue;
       }
 
-      ptr->hosts[x].major_version= (uint8_t)strtol(buffer, &p, 10);
-      ptr->hosts[x].minor_version= (uint8_t)strtol(p + 1, &p, 10);
-      ptr->hosts[x].micro_version= (uint8_t)strtol(p + 1, NULL, 10);
+      instance->major_version= (uint8_t)strtol(buffer, &p, 10);
+      instance->minor_version= (uint8_t)strtol(p + 1, &p, 10);
+      instance->micro_version= (uint8_t)strtol(p + 1, NULL, 10);
     }
   }