Changeset 23884 for lang/c/libmemcached-win32
- Timestamp:
- 11/17/08 12:48:21 (8 weeks ago)
- Location:
- lang/c/libmemcached-win32
- Files:
-
- 18 added
- 54 modified
-
example/Makefile.msc (modified) (1 diff)
-
libmemcached-latest/.hg/branch.cache (modified) (1 diff)
-
libmemcached-latest/.hg/dirstate (modified) (previous)
-
libmemcached-latest/.hg/store/00changelog.d (added)
-
libmemcached-latest/.hg/store/00changelog.i (modified) (previous)
-
libmemcached-latest/.hg/store/00manifest.d (modified) (previous)
-
libmemcached-latest/.hg/store/00manifest.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/_change_log.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/clients/_makefile.w32.i (added)
-
libmemcached-latest/.hg/store/data/config/bootstrap.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/config/pod2man.m4.i (added)
-
libmemcached-latest/.hg/store/data/configure.ac.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/libmemcached/_makefile.w32.i (added)
-
libmemcached-latest/.hg/store/data/libmemcached/common.h.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/libmemcached/jenkins__hash.c.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/libmemcached/libmemcached__config.h.i (added)
-
libmemcached-latest/.hg/store/data/libmemcached/memcached.c.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/libmemcached/memcached.h.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/libmemcached/memcached__behavior.c.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/libmemcached/memcached__callback.c.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/libmemcached/memcached__connect.c.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/libmemcached/memcached__constants.h.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/libmemcached/memcached__delete.c.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/libmemcached/memcached__do.c.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/libmemcached/memcached__get.c.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/libmemcached/memcached__hash.c.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/libmemcached/memcached__hosts.c.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/libmemcached/memcached__io.c.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/libmemcached/memcached__parse.c.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/libmemcached/memcached__purge.c.i (added)
-
libmemcached-latest/.hg/store/data/libmemcached/memcached__response.c.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/libmemcached/memcached__server.c.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/libmemcached/memcached__server.h.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/libmemcached/memcached__storage.c.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/tests/_makefile.am.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/tests/function.c.i (modified) (previous)
-
libmemcached-latest/.hg/store/data/tests/ketama__test__cases.h.i (added)
-
libmemcached-latest/.hg/store/data/visualc (added)
-
libmemcached-latest/.hg/store/data/visualc/libmemcached.sln.i (added)
-
libmemcached-latest/.hg/store/data/visualc/libmemcached.vcproj.i (added)
-
libmemcached-latest/.hg/store/data/visualc/memcached.def.i (added)
-
libmemcached-latest/.hg/store/data/visualc/toolset (added)
-
libmemcached-latest/.hg/store/data/visualc/toolset/stdint.h.i (added)
-
libmemcached-latest/.hg/store/data/visualc/toolset/strings.h.i (added)
-
libmemcached-latest/.hg/store/data/visualc/toolset/unistd.h.i (added)
-
libmemcached-latest/.hg/store/undo (modified) (previous)
-
libmemcached-latest/.hg/undo.dirstate (modified) (previous)
-
libmemcached-latest/ChangeLog (modified) (1 diff)
-
libmemcached-latest/config/bootstrap (modified) (1 diff)
-
libmemcached-latest/config/pod2man.m4 (added)
-
libmemcached-latest/configure.ac (modified) (1 diff)
-
libmemcached-latest/libmemcached/common.h (modified) (3 diffs)
-
libmemcached-latest/libmemcached/jenkins_hash.c (modified) (1 diff)
-
libmemcached-latest/libmemcached/memcached.c (modified) (1 diff)
-
libmemcached-latest/libmemcached/memcached.h (modified) (2 diffs)
-
libmemcached-latest/libmemcached/memcached_behavior.c (modified) (4 diffs)
-
libmemcached-latest/libmemcached/memcached_callback.c (modified) (1 diff)
-
libmemcached-latest/libmemcached/memcached_connect.c (modified) (2 diffs)
-
libmemcached-latest/libmemcached/memcached_constants.h (modified) (3 diffs)
-
libmemcached-latest/libmemcached/memcached_do.c (modified) (1 diff)
-
libmemcached-latest/libmemcached/memcached_hash.c (modified) (2 diffs)
-
libmemcached-latest/libmemcached/memcached_hosts.c (modified) (22 diffs)
-
libmemcached-latest/libmemcached/memcached_io.c (modified) (4 diffs)
-
libmemcached-latest/libmemcached/memcached_parse.c (modified) (3 diffs)
-
libmemcached-latest/libmemcached/memcached_purge.c (added)
-
libmemcached-latest/libmemcached/memcached_response.c (modified) (1 diff)
-
libmemcached-latest/libmemcached/memcached_server.c (modified) (2 diffs)
-
libmemcached-latest/libmemcached/memcached_server.h (modified) (1 diff)
-
libmemcached-latest/libmemcached/memcached_storage.c (modified) (1 diff)
-
libmemcached-latest/tests/Makefile.am (modified) (1 diff)
-
libmemcached-latest/tests/function.c (modified) (15 diffs)
-
libmemcached-latest/tests/ketama_test_cases.h (added)
Legend:
- Unmodified
- Added
- Removed
-
lang/c/libmemcached-win32/example/Makefile.msc
r20385 r23884 10 10 11 11 memcached.dll : ../libmemcached-latest/libmemcached/memcached.dll 12 c p $< $@12 copy ..\libmemcached-latest\libmemcached\memcached.dll memcached.dll -
lang/c/libmemcached-win32/libmemcached-latest/.hg/branch.cache
r22355 r23884 1 f ef841f8411424294314398aa143dd497e68a781 5641 fdd68ab3e3f46dbfa971a7ee1f74365494aa2140 575 2 2 062ae7f4824e35cd76479ad6abea25a37b2c795b binary 3 3 831dd42370aa27144b36041b15e3202c5cab3266 multi 4 f ef841f8411424294314398aa143dd497e68a781default4 fdd68ab3e3f46dbfa971a7ee1f74365494aa2140 default 5 5 9cbb58b05ba3f9ba7935dd810f32cb108fd9a51d head 6 6 066ab7b9a349b4c2d416760437b370311d8da23a replication -
lang/c/libmemcached-win32/libmemcached-latest/ChangeLog
r22355 r23884 2 2 * Jenkins HASH added. 3 3 * Update of Murmur hash code 4 * Support explicit weights (Robey Pointer, Evan Weaver) 5 * Bugfix for ketama continuum (Robey Pointer) 6 * New behavior MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY (Robey Pointer) 7 * Don't ever call stats for weighting servers, because it is unstable. 4 8 5 9 0.24 Tue Sep 16 02:59:03 PDT 2008 (never released) -
lang/c/libmemcached-win32/libmemcached-latest/config/bootstrap
r19614 r23884 27 27 ## We do not currently support glibtoolize 28 28 if test x$LIBTOOLIZE = x; then 29 #if test \! "x`which glibtoolize 2> /dev/null | grep -v '^no'`" = x; then30 #LIBTOOLIZE=glibtoolize31 if test \! "x`which libtoolize-1.5 2> /dev/null | grep -v '^no'`" = x; then29 if test \! "x`which glibtoolize 2> /dev/null | grep -v '^no'`" = x; then 30 LIBTOOLIZE=glibtoolize 31 elif test \! "x`which libtoolize-1.5 2> /dev/null | grep -v '^no'`" = x; then 32 32 LIBTOOLIZE=libtoolize-1.5 33 33 elif test \! "x`which libtoolize 2> /dev/null | grep -v '^no'`" = x; then -
lang/c/libmemcached-win32/libmemcached-latest/configure.ac
r22355 r23884 8 8 #release versioning 9 9 MEMCACHED_MAJOR_VERSION=0 10 MEMCACHED_MINOR_VERSION=2 410 MEMCACHED_MINOR_VERSION=25 11 11 MEMCACHED_MICRO_VERSION=0 12 12 -
lang/c/libmemcached-win32/libmemcached-latest/libmemcached/common.h
r20383 r23884 18 18 # ifndef index 19 19 # define index(x,y) strchr(x,y) 20 # endif 21 # ifndef random 22 # define random() rand() 23 # endif 24 # ifndef srandom 25 # define srandom(x) srand(x) 20 26 # endif 21 27 # ifdef _MSC_VER … … 114 120 /* 11 used for weighted ketama */ 115 121 MEM_KETAMA_WEIGHTED= (1 << 11), 116 MEM_BINARY_PROTOCOL= (1 << 12) 122 MEM_BINARY_PROTOCOL= (1 << 12), 123 MEM_HASH_WITH_PREFIX_KEY= (1 << 13) 117 124 } memcached_flags; 118 125 … … 158 165 159 166 void host_reset(memcached_st *ptr, memcached_server_st *host, 160 const char *hostname, unsigned int port, 167 const char *hostname, unsigned int port, uint32_t weight, 161 168 memcached_connection type); 162 169 -
lang/c/libmemcached-win32/libmemcached-latest/libmemcached/jenkins_hash.c
r20386 r23884 66 66 if ((u.i & 0x3) == 0) { 67 67 const uint32_t *k = (const uint32_t *)key; /* read 32-bit chunks */ 68 const uint8_t *k8;69 68 70 69 /*------ all but last block: aligned reads and affect 32 bits of (a,b,c) */ -
lang/c/libmemcached-win32/libmemcached-latest/libmemcached/memcached.c
r22355 r23884 33 33 ptr->distribution= MEMCACHED_DISTRIBUTION_MODULA; 34 34 35 ptr->io_msg_watermark = 500; 36 ptr->io_bytes_watermark = 65 * 1024; 35 /* TODO, Document why we picked these defaults */ 36 ptr->io_msg_watermark= 500; 37 ptr->io_bytes_watermark= 65 * 1024; 37 38 38 39 return ptr; -
lang/c/libmemcached-win32/libmemcached-latest/libmemcached/memcached.h
r22355 r23884 53 53 }; 54 54 55 #define LIBMEMCACHED_VERSION_STRING "0.2 4"55 #define LIBMEMCACHED_VERSION_STRING "0.25" 56 56 57 57 struct memcached_stat_st { … … 157 157 memcached_return memcached_server_add(memcached_st *ptr, const char *hostname, 158 158 unsigned int port); 159 160 memcached_return memcached_server_add_udp_with_weight(memcached_st *ptr, 161 const char *hostname, 162 unsigned int port, 163 uint32_t weight); 164 memcached_return memcached_server_add_unix_socket_with_weight(memcached_st *ptr, 165 const char *filename, 166 uint32_t weight); 167 memcached_return memcached_server_add_with_weight(memcached_st *ptr, const char *hostname, 168 unsigned int port, 169 uint32_t weight); 159 170 void memcached_server_list_free(memcached_server_st *ptr); 160 171 memcached_return memcached_server_push(memcached_st *ptr, memcached_server_st *list); 161 172 162 173 memcached_server_st *memcached_server_list_append(memcached_server_st *ptr, 163 const char *hostname, unsigned int port, 164 memcached_return *error); 174 const char *hostname, 175 unsigned int port, 176 memcached_return *error); 177 memcached_server_st *memcached_server_list_append_with_weight(memcached_server_st *ptr, 178 const char *hostname, 179 unsigned int port, 180 uint32_t weight, 181 memcached_return *error); 165 182 unsigned int memcached_server_list_count(memcached_server_st *ptr); 166 183 memcached_server_st *memcached_servers_parse(char *server_strings); -
lang/c/libmemcached-win32/libmemcached-latest/libmemcached/memcached_behavior.c
r22355 r23884 1 1 #include "common.h" 2 #include <time.h> 2 3 #include <sys/types.h> 3 4 #ifndef _WIN32 … … 61 62 { 62 63 ptr->distribution= (memcached_server_distribution)(data); 64 if (ptr->distribution == MEMCACHED_DISTRIBUTION_RANDOM) 65 { 66 srandom(time(NULL)); 67 } 63 68 run_distribution(ptr); 64 69 break; … … 127 132 case MEMCACHED_BEHAVIOR_USER_DATA: 128 133 return MEMCACHED_FAILURE; 134 case MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY: 135 set_behavior_flag(ptr, MEM_HASH_WITH_PREFIX_KEY, data); 136 break; 129 137 } 130 138 … … 232 240 case MEMCACHED_BEHAVIOR_USER_DATA: 233 241 return MEMCACHED_FAILURE; 242 case MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY: 243 temp_flag= MEM_HASH_WITH_PREFIX_KEY; 244 break; 234 245 } 235 246 -
lang/c/libmemcached-win32/libmemcached-latest/libmemcached/memcached_callback.c
r19614 r23884 24 24 size_t key_length= strlen(key); 25 25 26 if ( (ptr->flags & MEM_VERIFY_KEY) && (memcachd_key_test((char **)&key, &key_length, 1) == MEMCACHED_BAD_KEY_PROVIDED))26 if (memcachd_key_test((char **)&key, &key_length, 1) == MEMCACHED_BAD_KEY_PROVIDED) 27 27 { 28 28 return MEMCACHED_BAD_KEY_PROVIDED; -
lang/c/libmemcached-win32/libmemcached-latest/libmemcached/memcached_connect.c
r20379 r23884 196 196 } 197 197 } 198 /* Old connection junk still is in the structure */199 WATCHPOINT_ASSERT(ptr->cursor_active == 0);200 198 201 199 if (ptr->sockaddr_inited == MEMCACHED_NOT_ALLOCATED || … … 260 258 goto handle_retry; 261 259 } 262 else if (error != 1 ||fds[0].revents & POLLERR)260 else if (error != 1 && fds[0].revents & POLLERR) 263 261 { 264 262 ptr->cached_errno= errno; -
lang/c/libmemcached-win32/libmemcached-latest/libmemcached/memcached_constants.h
r22355 r23884 20 20 #define MEMCACHED_MAX_HOST_LENGTH 64 21 21 #define MEMCACHED_MAX_HOST_SORT_LENGTH 86 /* Used for Ketama */ 22 #define MEMCACHED_POINTS_PER_SERVER 100 22 #define MEMCACHED_POINTS_PER_SERVER 100 23 #define MEMCACHED_POINTS_PER_SERVER_KETAMA 160 23 24 #define MEMCACHED_CONTINUUM_SIZE MEMCACHED_POINTS_PER_SERVER*100 /* This would then set max hosts to 100 */ 24 25 #define MEMCACHED_STRIDE 4 25 26 #define MEMCACHED_DEFAULT_TIMEOUT 1000 26 27 #define MEMCACHED_CONTINUUM_ADDITION 10 /* How many extra slots we should build for in the continuum */ 27 #define MEMCACHED_PREFIX_KEY_MAX_SIZE 12 28 #define MEMCACHED_PREFIX_KEY_MAX_SIZE 128 28 29 29 30 typedef enum { … … 67 68 MEMCACHED_DISTRIBUTION_MODULA, 68 69 MEMCACHED_DISTRIBUTION_CONSISTENT, 69 MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA 70 MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA, 71 MEMCACHED_DISTRIBUTION_RANDOM 70 72 } memcached_server_distribution; 71 73 … … 94 96 MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT, 95 97 MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK, 96 MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK 98 MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK, 99 MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY 97 100 } memcached_behavior; 98 101 -
lang/c/libmemcached-win32/libmemcached-latest/libmemcached/memcached_do.c
r19614 r23884 11 11 12 12 if ((rc= memcached_connect(ptr)) != MEMCACHED_SUCCESS) 13 { 14 WATCHPOINT_ERROR(rc); 13 15 return rc; 16 } 14 17 15 18 sent_length= memcached_io_write(ptr, command, command_length, with_flush); -
lang/c/libmemcached-win32/libmemcached-latest/libmemcached/memcached_hash.c
r20383 r23884 122 122 hash= hash; 123 123 begin= left= ptr->continuum; 124 end= right= ptr->continuum + (num - 1); 125 126 while (1) 127 { 128 memcached_continuum_item_st *rmiddle; 129 130 middle = left + (right - left) / 2; 131 132 if (middle==end) 133 return begin->index; 134 135 if (middle==begin) 136 return end->index; 137 138 rmiddle = middle+1; 139 140 if (hash < rmiddle->value && hash >= middle->value) 141 return middle->index; 142 124 end= right= ptr->continuum + num; 125 126 while (left < right) 127 { 128 middle= left + (right - left) / 2; 143 129 if (middle->value < hash) 144 left = middle + 1;145 else if (middle->value > hash)146 right = middle - 1;147 148 if (left>right)149 return left->index;150 }130 left= middle + 1; 131 else 132 right= middle; 133 } 134 if (right > end) 135 right= begin; 136 return right->index; 151 137 } 152 138 break; 153 139 case MEMCACHED_DISTRIBUTION_MODULA: 154 140 return hash % ptr->number_of_hosts; 141 case MEMCACHED_DISTRIBUTION_RANDOM: 142 return random() % ptr->number_of_hosts; 155 143 default: 156 144 WATCHPOINT_ASSERT(0); /* We have added a distribution without extending the logic */ … … 175 163 return 0; 176 164 177 hash= generate_hash(ptr, key, key_length); 165 if (ptr->flags & MEM_HASH_WITH_PREFIX_KEY) 166 { 167 int temp_len= ptr->prefix_key_length + key_length; 168 char *temp= (char *)malloc(temp_len); 169 strncpy(temp, ptr->prefix_key, ptr->prefix_key_length); 170 strncpy(temp + ptr->prefix_key_length, key, key_length); 171 hash= generate_hash(ptr, temp, temp_len); 172 free(temp); 173 } 174 else 175 { 176 hash= generate_hash(ptr, key, key_length); 177 } 178 178 179 179 WATCHPOINT_ASSERT(hash); -
lang/c/libmemcached-win32/libmemcached-latest/libmemcached/memcached_hosts.c
r20383 r23884 5 5 static memcached_return server_add(memcached_st *ptr, const char *hostname, 6 6 unsigned int port, 7 uint32_t weight, 7 8 memcached_connection type); 8 9 memcached_return update_continuum(memcached_st *ptr); … … 45 46 sort_hosts(ptr); 46 47 break; 48 case MEMCACHED_DISTRIBUTION_RANDOM: 49 break; 47 50 default: 48 51 WATCHPOINT_ASSERT(0); /* We have added a distribution without extending the logic */ … … 53 56 54 57 void host_reset(memcached_st *ptr, memcached_server_st *host, 55 const char *hostname, unsigned int port, 58 const char *hostname, unsigned int port, uint32_t weight, 56 59 memcached_connection type) 57 60 { … … 60 63 host->root= ptr ? ptr : NULL; 61 64 host->port= port; 65 host->weight= weight; 62 66 host->fd= -1; 63 67 host->type= type; … … 86 90 else 87 91 free(servers); 92 } 93 94 static uint32_t ketama_server_hash(const char *key, unsigned int key_length, int alignment) 95 { 96 unsigned char results[16]; 97 98 md5_signature((unsigned char*)key, key_length, results); 99 return ((uint32_t) (results[3 + alignment * 4] & 0xFF) << 24) 100 | ((uint32_t) (results[2 + alignment * 4] & 0xFF) << 16) 101 | ((uint32_t) (results[1 + alignment * 4] & 0xFF) << 8) 102 | (results[0 + alignment * 4] & 0xFF); 88 103 } 89 104 … … 112 127 uint32_t pointer_counter= 0; 113 128 uint32_t pointer_per_server= MEMCACHED_POINTS_PER_SERVER; 114 memcached_return rc; 115 uint64_t total_mem_bytes= 0; 116 memcached_stat_st *stat_p= NULL; 129 uint32_t pointer_per_hash= 1; 130 uint64_t total_weight= 0; 117 131 uint32_t is_ketama_weighted= 0; 132 uint32_t points_per_server= 0; 133 134 is_ketama_weighted= memcached_behavior_get(ptr, MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED); 135 points_per_server= is_ketama_weighted ? MEMCACHED_POINTS_PER_SERVER_KETAMA : MEMCACHED_POINTS_PER_SERVER; 118 136 119 137 if (ptr->number_of_hosts > ptr->continuum_count) … … 122 140 123 141 if (ptr->call_realloc) 124 new_ptr= (memcached_continuum_item_st *)ptr->call_realloc(ptr, ptr->continuum, sizeof(memcached_continuum_item_st) * (ptr->number_of_hosts + MEMCACHED_CONTINUUM_ADDITION) * MEMCACHED_POINTS_PER_SERVER);142 new_ptr= (memcached_continuum_item_st *)ptr->call_realloc(ptr, ptr->continuum, sizeof(memcached_continuum_item_st) * (ptr->number_of_hosts + MEMCACHED_CONTINUUM_ADDITION) * points_per_server); 125 143 else 126 new_ptr= (memcached_continuum_item_st *)realloc(ptr->continuum, sizeof(memcached_continuum_item_st) * (ptr->number_of_hosts + MEMCACHED_CONTINUUM_ADDITION) * MEMCACHED_POINTS_PER_SERVER);144 new_ptr= (memcached_continuum_item_st *)realloc(ptr->continuum, sizeof(memcached_continuum_item_st) * (ptr->number_of_hosts + MEMCACHED_CONTINUUM_ADDITION) * points_per_server); 127 145 128 146 if (new_ptr == 0) … … 135 153 list = ptr->hosts; 136 154 137 is_ketama_weighted= memcached_behavior_get(ptr, MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED); 138 if(is_ketama_weighted) 139 { 140 stat_p = memcached_stat(ptr, NULL, &rc); 155 if (is_ketama_weighted) 156
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)