Export generate_hash_value as memcache_generate_hash_value and fix key length check...
authorRobey Pointer <robey@twitter.com>
Fri, 23 Jan 2009 12:23:28 +0000 (13:23 +0100)
committerRobey Pointer <robey@twitter.com>
Fri, 23 Jan 2009 12:23:28 +0000 (13:23 +0100)
docs/Makefile.am
docs/memcached_generate_hash_value.pod [new file with mode: 0644]
libmemcached/common.h
libmemcached/memcached.h
libmemcached/memcached_hash.c
libmemcached/memcached_hosts.c

index 2c21bae0ec28be616aa11912a8fbbae194225077..03278abfb08ba80671125cc56817ebc5a1da894b 100644 (file)
@@ -25,7 +25,8 @@ EXTRA_DIST = libmemcached.pod\
        memcached_version.pod\\r
        memflush.pod\\r
        memcached_flush_buffers.pod\\r
-  memcached_analyze.pod\r
+        memcached_analyze.pod\\r
+        memcached_generate_hash_value.pod\r
 \r
 man_MANS = libmemcached.3\\r
        libmemcached_examples.3\\r
@@ -84,7 +85,8 @@ man_MANS = libmemcached.3\
        memcached_verbosity.3\\r
        memcached_lib_version.3\\r
        memcached_version.3\\r
-  memcached_flush_buffers.3\r
+        memcached_flush_buffers.3\\r
+        memcached_generate_hash_value.3\r
 \r
 libmemcached.3: libmemcached.pod \r
        @POD2MAN@ -c "libmemcached" -r "" -s 3 libmemcached.pod > libmemcached.3\r
@@ -272,6 +274,9 @@ memcached_flush_buffers.3: memcached_flush_buffers.pod
 memcached_analyze.3: memcached_analyze.pod\r
        @POD2MAN@ -c "libmemcached" -r "" -s 3 memcached_analyze.pod > memcached_analyze.3\r
 \r
+memcached_generate_hash_value.3: memcached_generate_hash_value.pod\r
+       @POD2MAN@ -c "libmemcached" -r "" -s 3 memcached_generate_hash_value.pod > memcached_generate_hash_value.3\r
+\r
 memcp.1: memcp.pod\r
        @POD2MAN@ -c "libmemcached" -r "" -s 1 memcp.pod > memcp.1\r
 \r
diff --git a/docs/memcached_generate_hash_value.pod b/docs/memcached_generate_hash_value.pod
new file mode 100644 (file)
index 0000000..4136526
--- /dev/null
@@ -0,0 +1,48 @@
+=head1 NAME
+
+memcached_generate_hash_value
+
+=head1 LIBRARY
+
+C Client Library for memcached (libmemcached, -lmemcached)
+
+=head1 SYNOPSIS
+
+  #include <memcached.h>
+
+  uint32_t
+    memcached_generate_hash_value (const char *key,
+                                   size_t key_length,
+                                   memcached_hash hash_algorithm);
+
+=head1 DESCRIPTION
+
+memcached_generate_hash_value() allows you to hash a key using one of
+the hash fuctions defined in the library. This method is provided for
+the convenience of higher-level language bindings and is not necessary
+for normal memcache operations.
+
+The allowed hash algorithm constants are listed in the manpage for
+memcached_behavior_set().
+
+=head1 RETURN
+
+A 32-bit integer which is the result of hashing the given key.
+For 64-bit hash algorithms, only the least-significant 32 bits are
+returned.
+
+=head1 HOME
+
+To find out more information please check: 
+L<http://tangent.org/552/libmemcached.html>
+
+=head1 AUTHOR
+
+Brian Aker, E<lt>brian@tangent.orgE<gt>
+
+=head1 SEE ALSO
+
+memcached(1) libmemcached(3) memcached_behavior_set(3)
+
+=cut
+
index 40787d3863ea1ab4ce7f466f199ba361dbb66cb2..54b33a20fcee244de56ee3b60123c7ef4460a797 100644 (file)
@@ -111,8 +111,6 @@ memcached_return memcachd_key_test(char **keys, size_t *key_length,
 
 memcached_return run_distribution(memcached_st *ptr);
 
-uint32_t generate_hash_value(const char *key, size_t key_length, memcached_hash hash_algorithm);
-
 uint32_t generate_hash(memcached_st *ptr, const char *key, size_t key_length);
 memcached_return memcached_server_remove(memcached_server_st *st_ptr);
 
@@ -133,7 +131,7 @@ static inline memcached_return memcached_validate_key_length(size_t key_length,
   }
   else
   {
-    unlikely (key_length > 250
+    unlikely (key_length >= MEMCACHED_MAX_KEY
       return MEMCACHED_BAD_KEY_PROVIDED;
   }
 
index 8db371a9032b55050e9a7a4e2c3fb48453ad7668..cc074d447c9e4c66193c23da3e6df2f0b89eacf5 100644 (file)
@@ -147,6 +147,7 @@ void memcached_quit(memcached_st *ptr);
 char *memcached_strerror(memcached_st *ptr, memcached_return rc);
 memcached_return memcached_behavior_set(memcached_st *ptr, memcached_behavior flag, uint64_t data);
 uint64_t memcached_behavior_get(memcached_st *ptr, memcached_behavior flag);
+uint32_t memcached_generate_hash_value(const char *key, size_t key_length, memcached_hash hash_algorithm);
 memcached_return memcached_flush_buffers(memcached_st *mem);
 
 /* Server Public functions */
index 1f51ac252dedb8f42ade5bc5749603a1cacd91dc..c7bcb4bed35810cbad3ebbfb22475ddd8f0260ab 100644 (file)
@@ -11,7 +11,7 @@ static uint32_t FNV_32_PRIME= 16777619;
 static uint32_t internal_generate_hash(const char *key, size_t key_length);
 static uint32_t internal_generate_md5(const char *key, size_t key_length);
 
-uint32_t generate_hash_value(const char *key, size_t key_length, memcached_hash hash_algorithm)
+uint32_t memcached_generate_hash_value(const char *key, size_t key_length, memcached_hash hash_algorithm)
 {
   uint32_t hash= 1; /* Just here to remove compile warning */
   uint32_t x= 0;
@@ -103,7 +103,7 @@ uint32_t generate_hash(memcached_st *ptr, const char *key, size_t key_length)
   if (ptr->number_of_hosts == 1)
     return 0;
 
-  hash= generate_hash_value(key, key_length, ptr->hash);
+  hash= memcached_generate_hash_value(key, key_length, ptr->hash);
   WATCHPOINT_ASSERT(hash);
   return hash;
 }
index abb1ce036088fc6d56fd003949e67988da5012c5..c0d0f0367c99c84295585db213792bc3151aebad 100644 (file)
@@ -197,7 +197,7 @@ memcached_return update_continuum(memcached_st *ptr)
       }
       else
       {
-        value= generate_hash_value(sort_host, sort_host_length, ptr->hash_continuum);
+        value= memcached_generate_hash_value(sort_host, sort_host_length, ptr->hash_continuum);
         ptr->continuum[continuum_index].index= host_index;
         ptr->continuum[continuum_index++].value= value;
       }