You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by pq...@apache.org on 2007/06/08 07:52:22 UTC
svn commit: r545428 - in /apr/apr-util/trunk: include/apr_memcache.h
memcache/apr_memcache.c
Author: pquerna
Date: Thu Jun 7 22:52:21 2007
New Revision: 545428
URL: http://svn.apache.org/viewvc?view=rev&rev=545428
Log:
Allow apr_memcache to use a pure CRC32 hash fucntion for server selection. We maintain the _default version, since it is identical to what the Perl memcache Client uses.
Fixes PR: 39604
Modified:
apr/apr-util/trunk/include/apr_memcache.h
apr/apr-util/trunk/memcache/apr_memcache.c
Modified: apr/apr-util/trunk/include/apr_memcache.h
URL: http://svn.apache.org/viewvc/apr/apr-util/trunk/include/apr_memcache.h?view=diff&rev=545428&r1=545427&r2=545428
==============================================================================
--- apr/apr-util/trunk/include/apr_memcache.h (original)
+++ apr/apr-util/trunk/include/apr_memcache.h Thu Jun 7 22:52:21 2007
@@ -116,6 +116,16 @@
const char *data,
apr_size_t data_len);
+/**
+ * Pure CRC32 Hash. Used by some clients.
+ */
+APR_DECLARE(apr_uint32_t) apr_memcache_hash_crc32(void *baton,
+ const char *data,
+ apr_size_t data_len);
+
+/**
+ * hash compatible with the standard Perl Client.
+ */
APR_DECLARE(apr_uint32_t) apr_memcache_hash_default(void *baton,
const char *data,
apr_size_t data_len);
Modified: apr/apr-util/trunk/memcache/apr_memcache.c
URL: http://svn.apache.org/viewvc/apr/apr-util/trunk/memcache/apr_memcache.c?view=diff&rev=545428&r1=545427&r2=545428
==============================================================================
--- apr/apr-util/trunk/memcache/apr_memcache.c (original)
+++ apr/apr-util/trunk/memcache/apr_memcache.c Thu Jun 7 22:52:21 2007
@@ -488,7 +488,7 @@
0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
};
-APR_DECLARE(apr_uint32_t) apr_memcache_hash_default(void *baton,
+APR_DECLARE(apr_uint32_t) apr_memcache_hash_crc32(void *baton,
const char *data,
const apr_size_t data_len)
{
@@ -499,7 +499,17 @@
for (i = 0; i < data_len; i++)
crc = (crc >> 8) ^ crc32tab[(crc ^ (data[i])) & 0xff];
- return ((~crc >> 16) & 0x7fff);
+ return ~crc;
+}
+
+APR_DECLARE(apr_uint32_t) apr_memcache_hash_default(void *baton,
+ const char *data,
+ const apr_size_t data_len)
+{
+ /* The default Perl Client doesn't actually use just crc32 -- it shifts it again
+ * like this....
+ */
+ return ((apr_memcache_hash_crc32(baton, data, data_len) >> 16) & 0x7fff);
}
APR_DECLARE(apr_uint32_t) apr_memcache_hash(apr_memcache_t *mc,