Merging
author <brian@gir.tangent.org> <>
Sat, 5 Jan 2008 08:03:46 +0000 (00:03 -0800)
committer <brian@gir.tangent.org> <>
Sat, 5 Jan 2008 08:03:46 +0000 (00:03 -0800)
docs/libmemcached.pod
docs/memcached_servers.pod
lib/memcached_hash.c

index 9a0626d190b5a3bab398f2dcbaeae2864693b41d..cb5083d5af39934e9a58a8ea98fd6b0f77771750 100755 (executable)
@@ -54,6 +54,37 @@ Some features of the library must be enabled through memcached_behavior_set().
 
 Hope you enjoy it!
 
+=head1 CONSTANTS
+
+A number of constants have been provided for in the library.
+
+=over 4
+
+=item MEMCACHED_DEFAULT_PORT
+
+The default port used by memcached(3).
+
+=item MEMCACHED_MAX_KEY
+
+Default maximum size of a key (which includes the null pointer). Master keys
+have no limit, this only applies to keys used for storage.
+
+=item MEMCACHED_MAX_KEY
+
+Default size of key (which includes the null pointer).
+
+=item MEMCACHED_STRIDE
+
+This is the "stride" used in the consistent hash used between replicas.
+
+=item MEMCACHED_MAX_HOST_LENGTH
+
+Maximum allowed size of the hostname.
+
+=back
+
+
+
 =head1 THREADS AND PROCESSES
 
 When using threads or forked processes it is important to keep an instance
index c72e7d6400ffcd5cbd7ed3fd9a5b7f4c8173baf3..d417dfd15aa3555ee8ad2c5c6acaf73ef49bb97c 100755 (executable)
@@ -22,8 +22,7 @@ C Client Library for memcached (libmemcached, -lmemcached)
 
   memcached_return
     memcached_server_add_unix_socket (memcached_st *ptr,
-                                      char *hostname,
-                                      unsigned int port);
+                                      char *socket);
 
   memcached_return
     memcached_server_push (memcached_st *ptr,
index 9906f5d9be30f5dcd6dde919f36497bbd58b59b3..60c88e3bfb9da057c91eaafd4221245732479ed6 100644 (file)
@@ -8,13 +8,13 @@ static uint32_t FNV_32_INIT= 2166136261UL;
 static uint32_t FNV_32_PRIME= 16777619;
 
 /* Prototypes */
-static uint64_t internal_generate_hash(char *key, size_t key_length);
-static uint64_t internal_generate_md5(char *key, size_t key_length);
-static uint64_t internal_generate_ketama_md5(char *key, size_t key_length);
+static uint32_t internal_generate_hash(char *key, size_t key_length);
+static uint32_t internal_generate_md5(char *key, size_t key_length);
+static uint32_t internal_generate_ketama_md5(char *key, size_t key_length);
 
 unsigned int memcached_generate_hash(memcached_st *ptr, char *key, size_t key_length)
 {
-  uint64_t hash= 1; /* Just here to remove compile warning */
+  uint32_t hash= 1; /* Just here to remove compile warning */
   unsigned int x;
 
   WATCHPOINT_ASSERT(ptr->number_of_hosts);
@@ -36,12 +36,15 @@ unsigned int memcached_generate_hash(memcached_st *ptr, char *key, size_t key_le
   case MEMCACHED_HASH_FNV1_64: 
     {
       /* Thanks to pierre@demartines.com for the pointer */
-      hash= FNV_64_INIT;
+      uint64_t temp_hash;
+
+      temp_hash= FNV_64_INIT;
       for (x= 0; x < key_length; x++) 
       {
-        hash *= FNV_64_PRIME;
-        hash ^= key[x];
+        temp_hash *= FNV_64_PRIME;
+        temp_hash ^= key[x];
       }
+      hash= (uint32_t)temp_hash;
     }
     break;
   case MEMCACHED_HASH_FNV1A_64: 
@@ -102,10 +105,10 @@ unsigned int memcached_generate_hash(memcached_st *ptr, char *key, size_t key_le
   }
 }
 
-static uint64_t internal_generate_hash(char *key, size_t key_length)
+static uint32_t internal_generate_hash(char *key, size_t key_length)
 {
   char *ptr= key;
-  uint64_t value= 0;
+  uint32_t value= 0;
 
   while (--key_length) 
   {
@@ -120,19 +123,19 @@ static uint64_t internal_generate_hash(char *key, size_t key_length)
   return value == 0 ? 1 : value;
 }
 
-static uint64_t internal_generate_md5(char *key, size_t key_length)
+static uint32_t internal_generate_md5(char *key, size_t key_length)
 {
   unsigned char results[16];
 
   md5_signature((unsigned char*)key, (unsigned int)key_length, results);
 
-  return (uint64_t)(( results[3] << 24 )
+  return (uint32_t)(( results[3] << 24 )
                     | ( results[2] << 16 )
                     | ( results[1] <<  8 )
                     |   results[0] );
 }
 
-static uint64_t internal_generate_ketama_md5(char *key, size_t key_length)
+static uint32_t internal_generate_ketama_md5(char *key, size_t key_length)
 {
   unsigned char results[16];