projects
/
m6w6
/
libmemcached
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
Forgot to update version number.
[m6w6/libmemcached]
/
libmemcached
/
memcached_hash.c
diff --git
a/libmemcached/memcached_hash.c
b/libmemcached/memcached_hash.c
index e2454ac99f068f1aa16b9a29bf8749c8004f2aec..b8c8cfe5529923f1f0c5546a4c0ba04db5434e9d 100644
(file)
--- a/
libmemcached/memcached_hash.c
+++ b/
libmemcached/memcached_hash.c
@@
-8,21
+8,15
@@
static uint32_t FNV_32_INIT= 2166136261UL;
static uint32_t FNV_32_PRIME= 16777619;
/* Prototypes */
static uint32_t FNV_32_PRIME= 16777619;
/* Prototypes */
-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_hash(c
onst c
har *key, size_t key_length);
+static uint32_t internal_generate_md5(c
onst c
har *key, size_t key_length);
-uint32_t generate_hash
(memcached_st *ptr, char *key, size_t key_length
)
+uint32_t 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;
{
uint32_t hash= 1; /* Just here to remove compile warning */
uint32_t x= 0;
-
- WATCHPOINT_ASSERT(ptr->number_of_hosts);
-
- if (ptr->number_of_hosts == 1)
- return 0;
-
- switch (ptr->hash)
+ switch (hash_algorithm)
{
case MEMCACHED_HASH_DEFAULT:
hash= internal_generate_hash(key, key_length);
{
case MEMCACHED_HASH_DEFAULT:
hash= internal_generate_hash(key, key_length);
@@
-91,7
+85,20
@@
uint32_t generate_hash(memcached_st *ptr, char *key, size_t key_length)
break;
}
}
break;
}
}
+ return hash;
+}
+
+uint32_t generate_hash(memcached_st *ptr, const char *key, size_t key_length)
+{
+ uint32_t hash= 1; /* Just here to remove compile warning */
+
+ WATCHPOINT_ASSERT(ptr->number_of_hosts);
+
+ if (ptr->number_of_hosts == 1)
+ return 0;
+
+ hash= generate_hash_value(key, key_length, ptr->hash);
WATCHPOINT_ASSERT(hash);
return hash;
}
WATCHPOINT_ASSERT(hash);
return hash;
}
@@
-103,7
+110,7
@@
unsigned int dispatch_host(memcached_st *ptr, uint32_t hash)
case MEMCACHED_DISTRIBUTION_CONSISTENT:
case MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA:
{
case MEMCACHED_DISTRIBUTION_CONSISTENT:
case MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA:
{
- uint32_t num= ptr->
number_of_hosts * MEMCACHED_POINTS_PER_SERVER
;
+ uint32_t num= ptr->
continuum_points_counter
;
WATCHPOINT_ASSERT(ptr->continuum);
hash= hash;
WATCHPOINT_ASSERT(ptr->continuum);
hash= hash;
@@
-138,14
+145,6
@@
unsigned int dispatch_host(memcached_st *ptr, uint32_t hash)
}
}
break;
}
}
break;
- case MEMCACHED_DISTRIBUTION_CONSISTENT_WHEEL:
- {
- unsigned int server_key;
-
- server_key= hash % MEMCACHED_STRIDE * ptr->wheel_count;
-
- return ptr->wheel[server_key];
- }
case MEMCACHED_DISTRIBUTION_MODULA:
return hash % ptr->number_of_hosts;
default:
case MEMCACHED_DISTRIBUTION_MODULA:
return hash % ptr->number_of_hosts;
default:
@@
-161,7
+160,7
@@
unsigned int dispatch_host(memcached_st *ptr, uint32_t hash)
One day make this public, and have it return the actual memcached_server_st
to the calling application.
*/
One day make this public, and have it return the actual memcached_server_st
to the calling application.
*/
-uint32_t memcached_generate_hash(memcached_st *ptr, char *key, size_t key_length)
+uint32_t memcached_generate_hash(memcached_st *ptr, c
onst c
har *key, size_t key_length)
{
uint32_t hash= 1; /* Just here to remove compile warning */
{
uint32_t hash= 1; /* Just here to remove compile warning */
@@
-173,12
+172,13
@@
uint32_t memcached_generate_hash(memcached_st *ptr, char *key, size_t key_length
hash = generate_hash(ptr, key, key_length);
WATCHPOINT_ASSERT(hash);
hash = generate_hash(ptr, key, key_length);
WATCHPOINT_ASSERT(hash);
+
return dispatch_host(ptr, hash);
}
return dispatch_host(ptr, hash);
}
-static uint32_t internal_generate_hash(char *key, size_t key_length)
+static uint32_t internal_generate_hash(c
onst c
har *key, size_t key_length)
{
{
- char *ptr= key;
+ c
onst c
har *ptr= key;
uint32_t value= 0;
while (--key_length)
uint32_t value= 0;
while (--key_length)
@@
-194,7
+194,7
@@
static uint32_t internal_generate_hash(char *key, size_t key_length)
return value == 0 ? 1 : value;
}
return value == 0 ? 1 : value;
}
-static uint32_t internal_generate_md5(char *key, size_t key_length)
+static uint32_t internal_generate_md5(c
onst c
har *key, size_t key_length)
{
unsigned char results[16];
{
unsigned char results[16];