Merge for Dmitry
[awesomized/libmemcached] / libmemcached / behavior.c
index d2f031a1586c5729c8e2b523eb415effc1082950..886457a59a7867fcf31e18825aa7d8a037f2a020 100644 (file)
@@ -21,23 +21,6 @@ static bool set_flag(uint64_t data)
   return data ? true : false;
 }
 
-static memcached_return_t set_hash(memcached_hash_t *store, memcached_hash_t type)
-{
-#ifndef HAVE_HSIEH_HASH
-  if (type == MEMCACHED_HASH_HSIEH)
-    return MEMCACHED_FAILURE;
-#endif
-  if (type < MEMCACHED_HASH_MAX)
-  {
-    *store= type;
-  }
-  else
-  {
-    return MEMCACHED_FAILURE;
-  }
-
-  return MEMCACHED_SUCCESS;
-}
 /*
   This function is used to modify the behavior of running client.
 
@@ -187,7 +170,7 @@ memcached_return_t memcached_behavior_set(memcached_st *ptr,
       break;
   case MEMCACHED_BEHAVIOR_CORK:
       {
-        memcached_server_instance_st *instance;
+        memcached_server_write_instance_st instance;
         bool action= set_flag(data);
 
         if (action == false)
@@ -247,6 +230,11 @@ memcached_return_t memcached_behavior_set(memcached_st *ptr,
   return MEMCACHED_SUCCESS;
 }
 
+inline bool _is_auto_eject_host(const memcached_st *ptr)
+{
+  return ptr->flags.auto_eject_hosts;
+}
+
 uint64_t memcached_behavior_get(memcached_st *ptr,
                                 const memcached_behavior_t flag)
 {
@@ -283,9 +271,9 @@ uint64_t memcached_behavior_get(memcached_st *ptr,
   case MEMCACHED_BEHAVIOR_KETAMA:
     return (ptr->distribution == MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA) ? (uint64_t) 1 : 0;
   case MEMCACHED_BEHAVIOR_HASH:
-    return ptr->hash;
+    return hashkit_get_function(&ptr->hashkit);
   case MEMCACHED_BEHAVIOR_KETAMA_HASH:
-    return ptr->distribution_hash;
+    return hashkit_get_function(&ptr->distribution_hashkit);
   case MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT:
     return ptr->server_failure_limit;
   case MEMCACHED_BEHAVIOR_SORT_HOSTS:
@@ -304,7 +292,7 @@ uint64_t memcached_behavior_get(memcached_st *ptr,
     {
       int sock_size= 0;
       socklen_t sock_length= sizeof(int);
-      memcached_server_instance_st *instance;
+      memcached_server_write_instance_st instance;
 
       if (ptr->send_size != -1) // If value is -1 then we are using the default
         return (uint64_t) ptr->send_size;
@@ -329,7 +317,7 @@ uint64_t memcached_behavior_get(memcached_st *ptr,
     {
       int sock_size= 0;
       socklen_t sock_length= sizeof(int);
-      memcached_server_instance_st *instance;
+      memcached_server_write_instance_st instance;
 
       if (ptr->recv_size != -1) // If value is -1 then we are using the default
         return (uint64_t) ptr->recv_size;
@@ -398,20 +386,26 @@ memcached_server_distribution_t memcached_behavior_get_distribution(memcached_st
 
 memcached_return_t memcached_behavior_set_key_hash(memcached_st *ptr, memcached_hash_t type)
 {
-  return set_hash(&ptr->hash, type);
+  hashkit_return_t rc;
+  rc= hashkit_set_function(&ptr->hashkit, (hashkit_hash_algorithm_t)type);
+
+  return rc == HASHKIT_SUCCESS ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
 }
 
 memcached_hash_t memcached_behavior_get_key_hash(memcached_st *ptr)
 {
-  return ptr->hash;
+  return (memcached_hash_t)hashkit_get_function(&ptr->hashkit);
 }
 
 memcached_return_t memcached_behavior_set_distribution_hash(memcached_st *ptr, memcached_hash_t type)
 {
-  return set_hash(&ptr->distribution_hash, type);
+  hashkit_return_t rc;
+  rc= hashkit_set_function(&ptr->distribution_hashkit, (hashkit_hash_algorithm_t)type);
+
+  return rc == HASHKIT_SUCCESS ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
 }
 
 memcached_hash_t memcached_behavior_get_distribution_hash(memcached_st *ptr)
 {
-  return ptr->distribution_hash;
+  return (memcached_hash_t)hashkit_get_function(&ptr->distribution_hashkit);
 }