34 #include <drizzled/item/func.h>
36 #include <libmemcached/memcached.h>
48 failure_buff(
"0", &drizzled::my_charset_bin),
49 success_buff(
"1", &drizzled::my_charset_bin),
53 ketama_hash_settings_map()
55 behavior_map.insert(std::pair<const std::string, memcached_behavior>
56 (
"MEMCACHED_BEHAVIOR_SUPPORT_CAS", MEMCACHED_BEHAVIOR_SUPPORT_CAS));
57 behavior_map.insert(std::pair<const std::string, memcached_behavior>
58 (
"MEMCACHED_BEHAVIOR_NO_BLOCK", MEMCACHED_BEHAVIOR_NO_BLOCK));
59 behavior_map.insert(std::pair<const std::string, memcached_behavior>
60 (
"MEMCACHED_BEHAVIOR_TCP_NODELAY", MEMCACHED_BEHAVIOR_TCP_NODELAY));
61 behavior_map.insert(std::pair<const std::string, memcached_behavior>
62 (
"MEMCACHED_BEHAVIOR_HASH", MEMCACHED_BEHAVIOR_HASH));
63 behavior_map.insert(std::pair<const std::string, memcached_behavior>
64 (
"MEMCACHED_BEHAVIOR_CACHE_LOOKUPS", MEMCACHED_BEHAVIOR_CACHE_LOOKUPS));
65 behavior_map.insert(std::pair<const std::string, memcached_behavior>
66 (
"MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE", MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE));
67 behavior_map.insert(std::pair<const std::string, memcached_behavior>
68 (
"MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE", MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE));
69 behavior_map.insert(std::pair<const std::string, memcached_behavior>
70 (
"MEMCACHED_BEHAVIOR_BUFFER_REQUESTS", MEMCACHED_BEHAVIOR_BUFFER_REQUESTS));
71 behavior_map.insert(std::pair<const std::string, memcached_behavior>
72 (
"MEMCACHED_BEHAVIOR_KETAMA", MEMCACHED_BEHAVIOR_KETAMA));
73 behavior_map.insert(std::pair<const std::string, memcached_behavior>
74 (
"MEMCACHED_BEHAVIOR_POLL_TIMEOUT", MEMCACHED_BEHAVIOR_POLL_TIMEOUT));
75 behavior_map.insert(std::pair<const std::string, memcached_behavior>
76 (
"MEMCACHED_BEHAVIOR_RETRY_TIMEOUT", MEMCACHED_BEHAVIOR_RETRY_TIMEOUT));
77 behavior_map.insert(std::pair<const std::string, memcached_behavior>
78 (
"MEMCACHED_BEHAVIOR_DISTRIBUTION", MEMCACHED_BEHAVIOR_DISTRIBUTION));
79 behavior_map.insert(std::pair<const std::string, memcached_behavior>
80 (
"MEMCACHED_BEHAVIOR_USER_DATA", MEMCACHED_BEHAVIOR_USER_DATA));
81 behavior_map.insert(std::pair<const std::string, memcached_behavior>
82 (
"MEMCACHED_BEHAVIOR_SORT_HOSTS", MEMCACHED_BEHAVIOR_SORT_HOSTS));
83 behavior_map.insert(std::pair<const std::string, memcached_behavior>
84 (
"MEMCACHED_BEHAVIOR_VERIFY_KEY", MEMCACHED_BEHAVIOR_VERIFY_KEY));
85 behavior_map.insert(std::pair<const std::string, memcached_behavior>
86 (
"MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT", MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT));
87 behavior_map.insert(std::pair<const std::string, memcached_behavior>
88 (
"MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED", MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED));
89 behavior_map.insert(std::pair<const std::string, memcached_behavior>
90 (
"MEMCACHED_BEHAVIOR_KETAMA_HASH", MEMCACHED_BEHAVIOR_KETAMA_HASH));
91 behavior_map.insert(std::pair<const std::string, memcached_behavior>
92 (
"MEMCACHED_BEHAVIOR_BINARY_PROTOCOL", MEMCACHED_BEHAVIOR_BINARY_PROTOCOL));
93 behavior_map.insert(std::pair<const std::string, memcached_behavior>
94 (
"MEMCACHED_BEHAVIOR_SND_TIMEOUT", MEMCACHED_BEHAVIOR_SND_TIMEOUT));
95 behavior_map.insert(std::pair<const std::string, memcached_behavior>
96 (
"MEMCACHED_BEHAVIOR_RCV_TIMEOUT", MEMCACHED_BEHAVIOR_RCV_TIMEOUT));
97 behavior_map.insert(std::pair<const std::string, memcached_behavior>
98 (
"MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT", MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT));
99 behavior_map.insert(std::pair<const std::string, memcached_behavior>
100 (
"MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK", MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK));
101 behavior_map.insert(std::pair<const std::string, memcached_behavior>
102 (
"MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK", MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK));
104 dist_settings_map.insert(std::pair<const std::string, uint64_t>
105 (
"MEMCACHED_DISTRIBUTION_MODULA", MEMCACHED_DISTRIBUTION_MODULA));
106 dist_settings_map.insert(std::pair<const std::string, uint64_t>
107 (
"MEMCACHED_DISTRIBUTION_CONSISTENT", MEMCACHED_DISTRIBUTION_CONSISTENT));
108 dist_settings_map.insert(std::pair<const std::string, uint64_t>
109 (
"MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA", MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA));
111 hash_settings_map.insert(std::pair<const std::string, uint64_t>
112 (
"MEMCACHED_HASH_DEFAULT", MEMCACHED_HASH_DEFAULT));
113 hash_settings_map.insert(std::pair<const std::string, uint64_t>
114 (
"MEMCACHED_HASH_MD5", MEMCACHED_HASH_MD5));
115 hash_settings_map.insert(std::pair<const std::string, uint64_t>
116 (
"MEMCACHED_HASH_CRC", MEMCACHED_HASH_CRC));
117 hash_settings_map.insert(std::pair<const std::string, uint64_t>
118 (
"MEMCACHED_HASH_FNV1_64", MEMCACHED_HASH_FNV1_64));
119 hash_settings_map.insert(std::pair<const std::string, uint64_t>
120 (
"MEMCACHED_HASH_FNV1A_64", MEMCACHED_HASH_FNV1A_64));
121 hash_settings_map.insert(std::pair<const std::string, uint64_t>
122 (
"MEMCACHED_HASH_FNV1_32", MEMCACHED_HASH_FNV1_32));
123 hash_settings_map.insert(std::pair<const std::string, uint64_t>
124 (
"MEMCACHED_HASH_FNV1A_32", MEMCACHED_HASH_FNV1A_32));
125 hash_settings_map.insert(std::pair<const std::string, uint64_t>
126 (
"MEMCACHED_HASH_JENKINS", MEMCACHED_HASH_JENKINS));
127 hash_settings_map.insert(std::pair<const std::string, uint64_t>
128 (
"MEMCACHED_HASH_HSIEH", MEMCACHED_HASH_HSIEH));
129 hash_settings_map.insert(std::pair<const std::string, uint64_t>
130 (
"MEMCACHED_HASH_MURMUR", MEMCACHED_HASH_MURMUR));
132 ketama_hash_settings_map.insert(std::pair<const std::string, uint64_t>
133 (
"MEMCACHED_HASH_DEFAULT", MEMCACHED_HASH_DEFAULT));
134 ketama_hash_settings_map.insert(std::pair<const std::string, uint64_t>
135 (
"MEMCACHED_HASH_MD5", MEMCACHED_HASH_MD5));
136 ketama_hash_settings_map.insert(std::pair<const std::string, uint64_t>
137 (
"MEMCACHED_HASH_CRC", MEMCACHED_HASH_CRC));
138 ketama_hash_settings_map.insert(std::pair<const std::string, uint64_t>
139 (
"MEMCACHED_HASH_FNV1_64", MEMCACHED_HASH_FNV1_64));
140 ketama_hash_settings_map.insert(std::pair<const std::string, uint64_t>
141 (
"MEMCACHED_HASH_FNV1A_64", MEMCACHED_HASH_FNV1A_64));
142 ketama_hash_settings_map.insert(std::pair<const std::string, uint64_t>
143 (
"MEMCACHED_HASH_FNV1_32", MEMCACHED_HASH_FNV1_32));
144 ketama_hash_settings_map.insert(std::pair<const std::string, uint64_t>
145 (
"MEMCACHED_HASH_FNV1A_32", MEMCACHED_HASH_FNV1A_32));
148 const char *func_name()
const
150 return "memc_behavior_set";
155 void fix_length_and_dec()
161 void setFailureString(
const char *error);
166 std::map<const std::string, memcached_behavior> behavior_map;
167 std::map<const std::string, uint64_t> dist_settings_map;
168 std::map<const std::string, uint64_t> hash_settings_map;
169 std::map<const std::string, uint64_t> ketama_hash_settings_map;