X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Futilities.c;h=2094d2186e3a14c3d88ac01236cdf192391ef88d;hb=635de3ca55245a58f49b487798476fbc96b5e364;hp=de11ee2d404f0c7c529de17c1f982f73b5c7cc14;hpb=f580e35770a744c60cb92e1cd581944d9da72205;p=awesomized%2Flibmemcached diff --git a/src/utilities.c b/src/utilities.c index de11ee2d..2094d218 100644 --- a/src/utilities.c +++ b/src/utilities.c @@ -1,5 +1,6 @@ +#include #include -#include +#include #include "utilities.h" @@ -41,9 +42,11 @@ char *lookup_help(memcached_options option) case OPT_SLAP_NON_BLOCK: return("Set TCP up to use non-blocking IO."); case OPT_SLAP_TCP_NODELAY: return("Set TCP socket up to use nodelay."); case OPT_FLUSH: return("Flush servers before running tests."); + case OPT_HASH: return("Select hash type."); }; - return "forgot to document this one :)"; + WATCHPOINT_ASSERT(0); + return "forgot to document this function :)"; } void help_command(char *command_name, char *description, @@ -69,3 +72,38 @@ void help_command(char *command_name, char *description, printf("\n"); exit(0); } + +void process_hash_option(memcached_st *memc, char *opt_hash) +{ + unsigned int set; + memcached_return rc; + + if (opt_hash == NULL) + return; + + if (!strcasecmp(opt_hash, "CRC")) + set= MEMCACHED_HASH_CRC; + else if (!strcasecmp(opt_hash, "FNV1_64")) + set= MEMCACHED_HASH_FNV1_64; + else if (!strcasecmp(opt_hash, "FNV1A_64")) + set= MEMCACHED_HASH_FNV1A_64; + else if (!strcasecmp(opt_hash, "FNV1_32")) + set= MEMCACHED_HASH_FNV1_32; + else if (!strcasecmp(opt_hash, "FNV1A_32")) + set= MEMCACHED_HASH_FNV1A_32; + else if (!strcasecmp(opt_hash, "KETAMA")) + set= MEMCACHED_HASH_KETAMA; + else + { + fprintf(stderr, "hash: type not recognized %s\n", opt_hash); + exit(1); + } + + rc= memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &set); + if (rc != MEMCACHED_SUCCESS) + { + fprintf(stderr, "hash: memcache error %s\n", memcached_strerror(memc, rc)); + exit(1); + } +} +