X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fbehavior.c;h=2fe17dc8d66943dd025ff29d794c83fb59588ede;hb=2a34f4dcac48917e41a1b6aee37edbe886aa9f7b;hp=2e2b99e4c151ae945f0bb4ace3e7cc486149285c;hpb=481efe3c437e1d87e0fabb987982cc1df2b2c35d;p=awesomized%2Flibmemcached diff --git a/libmemcached/behavior.c b/libmemcached/behavior.c index 2e2b99e4..2fe17dc8 100644 --- a/libmemcached/behavior.c +++ b/libmemcached/behavior.c @@ -103,7 +103,7 @@ memcached_return_t memcached_behavior_set(memcached_st *ptr, { (void)memcached_behavior_set_key_hash(ptr, MEMCACHED_HASH_MD5); (void)memcached_behavior_set_distribution_hash(ptr, MEMCACHED_HASH_MD5); - ptr->flags.ketama_weighted= set_flag(data); + ptr->ketama.weighted= set_flag(data); /** @note We try to keep the same distribution going. This should be deprecated and rewritten. */ @@ -226,7 +226,7 @@ uint64_t memcached_behavior_get(memcached_st *ptr, case MEMCACHED_BEHAVIOR_VERIFY_KEY: return ptr->flags.verify_key; case MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED: - return ptr->flags.ketama_weighted; + return ptr->ketama.weighted; case MEMCACHED_BEHAVIOR_DISTRIBUTION: return ptr->distribution; case MEMCACHED_BEHAVIOR_KETAMA: @@ -357,6 +357,14 @@ memcached_return_t memcached_behavior_set_distribution(memcached_st *ptr, memcac { if (type < MEMCACHED_DISTRIBUTION_CONSISTENT_MAX) { + if (MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED) + { + ptr->ketama.weighted= true; + } + else + { + ptr->ketama.weighted= false; + } ptr->distribution= type; run_distribution(ptr); return MEMCACHED_SUCCESS; @@ -453,6 +461,7 @@ const char *libmemcached_string_distribution(const memcached_server_distribution case MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA: return "MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA"; case MEMCACHED_DISTRIBUTION_RANDOM: return "MEMCACHED_DISTRIBUTION_RANDOM"; case MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA_SPY: return "MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA_SPY"; + case MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED: return "MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED"; default: case MEMCACHED_DISTRIBUTION_CONSISTENT_MAX: return "INVALID memcached_server_distribution_t"; }