28 #include <libmemcached/memcached.h>
43 memcached_return_t _rc;
46 memcached_server_st *_servers;
64 Memcache(
const std::string& servernames =
"localhost",
unsigned int timeout = 3600 ) {
70 _memc = memcached_create(NULL);
73 _servers = memcached_servers_parse( servernames.c_str() );
77 _rc = memcached_behavior_set( _memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, 1 );
78 _rc = memcached_behavior_set( _memc, MEMCACHED_BEHAVIOR_NO_BLOCK, 1 );
79 _rc = memcached_behavior_set( _memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, 1 );
80 _rc = memcached_behavior_set( _memc, MEMCACHED_BEHAVIOR_NOREPLY, 1 );
83 _rc = memcached_server_push( _memc, _servers );
84 if(_rc == MEMCACHED_SUCCESS ) _connected =
true;
85 else _connected =
false;
87 if( memcached_server_count(_memc) > 0 ) _connected =
true;
88 else _connected =
false;
95 if( _servers ) memcached_server_free(_servers);
96 if( _memc ) memcached_free(_memc);
105 void store(
const std::string& key,
void* data,
unsigned int length ){
107 if( !_connected )
return;
109 std::string k =
"iipsrv::" + key;
110 _rc = memcached_set( _memc, k.c_str(), k.length(),
111 (
char*) data, length,
122 if( !_connected )
return NULL;
125 std::string k =
"iipsrv::" + key;
126 return memcached_get( _memc, k.c_str(), k.length(), &_length, &flags, &_rc );
132 return memcached_strerror( _memc, _rc );
137 unsigned int length(){
return _length; };