X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=lib%2Fmemcached_behavior.c;h=bf90d75ec9e3f5fd2d1d8d6e43adfa6e1630e10b;hb=b9298b65419d873299e010afa0f4eca2c8259969;hp=e084af352ec926d26a79100597a15849722fc8da;hpb=a7db49095a0ed78a1418003a00eef6d483c0d854;p=m6w6%2Flibmemcached diff --git a/lib/memcached_behavior.c b/lib/memcached_behavior.c index e084af35..bf90d75e 100644 --- a/lib/memcached_behavior.c +++ b/lib/memcached_behavior.c @@ -1,8 +1,14 @@ -#include +#include "common.h" #include #include #include +/* + This function is used to modify the behabior of running client. + + We quit all connections so we can reset the sockets. +*/ + memcached_return memcached_behavior_set(memcached_st *ptr, memcached_behavior flag, void *data) @@ -10,26 +16,56 @@ memcached_return memcached_behavior_set(memcached_st *ptr, switch (flag) { case MEMCACHED_BEHAVIOR_NO_BLOCK: - /* We quit all connections so we can reset the sockets */ - memcached_quit(ptr); - ptr->flags|= MEM_NO_BLOCK; - break; - case MEMCACHED_BEHAVIOR_BLOCK: - /* We quit all connections so we can reset the sockets */ - memcached_quit(ptr); - ptr->flags+= MEM_NO_BLOCK; - break; + { + unsigned int *truefalse= (unsigned int *)data; + memcached_quit(ptr); + if (truefalse) + ptr->flags|= MEM_NO_BLOCK; + else + ptr->flags+= MEM_NO_BLOCK; + break; + } + case MEMCACHED_BEHAVIOR_TCP_NODELAY: - /* We quit all connections so we can reset the sockets */ - memcached_quit(ptr); - ptr->flags|= MEM_TCP_NODELAY; - break; - case MEMCACHED_BEHAVIOR_TCP_DELAY: - /* We quit all connections so we can reset the sockets */ - memcached_quit(ptr); - ptr->flags+= MEM_TCP_NODELAY; + { + unsigned int *truefalse= (unsigned int *)data; + memcached_quit(ptr); + if (truefalse) + ptr->flags|= MEM_TCP_NODELAY; + else + ptr->flags+= MEM_TCP_NODELAY; + break; + } + + case MEMCACHED_BEHAVIOR_MD5_HASHING: + ptr->flags+= MEM_USE_MD5; break; } return MEMCACHED_SUCCESS; } + +unsigned long long memcached_behavior_get(memcached_st *ptr, + memcached_behavior flag) +{ + switch (flag) + { + case MEMCACHED_BEHAVIOR_NO_BLOCK: + if (ptr->flags & MEM_NO_BLOCK) + return 1; + else + return 0; + case MEMCACHED_BEHAVIOR_TCP_NODELAY: + if (ptr->flags & MEM_TCP_NODELAY) + return 1; + else + return 0; + case MEMCACHED_BEHAVIOR_MD5_HASHING: + if (ptr->flags & MEM_USE_MD5) + return 1; + else + return 0; + } + + return MEMCACHED_SUCCESS; +}