Correction to API for custom hash settings.
authorBrian Aker <brian@gaz>
Tue, 2 Mar 2010 22:16:10 +0000 (14:16 -0800)
committerBrian Aker <brian@gaz>
Tue, 2 Mar 2010 22:16:10 +0000 (14:16 -0800)
libmemcached/hash.c
libmemcached/hash.h
tests/mem_functions.c

index b418d2e1188fe48c130b77e89b0c7d5f0150c457..dda303952a5c86c2e6cc76de52c5a440474795eb 100644 (file)
@@ -124,7 +124,15 @@ uint32_t memcached_generate_hash(const memcached_st *ptr, const char *key, size_
   return dispatch_host(ptr, _generate_hash_wrapper(ptr, key, key_length));
 }
 
-hashkit_st *memcached_get_hashkit(memcached_st *ptr)
+const hashkit_st *memcached_get_hashkit(const memcached_st *ptr)
 {
   return &ptr->hashkit;
 }
+
+memcached_return_t memcached_set_hashkit(memcached_st *self, hashkit_st *hashk)
+{
+  hashkit_free(&self->hashkit);
+  hashkit_clone(&self->hashkit, hashk);
+
+  return MEMCACHED_SUCCESS;
+}
index 5f6012295b1f5d074f0e83fca4929311a5d76728..0e66426680b8b90320c81836983309ac199bc9b9 100644 (file)
@@ -21,7 +21,10 @@ LIBMEMCACHED_API
 uint32_t memcached_generate_hash_value(const char *key, size_t key_length, memcached_hash_t hash_algorithm);
 
 LIBMEMCACHED_API
-hashkit_st *memcached_get_hashkit(memcached_st *ptr);
+const hashkit_st *memcached_get_hashkit(const memcached_st *ptr);
+
+LIBMEMCACHED_API
+memcached_return_t memcached_set_hashkit(memcached_st *ptr, hashkit_st *hashk);
 
 LIBMEMCACHED_API
 uint32_t memcached_generate_hash(const memcached_st *ptr, const char *key, size_t key_length);
index 84ac0dc14abbd5677b22afde097b8871a13ce4d4..6534378b89287d9f42582aecc04a64ce0ea806c0 100644 (file)
@@ -4766,7 +4766,8 @@ static test_return_t memcached_get_hashkit_test (memcached_st *memc)
 {
   uint32_t x;
   const char **ptr;
-  hashkit_st *kit;
+  const hashkit_st *kit;
+  hashkit_st new_kit;
   hashkit_return_t hash_rc;
 
   uint32_t md5_hosts[]= {4U, 1U, 0U, 1U, 4U, 2U, 0U, 3U, 0U, 0U, 3U, 1U, 0U, 0U, 1U, 3U, 0U, 0U, 0U, 3U, 1U, 0U, 4U, 4U, 3U};
@@ -4774,9 +4775,12 @@ static test_return_t memcached_get_hashkit_test (memcached_st *memc)
 
   kit= memcached_get_hashkit(memc);
 
-  hash_rc= hashkit_set_custom_function(kit, hash_md5_test_function, NULL);
+  hashkit_clone(&new_kit, kit);
+  hash_rc= hashkit_set_custom_function(&new_kit, hash_md5_test_function, NULL);
   test_true(hash_rc == HASHKIT_SUCCESS);
 
+  memcached_set_hashkit(memc, &new_kit);
+
   /*
     Verify Setting the hash.
   */
@@ -4800,9 +4804,11 @@ static test_return_t memcached_get_hashkit_test (memcached_st *memc)
     test_true(md5_hosts[x] == hash_val);
   }
 
-  hash_rc= hashkit_set_custom_function(kit, hash_crc_test_function, NULL);
+  hash_rc= hashkit_set_custom_function(&new_kit, hash_crc_test_function, NULL);
   test_true(hash_rc == HASHKIT_SUCCESS);
 
+  memcached_set_hashkit(memc, &new_kit);
+
   /*
     Verify Setting the hash.
   */