Added randomized read behavior
[m6w6/libmemcached] / libmemcached / common.h
index 7942b27a34011bf96d18887779754a6f78c47866..99d4ce78f103e875a92c655b34d312730c2eaf5c 100644 (file)
@@ -48,6 +48,7 @@
 #include "libmemcached/memcached_internal.h"
 #include "libmemcached/libmemcached_probes.h"
 #include "libmemcached/memcached/protocol_binary.h"
+#include "libmemcached/byteorder.h"
 
 /* string value */
 struct memcached_continuum_item_st {
@@ -63,8 +64,8 @@ struct memcached_continuum_item_st {
 
 #else
 
-#define likely(x)       if(__builtin_expect(!!(x), 1))
-#define unlikely(x)     if(__builtin_expect((x), 0))
+#define likely(x)       if(__builtin_expect((x) != 0, 1))
+#define unlikely(x)     if(__builtin_expect((x) != 0, 0))
 #endif
 
 
@@ -92,7 +93,8 @@ typedef enum {
   MEM_HASH_WITH_PREFIX_KEY= (1 << 13),
   MEM_NOREPLY= (1 << 14),
   MEM_USE_UDP= (1 << 15),
-  MEM_AUTO_EJECT_HOSTS= (1 << 16)
+  MEM_AUTO_EJECT_HOSTS= (1 << 16),
+  MEM_RANDOMIZE_REPLICA_READ= (1 << 17)
 } memcached_flags;
 
 /* Hashing algo */
@@ -135,28 +137,22 @@ LIBMEMCACHED_LOCAL
 void server_list_free(memcached_st *ptr, memcached_server_st *servers);
 
 LIBMEMCACHED_LOCAL
-memcached_return memcached_key_test(const char **keys, size_t *key_length,
-                                    unsigned int number_of_keys);
+memcached_return memcached_key_test(const char * const *keys, 
+                                    const size_t *key_length,
+                                    size_t number_of_keys);
 
 
 LIBMEMCACHED_LOCAL
 uint32_t generate_hash(memcached_st *ptr, const char *key, size_t key_length);
 
-#ifndef HAVE_HTONLL
-LIBMEMCACHED_LOCAL
-extern uint64_t ntohll(uint64_t);
-LIBMEMCACHED_LOCAL
-extern uint64_t htonll(uint64_t);
-#endif
-
 LIBMEMCACHED_LOCAL
 memcached_return memcached_purge(memcached_server_st *ptr);
 
-static inline memcached_return memcached_validate_key_length(size_t key_length, 
+static inline memcached_return memcached_validate_key_length(size_t key_length,
                                                              bool binary) {
   unlikely (key_length == 0)
     return MEMCACHED_BAD_KEY_PROVIDED;
-  
+
   if (binary)
   {
     unlikely (key_length > 0xffff)
@@ -164,7 +160,7 @@ static inline memcached_return memcached_validate_key_length(size_t key_length,
   }
   else
   {
-    unlikely (key_length >= MEMCACHED_MAX_KEY) 
+    unlikely (key_length >= MEMCACHED_MAX_KEY)
       return MEMCACHED_BAD_KEY_PROVIDED;
   }