Merge 477:75823cad36b7 with -r 476
author <patg@patg.net> <>
Mon, 5 May 2008 03:32:10 +0000 (23:32 -0400)
committer <patg@patg.net> <>
Mon, 5 May 2008 03:32:10 +0000 (23:32 -0400)
libmemcached/memcached.hh
tests/plus.cpp

index f7e349e7ee2fca05a4e28a8e8b5e78424f89610a..3bbcaf0bbf9fdec56b20e3d26d8c9d70f8358970 100644 (file)
@@ -9,6 +9,7 @@
 class Memcached
 {
   memcached_st memc;
+  memcached_result_st result;
 
 public:
 
@@ -21,7 +22,14 @@ public:
   {
     memcached_clone(&memc, clone);
   }
+  char *fetch (char *key, size_t *key_length, size_t *value_length)
+  {
+    uint32_t flags;
+    memcached_return rc;
 
+    return memcached_fetch(&memc, key, key_length,
+                    value_length, &flags, &rc);
+  }
   char *get(char *key, size_t *value_length)
   {
     uint32_t flags;
@@ -61,6 +69,18 @@ public:
                          (time_t)0,
                          (uint32_t)0 );
   }
+  memcached_return
+    increment(char *key, unsigned int offset, uint64_t *value)
+  {
+    return memcached_increment(&memc, key, strlen(key),
+                         offset, value);
+  }
+  memcached_return
+    decrement(char *key, unsigned int offset, uint64_t *value)
+  {
+    return memcached_decrement(&memc, key, strlen(key),
+                         offset, value);
+  }
 
 
   memcached_return add(char *key, char *value, size_t value_length)
@@ -69,6 +89,13 @@ public:
                  value, value_length,
                  (time_t)0, (uint32_t)0);
   }
+  memcached_return add_by_key(char *master_key, char *key, char *value, size_t value_length)
+  {
+    return memcached_add_by_key(&memc, master_key, strlen(master_key),
+                                key, strlen(key),
+                                value, value_length,
+                                (time_t)0, (uint32_t)0);
+  }
 
   memcached_return replace(char *key, char *value, size_t value_length)
   {
@@ -76,6 +103,14 @@ public:
                      value, value_length,
                      (time_t)0, (uint32_t)0);
   }
+  memcached_return replace_by_key(char *master_key,
+                                  char *key, char *value, size_t value_length)
+  {
+    return memcached_replace_by_key(&memc, master_key, strlen(master_key),
+                                    key, strlen(key),
+                                    value, value_length,
+                                    (time_t)0, (uint32_t)0);
+  }
 
   memcached_return prepend(char *key, char *value, size_t value_length)
   {
@@ -84,7 +119,15 @@ public:
                     (time_t)0,
                     (uint32_t)0);
   }
-
+  memcached_return prepend_by_key(char *master_key,
+                                  char *key, char *value, size_t value_length)
+  {
+    return memcached_prepend_by_key(&memc, master_key, strlen(master_key),
+                                    key, strlen(key),
+                                    value, value_length,
+                                    (time_t)0,
+                                    (uint32_t)0);
+  }
 
   memcached_return  append(char *key, char *value, size_t value_length)
   {
@@ -93,6 +136,46 @@ public:
                     (time_t)0,
                     (uint32_t)0);
   }
+  memcached_return  append_by_key(char *master_key,
+                                  char *key, char *value, size_t value_length)
+  {
+    return memcached_append_by_key(&memc,
+                                   master_key, strlen(master_key),
+                                   key, strlen(key),
+                                   value, value_length,
+                                   (time_t)0,
+                                   (uint32_t)0);
+  }
+  memcached_return  cas(char *key, char *value, size_t value_length, uint64_t cas)
+  {
+    return memcached_cas(&memc, key, strlen(key),
+                    value, value_length,
+                    (time_t)0,
+                    (uint32_t)0,
+                    cas);
+  }
+  memcached_return  cas_by_key(char *master_key, char *key, char *value,
+                               size_t value_length, uint64_t cas)
+  {
+    return memcached_cas_by_key(&memc,
+                                master_key, strlen(master_key),
+                                key, strlen(key),
+                                value, value_length,
+                                (time_t)0,
+                                (uint32_t)0,
+                                cas);
+  }
+  // using 'remove' vs. 'delete' since 'delete' is a keyword 
+  memcached_return remove(char *key)
+  {
+    return memcached_delete (&memc, key, strlen(key), (time_t)0);
+
+  }
+  memcached_return delete_by_key(char *master_key, char *key)
+  {
+    return memcached_delete_by_key(&memc, master_key, strlen(master_key),
+                           key, strlen(key), (time_t)0);
+  }
  ~Memcached()
  {
    memcached_free(&memc);
index 20a537b1ac20ed28e7c7102dd666aa889cb7de55..ab9cdbe6e7d466be903917d7defdcb3e7eb57d22 100644 (file)
@@ -30,6 +30,39 @@ test_return basic_test(memcached_st *memc)
   return TEST_SUCCESS;
 }
 
+uint8_t increment_test(memcached_st *memc)
+{
+  Memcached mcach;
+  memcached_return rc;
+  char *key= "inctest";
+  char *inc_value= "1";
+  char *ret_value;
+  uint64_t int_inc_value;
+  uint64_t int_ret_value;
+  size_t value_length;
+
+  mcach.set(key, inc_value, strlen(inc_value));
+  ret_value= mcach.get(key, &value_length);
+  printf("\nretvalue %s\n",ret_value);
+  int_inc_value= atoi(inc_value);
+  int_ret_value= atoi(ret_value);
+  assert(int_ret_value == int_inc_value); 
+
+  rc= mcach.increment(key, 1, &int_ret_value);
+  assert(rc == MEMCACHED_SUCCESS);
+  assert(int_ret_value == 2);
+
+  rc= mcach.increment(key, 1, &int_ret_value);
+  assert(rc == MEMCACHED_SUCCESS);
+  assert(int_ret_value == 3);
+
+  rc= mcach.increment(key, 5, &int_ret_value);
+  assert(rc == MEMCACHED_SUCCESS);
+  assert(int_ret_value == 8);
+
+  return 0;
+}
+
 test_return basic_master_key_test(memcached_st *memc)
 {
   Memcached foo;