33 #include <drizzled/item/func.h>
34 #include <drizzled/function/str/strfunc.h>
36 #include "memcached_functions.h"
39 #include <libmemcached/memcached.h>
45 using namespace drizzled;
47 void MemcachedBehaviorGet::setFailureString(
const char *error)
49 size_t size= strlen(error);
50 failure_buff.realloc(size);
51 failure_buff.length(size);
52 memcpy(failure_buff.ptr(), error, size);
60 ! (tmp_behavior= args[0]->val_str(str)) ||
63 setFailureString(
"USAGE: memc_behavior_get('<behavior type>')");
72 memcached_behavior* it = find_ptr(behavior_map, boost::to_upper_copy(
string(tmp_behavior->c_ptr())));
75 setFailureString(
"UNKNOWN BEHAVIOR TYPE!");
79 memcached_behavior mbehavior= *it;
81 uint64_t isetting= memcached_behavior_get(memc, mbehavior);
85 case MEMCACHED_BEHAVIOR_SUPPORT_CAS:
86 case MEMCACHED_BEHAVIOR_NO_BLOCK:
87 case MEMCACHED_BEHAVIOR_BUFFER_REQUESTS:
88 case MEMCACHED_BEHAVIOR_USER_DATA:
89 case MEMCACHED_BEHAVIOR_SORT_HOSTS:
90 case MEMCACHED_BEHAVIOR_VERIFY_KEY:
91 case MEMCACHED_BEHAVIOR_TCP_NODELAY:
92 case MEMCACHED_BEHAVIOR_KETAMA:
93 case MEMCACHED_BEHAVIOR_CACHE_LOOKUPS:
95 return_buff.append(
"1");
96 else if (isetting == 0)
97 return_buff.append(
"0");
100 setFailureString(
"INVALID VALUE FOR BEHAVIOR - MUST be 1 OR 0!");
101 return &failure_buff;
104 case MEMCACHED_BEHAVIOR_DISTRIBUTION:
106 string setting(dist_settings_reverse_map[isetting]);
107 return_buff.append(setting.c_str());
110 case MEMCACHED_BEHAVIOR_HASH:
112 string setting(hash_settings_reverse_map[isetting]);
113 return_buff.append(setting.c_str());
116 case MEMCACHED_BEHAVIOR_KETAMA_HASH:
118 string setting(ketama_hash_settings_reverse_map[isetting]);
119 return_buff.append(setting.c_str());
122 case MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE:
123 case MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE:
124 case MEMCACHED_BEHAVIOR_POLL_TIMEOUT:
125 case MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT:
126 case MEMCACHED_BEHAVIOR_RETRY_TIMEOUT:
127 case MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK:
128 case MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK:
130 size_t setting_len= 0;
133 snprintf(tmp_buff, 16,
"%"PRIu64, isetting);
134 setting_len= strlen(tmp_buff);
135 return_buff.realloc(setting_len);
136 return_buff.length(setting_len);
137 memcpy(return_buff.ptr(),tmp_buff, setting_len);
drizzled::String * val_str(drizzled::String *)