34 #include <drizzled/item/func.h>
36 #include <libmemcached/memcached.h>
51 failure_buff(
"FAILURE", &drizzled::my_charset_bin),
52 return_buff(
"", &drizzled::my_charset_bin),
54 behavior_reverse_map(),
55 dist_settings_reverse_map(),
56 hash_settings_reverse_map(),
57 ketama_hash_settings_reverse_map()
64 behavior_map.insert(std::pair<const std::string, memcached_behavior>
65 (
"MEMCACHED_BEHAVIOR_SUPPORT_CAS", MEMCACHED_BEHAVIOR_SUPPORT_CAS));
66 behavior_map.insert(std::pair<const std::string, memcached_behavior>
67 (
"MEMCACHED_BEHAVIOR_NO_BLOCK", MEMCACHED_BEHAVIOR_NO_BLOCK));
68 behavior_map.insert(std::pair<const std::string, memcached_behavior>
69 (
"MEMCACHED_BEHAVIOR_TCP_NODELAY", MEMCACHED_BEHAVIOR_TCP_NODELAY));
70 behavior_map.insert(std::pair<const std::string, memcached_behavior>
71 (
"MEMCACHED_BEHAVIOR_HASH", MEMCACHED_BEHAVIOR_HASH));
72 behavior_map.insert(std::pair<const std::string, memcached_behavior>
73 (
"MEMCACHED_BEHAVIOR_CACHE_LOOKUPS", MEMCACHED_BEHAVIOR_CACHE_LOOKUPS));
74 behavior_map.insert(std::pair<const std::string, memcached_behavior>
75 (
"MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE", MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE));
76 behavior_map.insert(std::pair<const std::string, memcached_behavior>
77 (
"MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE", MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE));
78 behavior_map.insert(std::pair<const std::string, memcached_behavior>
79 (
"MEMCACHED_BEHAVIOR_BUFFER_REQUESTS", MEMCACHED_BEHAVIOR_BUFFER_REQUESTS));
80 behavior_map.insert(std::pair<const std::string, memcached_behavior>
81 (
"MEMCACHED_BEHAVIOR_KETAMA", MEMCACHED_BEHAVIOR_KETAMA));
82 behavior_map.insert(std::pair<const std::string, memcached_behavior>
83 (
"MEMCACHED_BEHAVIOR_POLL_TIMEOUT", MEMCACHED_BEHAVIOR_POLL_TIMEOUT));
84 behavior_map.insert(std::pair<const std::string, memcached_behavior>
85 (
"MEMCACHED_BEHAVIOR_RETRY_TIMEOUT", MEMCACHED_BEHAVIOR_RETRY_TIMEOUT));
86 behavior_map.insert(std::pair<const std::string, memcached_behavior>
87 (
"MEMCACHED_BEHAVIOR_DISTRIBUTION", MEMCACHED_BEHAVIOR_DISTRIBUTION));
88 behavior_map.insert(std::pair<const std::string, memcached_behavior>
89 (
"MEMCACHED_BEHAVIOR_USER_DATA", MEMCACHED_BEHAVIOR_USER_DATA));
90 behavior_map.insert(std::pair<const std::string, memcached_behavior>
91 (
"MEMCACHED_BEHAVIOR_SORT_HOSTS", MEMCACHED_BEHAVIOR_SORT_HOSTS));
92 behavior_map.insert(std::pair<const std::string, memcached_behavior>
93 (
"MEMCACHED_BEHAVIOR_VERIFY_KEY", MEMCACHED_BEHAVIOR_VERIFY_KEY));
94 behavior_map.insert(std::pair<const std::string, memcached_behavior>
95 (
"MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT", MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT));
96 behavior_map.insert(std::pair<const std::string, memcached_behavior>
97 (
"MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED", MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED));
98 behavior_map.insert(std::pair<const std::string, memcached_behavior>
99 (
"MEMCACHED_BEHAVIOR_KETAMA_HASH", MEMCACHED_BEHAVIOR_KETAMA_HASH));
100 behavior_map.insert(std::pair<const std::string, memcached_behavior>
101 (
"MEMCACHED_BEHAVIOR_BINARY_PROTOCOL", MEMCACHED_BEHAVIOR_BINARY_PROTOCOL));
102 behavior_map.insert(std::pair<const std::string, memcached_behavior>
103 (
"MEMCACHED_BEHAVIOR_SND_TIMEOUT", MEMCACHED_BEHAVIOR_SND_TIMEOUT));
104 behavior_map.insert(std::pair<const std::string, memcached_behavior>
105 (
"MEMCACHED_BEHAVIOR_RCV_TIMEOUT", MEMCACHED_BEHAVIOR_RCV_TIMEOUT));
106 behavior_map.insert(std::pair<const std::string, memcached_behavior>
107 (
"MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT", MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT));
108 behavior_map.insert(std::pair<const std::string, memcached_behavior>
109 (
"MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK", MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK));
110 behavior_map.insert(std::pair<const std::string, memcached_behavior>
111 (
"MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK", MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK));
119 behavior_reverse_map.insert(std::pair<memcached_behavior, const std::string>
120 (MEMCACHED_BEHAVIOR_SUPPORT_CAS,
"MEMCACHED_BEHAVIOR_SUPPORT_CAS"));
121 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
122 (MEMCACHED_BEHAVIOR_NO_BLOCK,
"MEMCACHED_BEHAVIOR_NO_BLOCK"));
123 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
124 (MEMCACHED_BEHAVIOR_TCP_NODELAY,
"MEMCACHED_BEHAVIOR_TCP_NODELAY"));
125 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
126 (MEMCACHED_BEHAVIOR_HASH,
"MEMCACHED_BEHAVIOR_HASH"));
127 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
128 (MEMCACHED_BEHAVIOR_CACHE_LOOKUPS,
"MEMCACHED_BEHAVIOR_CACHE_LOOKUPS"));
129 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
130 (MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE,
"MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE"));
131 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
132 (MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE,
"MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE"));
133 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
134 (MEMCACHED_BEHAVIOR_BUFFER_REQUESTS,
"MEMCACHED_BEHAVIOR_BUFFER_REQUESTS"));
135 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
136 (MEMCACHED_BEHAVIOR_KETAMA,
"MEMCACHED_BEHAVIOR_KETAMA"));
137 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
138 (MEMCACHED_BEHAVIOR_POLL_TIMEOUT,
"MEMCACHED_BEHAVIOR_POLL_TIMEOUT"));
139 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
140 (MEMCACHED_BEHAVIOR_RETRY_TIMEOUT,
"MEMCACHED_BEHAVIOR_RETRY_TIMEOUT"));
141 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
142 (MEMCACHED_BEHAVIOR_DISTRIBUTION,
"MEMCACHED_BEHAVIOR_DISTRIBUTION"));
143 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
144 (MEMCACHED_BEHAVIOR_USER_DATA,
"MEMCACHED_BEHAVIOR_USER_DATA"));
145 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
146 (MEMCACHED_BEHAVIOR_SORT_HOSTS,
"MEMCACHED_BEHAVIOR_SORT_HOSTS"));
147 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
148 (MEMCACHED_BEHAVIOR_VERIFY_KEY,
"MEMCACHED_BEHAVIOR_VERIFY_KEY"));
149 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
150 (MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT,
"MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT"));
151 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
152 (MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED,
"MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED"));
153 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
154 (MEMCACHED_BEHAVIOR_KETAMA_HASH,
"MEMCACHED_BEHAVIOR_KETAMA_HASH"));
155 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
156 (MEMCACHED_BEHAVIOR_BINARY_PROTOCOL,
"MEMCACHED_BEHAVIOR_BINARY_PROTOCOL"));
157 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
158 (MEMCACHED_BEHAVIOR_SND_TIMEOUT,
"MEMCACHED_BEHAVIOR_SND_TIMEOUT"));
159 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
160 (MEMCACHED_BEHAVIOR_RCV_TIMEOUT,
"MEMCACHED_BEHAVIOR_RCV_TIMEOUT"));
161 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
162 (MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT,
"MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT"));
163 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
164 (MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK,
"MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK"));
165 behavior_reverse_map.insert(std::pair<memcached_behavior,const std::string>
166 (MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK,
"MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK"));
173 dist_settings_reverse_map.insert(std::pair<uint64_t, const std::string>
174 (MEMCACHED_DISTRIBUTION_MODULA,
"MEMCACHED_DISTRIBUTION_MODULA"));
175 dist_settings_reverse_map.insert(std::pair<uint64_t, const std::string>
176 (MEMCACHED_DISTRIBUTION_CONSISTENT,
"MEMCACHED_DISTRIBUTION_CONSISTENT"));
177 dist_settings_reverse_map.insert(std::pair<uint64_t, const std::string>
178 (MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA,
"MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA"));
185 hash_settings_reverse_map.insert(std::pair<uint64_t, const std::string>
186 (MEMCACHED_HASH_DEFAULT,
"MEMCACHED_HASH_DEFAULT"));
187 hash_settings_reverse_map.insert(std::pair<uint64_t, const std::string>
188 (MEMCACHED_HASH_MD5,
"MEMCACHED_HASH_MD5"));
189 hash_settings_reverse_map.insert(std::pair<uint64_t, const std::string>
190 (MEMCACHED_HASH_CRC,
"MEMCACHED_HASH_CRC"));
191 hash_settings_reverse_map.insert(std::pair<uint64_t, const std::string>
192 (MEMCACHED_HASH_FNV1_64,
"MEMCACHED_HASH_FNV1_64"));
193 hash_settings_reverse_map.insert(std::pair<uint64_t, const std::string>
194 (MEMCACHED_HASH_FNV1A_64,
"MEMCACHED_HASH_FNV1A_64"));
195 hash_settings_reverse_map.insert(std::pair<uint64_t, const std::string>
196 (MEMCACHED_HASH_FNV1_32,
"MEMCACHED_HASH_FNV1_32"));
197 hash_settings_reverse_map.insert(std::pair<uint64_t, const std::string>
198 (MEMCACHED_HASH_FNV1A_32,
"MEMCACHED_HASH_FNV1A_32"));
199 hash_settings_reverse_map.insert(std::pair<uint64_t, const std::string>
200 (MEMCACHED_HASH_JENKINS,
"MEMCACHED_HASH_JENKINS"));
201 hash_settings_reverse_map.insert(std::pair<uint64_t, const std::string>
202 (MEMCACHED_HASH_HSIEH,
"MEMCACHED_HASH_HSIEH"));
203 hash_settings_reverse_map.insert(std::pair<uint64_t, const std::string>
204 (MEMCACHED_HASH_MURMUR,
"MEMCACHED_HASH_MURMUR"));
211 ketama_hash_settings_reverse_map.insert(std::pair<uint64_t, const std::string>
212 (MEMCACHED_HASH_DEFAULT,
"MEMCACHED_HASH_DEFAULT"));
213 ketama_hash_settings_reverse_map.insert(std::pair<uint64_t, const std::string>
214 (MEMCACHED_HASH_MD5,
"MEMCACHED_HASH_MD5"));
215 ketama_hash_settings_reverse_map.insert(std::pair<uint64_t, const std::string>
216 (MEMCACHED_HASH_CRC,
"MEMCACHED_HASH_CRC"));
217 ketama_hash_settings_reverse_map.insert(std::pair<uint64_t, const std::string>
218 (MEMCACHED_HASH_FNV1_64,
"MEMCACHED_HASH_FNV1_64"));
219 ketama_hash_settings_reverse_map.insert(std::pair<uint64_t, const std::string>
220 (MEMCACHED_HASH_FNV1A_64,
"MEMCACHED_HASH_FNV1A_64"));
221 ketama_hash_settings_reverse_map.insert(std::pair<uint64_t, const std::string>
222 (MEMCACHED_HASH_FNV1_32,
"MEMCACHED_HASH_FNV1_32"));
223 ketama_hash_settings_reverse_map.insert(std::pair<uint64_t, const std::string>
224 (MEMCACHED_HASH_FNV1A_32,
"MEMCACHED_HASH_FNV1A_32"));
227 const char *func_name()
const
229 return "memc_behavior_set";
234 void fix_length_and_dec()
240 void setFailureString(
const char *error);
248 std::map<const std::string, memcached_behavior> behavior_map;
249 std::map<memcached_behavior, const std::string> behavior_reverse_map;
250 std::map<uint64_t, const std::string> dist_settings_reverse_map;
251 std::map<uint64_t, const std::string> hash_settings_reverse_map;
252 std::map<uint64_t, const std::string> ketama_hash_settings_reverse_map;