Cleanup of behavior (refactored...)
authorBrian Aker <brian@tangent.org>
Sun, 7 Oct 2007 23:47:09 +0000 (16:47 -0700)
committerBrian Aker <brian@tangent.org>
Sun, 7 Oct 2007 23:47:09 +0000 (16:47 -0700)
I am still using two enum... why? Trying to keep people fromm touching the
main interface. I don't have to do this though....

include/memcached.h
lib/common.h
lib/memcached_behavior.c
tests/test.c

index d687897a20407bc03b13abf852db5bbe77855683..da0510701d3859d8f0654d141379f6784584800c 100644 (file)
@@ -74,6 +74,7 @@ typedef enum {
   MEMCACHED_BEHAVIOR_NO_BLOCK,
   MEMCACHED_BEHAVIOR_TCP_NODELAY,
   MEMCACHED_BEHAVIOR_MD5_HASHING,
+  MEMCACHED_BEHAVIOR_KETAMA,
 } memcached_behavior;
 
 typedef enum {
index bc428c0229d37322694662bfa1f31080c7e040b4..f922fee15680dabe42c1acde41d6e239feb5c481 100644 (file)
@@ -23,6 +23,7 @@ typedef enum {
   MEM_TCP_NODELAY= (1 << 1),
   MEM_REUSE_MEMORY= (1 << 2),
   MEM_USE_MD5= (1 << 3),
+  MEM_USE_KETAMA= (1 << 4),
 } memcached_flags;
 
 void md5_signature(unsigned char *key, unsigned int length, unsigned char *result);
index bf90d75ec9e3f5fd2d1d8d6e43adfa6e1630e10b..7383b4e22d400c85a8f444e4c6c2923e19370bc0 100644 (file)
@@ -13,33 +13,27 @@ memcached_return memcached_behavior_set(memcached_st *ptr,
                                         memcached_behavior flag, 
                                         void *data)
 {
+  memcached_flags temp_flag;
+
   switch (flag)
   {
   case MEMCACHED_BEHAVIOR_NO_BLOCK:
-    {
-      unsigned int *truefalse= (unsigned int *)data;
-      memcached_quit(ptr);
-      if (truefalse)
-        ptr->flags|= MEM_NO_BLOCK;
-      else
-        ptr->flags+= MEM_NO_BLOCK;
-      break;
-    }
-
+    temp_flag= MEM_NO_BLOCK;
   case MEMCACHED_BEHAVIOR_TCP_NODELAY:
+    temp_flag= MEM_TCP_NODELAY;
+  case MEMCACHED_BEHAVIOR_MD5_HASHING:
+    temp_flag= MEM_USE_MD5;
+  case MEMCACHED_BEHAVIOR_KETAMA:
+    temp_flag= MEM_USE_KETAMA;
     {
       unsigned int *truefalse= (unsigned int *)data;
       memcached_quit(ptr);
       if (truefalse)
-        ptr->flags|= MEM_TCP_NODELAY;
+        ptr->flags|= temp_flag;
       else
-        ptr->flags+= MEM_TCP_NODELAY;
+        ptr->flags+= temp_flag;
       break;
     }
-
-  case MEMCACHED_BEHAVIOR_MD5_HASHING:
-    ptr->flags+= MEM_USE_MD5;
-    break;
   }
 
   return MEMCACHED_SUCCESS;
@@ -48,20 +42,19 @@ memcached_return memcached_behavior_set(memcached_st *ptr,
 unsigned long long memcached_behavior_get(memcached_st *ptr, 
                                           memcached_behavior flag)
 {
+  memcached_flags temp_flag;
+
   switch (flag)
   {
   case MEMCACHED_BEHAVIOR_NO_BLOCK:
-    if (ptr->flags & MEM_NO_BLOCK)
-      return 1;
-    else
-      return 0;
+    temp_flag= MEM_NO_BLOCK;
   case MEMCACHED_BEHAVIOR_TCP_NODELAY:
-    if (ptr->flags & MEM_TCP_NODELAY)
-      return 1;
-    else
-      return 0;
+    temp_flag= MEM_TCP_NODELAY;
   case MEMCACHED_BEHAVIOR_MD5_HASHING:
-    if (ptr->flags & MEM_USE_MD5)
+    temp_flag= MEM_USE_MD5;
+  case MEMCACHED_BEHAVIOR_KETAMA:
+    temp_flag= MEM_USE_KETAMA;
+    if (ptr->flags & temp_flag)
       return 1;
     else
       return 0;
index 2c870d87e03219cb7861371f3720ede5ce8d44f0..935e14009f428c8735e71371692200fc9963427d 100644 (file)
@@ -466,6 +466,10 @@ void behavior_test(memcached_st *memc)
   value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY);
   assert(value == 1);
 
+  memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_MD5_HASHING, &set);
+  value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_MD5_HASHING);
+  assert(value == 1);
+
   set= 0;
 
   memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, &set);
@@ -475,6 +479,10 @@ void behavior_test(memcached_st *memc)
   memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, &set);
   value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY);
   assert(value == 0);
+
+  memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_MD5_HASHING, &set);
+  value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_MD5_HASHING);
+  assert(value == 0);
 }
 
 void add_host_test1(memcached_st *memc)