boourns-memcached 1.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/BENCHMARKS +128 -0
- data/CHANGELOG +158 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +41 -0
- data/LICENSE +184 -0
- data/Manifest +243 -0
- data/README.rdoc +124 -0
- data/Rakefile +118 -0
- data/TODO +4 -0
- data/ext/Makefile +213 -0
- data/ext/Makefile.in +213 -0
- data/ext/bin/memcat +0 -0
- data/ext/bin/memcp +0 -0
- data/ext/bin/memdump +0 -0
- data/ext/bin/memerror +0 -0
- data/ext/bin/memflush +0 -0
- data/ext/bin/memrm +0 -0
- data/ext/bin/memslap +0 -0
- data/ext/bin/memstat +0 -0
- data/ext/extconf-make.rb +25 -0
- data/ext/extconf.rb +87 -0
- data/ext/include/libmemcached/memcached.h +304 -0
- data/ext/include/libmemcached/memcached.hpp +799 -0
- data/ext/include/libmemcached/memcached_configure.h +23 -0
- data/ext/include/libmemcached/memcached_constants.h +145 -0
- data/ext/include/libmemcached/memcached_exist.h +20 -0
- data/ext/include/libmemcached/memcached_get.h +87 -0
- data/ext/include/libmemcached/memcached_result.h +59 -0
- data/ext/include/libmemcached/memcached_sasl.h +44 -0
- data/ext/include/libmemcached/memcached_server.h +93 -0
- data/ext/include/libmemcached/memcached_storage.h +107 -0
- data/ext/include/libmemcached/memcached_string.h +53 -0
- data/ext/include/libmemcached/memcached_touch.h +31 -0
- data/ext/include/libmemcached/memcached_types.h +44 -0
- data/ext/include/libmemcached/memcached_watchpoint.h +38 -0
- data/ext/include/libmemcached/visibility.h +51 -0
- data/ext/lib/libmemcached.a +0 -0
- data/ext/lib/libmemcached.la +41 -0
- data/ext/lib/libmemcached_gem.a +0 -0
- data/ext/lib/libmemcached_gem.la +41 -0
- data/ext/lib/pkgconfig/libmemcached.pc +10 -0
- data/ext/libmemcached-0.32/AUTHORS +7 -0
- data/ext/libmemcached-0.32/COPYING +32 -0
- data/ext/libmemcached-0.32/ChangeLog +303 -0
- data/ext/libmemcached-0.32/INSTALL +302 -0
- data/ext/libmemcached-0.32/Makefile +831 -0
- data/ext/libmemcached-0.32/Makefile.am +36 -0
- data/ext/libmemcached-0.32/Makefile.in +831 -0
- data/ext/libmemcached-0.32/NEWS +1 -0
- data/ext/libmemcached-0.32/README +33 -0
- data/ext/libmemcached-0.32/THANKS +14 -0
- data/ext/libmemcached-0.32/TODO +11 -0
- data/ext/libmemcached-0.32/aclocal.m4 +1917 -0
- data/ext/libmemcached-0.32/clients/Makefile +773 -0
- data/ext/libmemcached-0.32/clients/Makefile.am +80 -0
- data/ext/libmemcached-0.32/clients/Makefile.in +773 -0
- data/ext/libmemcached-0.32/clients/client_options.h +32 -0
- data/ext/libmemcached-0.32/clients/execute.c +64 -0
- data/ext/libmemcached-0.32/clients/execute.h +5 -0
- data/ext/libmemcached-0.32/clients/execute.lo +12 -0
- data/ext/libmemcached-0.32/clients/execute.o +0 -0
- data/ext/libmemcached-0.32/clients/generator.c +74 -0
- data/ext/libmemcached-0.32/clients/generator.h +20 -0
- data/ext/libmemcached-0.32/clients/generator.lo +12 -0
- data/ext/libmemcached-0.32/clients/generator.o +0 -0
- data/ext/libmemcached-0.32/clients/libgenexec.la +41 -0
- data/ext/libmemcached-0.32/clients/libutilities.la +41 -0
- data/ext/libmemcached-0.32/clients/memcat +0 -0
- data/ext/libmemcached-0.32/clients/memcat.c +178 -0
- data/ext/libmemcached-0.32/clients/memcat.o +0 -0
- data/ext/libmemcached-0.32/clients/memcp +0 -0
- data/ext/libmemcached-0.32/clients/memcp.c +251 -0
- data/ext/libmemcached-0.32/clients/memcp.o +0 -0
- data/ext/libmemcached-0.32/clients/memdump +0 -0
- data/ext/libmemcached-0.32/clients/memdump.c +170 -0
- data/ext/libmemcached-0.32/clients/memdump.o +0 -0
- data/ext/libmemcached-0.32/clients/memerror +0 -0
- data/ext/libmemcached-0.32/clients/memerror.c +80 -0
- data/ext/libmemcached-0.32/clients/memerror.o +0 -0
- data/ext/libmemcached-0.32/clients/memflush +0 -0
- data/ext/libmemcached-0.32/clients/memflush.c +143 -0
- data/ext/libmemcached-0.32/clients/memflush.o +0 -0
- data/ext/libmemcached-0.32/clients/memrm +0 -0
- data/ext/libmemcached-0.32/clients/memrm.c +160 -0
- data/ext/libmemcached-0.32/clients/memrm.o +0 -0
- data/ext/libmemcached-0.32/clients/memslap +0 -0
- data/ext/libmemcached-0.32/clients/memslap-memslap.o +0 -0
- data/ext/libmemcached-0.32/clients/memslap.c +441 -0
- data/ext/libmemcached-0.32/clients/memstat +0 -0
- data/ext/libmemcached-0.32/clients/memstat.c +326 -0
- data/ext/libmemcached-0.32/clients/memstat.o +0 -0
- data/ext/libmemcached-0.32/clients/utilities.c +207 -0
- data/ext/libmemcached-0.32/clients/utilities.h +41 -0
- data/ext/libmemcached-0.32/clients/utilities.lo +12 -0
- data/ext/libmemcached-0.32/clients/utilities.o +0 -0
- data/ext/libmemcached-0.32/config.h +253 -0
- data/ext/libmemcached-0.32/config.h.in +252 -0
- data/ext/libmemcached-0.32/config.log +2440 -0
- data/ext/libmemcached-0.32/config.status +2384 -0
- data/ext/libmemcached-0.32/config/compile +143 -0
- data/ext/libmemcached-0.32/config/config.guess +1561 -0
- data/ext/libmemcached-0.32/config/config.rpath +666 -0
- data/ext/libmemcached-0.32/config/config.sub +1686 -0
- data/ext/libmemcached-0.32/config/depcomp +630 -0
- data/ext/libmemcached-0.32/config/install-sh +520 -0
- data/ext/libmemcached-0.32/config/ltmain.sh +9636 -0
- data/ext/libmemcached-0.32/config/missing +376 -0
- data/ext/libmemcached-0.32/configure +23825 -0
- data/ext/libmemcached-0.32/configure.ac +122 -0
- data/ext/libmemcached-0.32/docs/Makefile +920 -0
- data/ext/libmemcached-0.32/docs/Makefile.am +415 -0
- data/ext/libmemcached-0.32/docs/Makefile.in +920 -0
- data/ext/libmemcached-0.32/docs/libmemcached.3 +229 -0
- data/ext/libmemcached-0.32/docs/libmemcached.pod +123 -0
- data/ext/libmemcached-0.32/docs/libmemcached_examples.3 +242 -0
- data/ext/libmemcached-0.32/docs/libmemcached_examples.pod +115 -0
- data/ext/libmemcached-0.32/docs/libmemcachedutil.pod +40 -0
- data/ext/libmemcached-0.32/docs/memcached_add.3 +308 -0
- data/ext/libmemcached-0.32/docs/memcached_add_by_key.3 +308 -0
- data/ext/libmemcached-0.32/docs/memcached_analyze.3 +175 -0
- data/ext/libmemcached-0.32/docs/memcached_analyze.pod +52 -0
- data/ext/libmemcached-0.32/docs/memcached_append.3 +308 -0
- data/ext/libmemcached-0.32/docs/memcached_append_by_key.3 +308 -0
- data/ext/libmemcached-0.32/docs/memcached_auto.pod +97 -0
- data/ext/libmemcached-0.32/docs/memcached_behavior.pod +224 -0
- data/ext/libmemcached-0.32/docs/memcached_behavior_get.3 +317 -0
- data/ext/libmemcached-0.32/docs/memcached_behavior_set.3 +317 -0
- data/ext/libmemcached-0.32/docs/memcached_callback.pod +123 -0
- data/ext/libmemcached-0.32/docs/memcached_callback_get.3 +231 -0
- data/ext/libmemcached-0.32/docs/memcached_callback_set.3 +231 -0
- data/ext/libmemcached-0.32/docs/memcached_cas.3 +308 -0
- data/ext/libmemcached-0.32/docs/memcached_cas_by_key.3 +308 -0
- data/ext/libmemcached-0.32/docs/memcached_clone.3 +183 -0
- data/ext/libmemcached-0.32/docs/memcached_create.3 +183 -0
- data/ext/libmemcached-0.32/docs/memcached_create.pod +61 -0
- data/ext/libmemcached-0.32/docs/memcached_decrement.3 +219 -0
- data/ext/libmemcached-0.32/docs/memcached_decrement_with_initial.3 +219 -0
- data/ext/libmemcached-0.32/docs/memcached_delete.3 +176 -0
- data/ext/libmemcached-0.32/docs/memcached_delete.pod +54 -0
- data/ext/libmemcached-0.32/docs/memcached_delete_by_key.3 +176 -0
- data/ext/libmemcached-0.32/docs/memcached_destroy_sasl_auth_data.3 +184 -0
- data/ext/libmemcached-0.32/docs/memcached_dump.3 +175 -0
- data/ext/libmemcached-0.32/docs/memcached_dump.pod +53 -0
- data/ext/libmemcached-0.32/docs/memcached_fetch.3 +283 -0
- data/ext/libmemcached-0.32/docs/memcached_fetch_execute.3 +283 -0
- data/ext/libmemcached-0.32/docs/memcached_fetch_result.3 +283 -0
- data/ext/libmemcached-0.32/docs/memcached_flush.pod +46 -0
- data/ext/libmemcached-0.32/docs/memcached_flush_buffers.3 +164 -0
- data/ext/libmemcached-0.32/docs/memcached_flush_buffers.pod +42 -0
- data/ext/libmemcached-0.32/docs/memcached_free.3 +183 -0
- data/ext/libmemcached-0.32/docs/memcached_generate_hash_value.3 +179 -0
- data/ext/libmemcached-0.32/docs/memcached_generate_hash_value.pod +57 -0
- data/ext/libmemcached-0.32/docs/memcached_get.3 +283 -0
- data/ext/libmemcached-0.32/docs/memcached_get.pod +161 -0
- data/ext/libmemcached-0.32/docs/memcached_get_by_key.3 +283 -0
- data/ext/libmemcached-0.32/docs/memcached_get_memory_allocators.3 +194 -0
- data/ext/libmemcached-0.32/docs/memcached_get_sasl_callbacks.3 +184 -0
- data/ext/libmemcached-0.32/docs/memcached_get_user_data.3 +171 -0
- data/ext/libmemcached-0.32/docs/memcached_increment.3 +219 -0
- data/ext/libmemcached-0.32/docs/memcached_increment_with_initial.3 +219 -0
- data/ext/libmemcached-0.32/docs/memcached_lib_version.3 +176 -0
- data/ext/libmemcached-0.32/docs/memcached_memory_allocators.pod +73 -0
- data/ext/libmemcached-0.32/docs/memcached_mget.3 +283 -0
- data/ext/libmemcached-0.32/docs/memcached_mget_by_key.3 +283 -0
- data/ext/libmemcached-0.32/docs/memcached_pool.pod +77 -0
- data/ext/libmemcached-0.32/docs/memcached_prepend.3 +308 -0
- data/ext/libmemcached-0.32/docs/memcached_prepend_by_key.3 +308 -0
- data/ext/libmemcached-0.32/docs/memcached_quit.3 +169 -0
- data/ext/libmemcached-0.32/docs/memcached_quit.pod +47 -0
- data/ext/libmemcached-0.32/docs/memcached_replace.3 +308 -0
- data/ext/libmemcached-0.32/docs/memcached_replace_by_key.3 +308 -0
- data/ext/libmemcached-0.32/docs/memcached_sasl.pod +63 -0
- data/ext/libmemcached-0.32/docs/memcached_server_add.3 +224 -0
- data/ext/libmemcached-0.32/docs/memcached_server_count.3 +224 -0
- data/ext/libmemcached-0.32/docs/memcached_server_list.3 +224 -0
- data/ext/libmemcached-0.32/docs/memcached_server_list_append.3 +196 -0
- data/ext/libmemcached-0.32/docs/memcached_server_list_count.3 +196 -0
- data/ext/libmemcached-0.32/docs/memcached_server_list_free.3 +196 -0
- data/ext/libmemcached-0.32/docs/memcached_server_push.3 +224 -0
- data/ext/libmemcached-0.32/docs/memcached_server_st.pod +75 -0
- data/ext/libmemcached-0.32/docs/memcached_servers.pod +102 -0
- data/ext/libmemcached-0.32/docs/memcached_servers_parse.3 +196 -0
- data/ext/libmemcached-0.32/docs/memcached_set.3 +308 -0
- data/ext/libmemcached-0.32/docs/memcached_set.pod +187 -0
- data/ext/libmemcached-0.32/docs/memcached_set_by_key.3 +308 -0
- data/ext/libmemcached-0.32/docs/memcached_set_memory_allocators.3 +194 -0
- data/ext/libmemcached-0.32/docs/memcached_set_sasl_auth_data.3 +184 -0
- data/ext/libmemcached-0.32/docs/memcached_set_sasl_callbacks.3 +184 -0
- data/ext/libmemcached-0.32/docs/memcached_set_user_data.3 +171 -0
- data/ext/libmemcached-0.32/docs/memcached_stat.3 +204 -0
- data/ext/libmemcached-0.32/docs/memcached_stat_get_keys.3 +204 -0
- data/ext/libmemcached-0.32/docs/memcached_stat_get_value.3 +204 -0
- data/ext/libmemcached-0.32/docs/memcached_stat_servername.3 +204 -0
- data/ext/libmemcached-0.32/docs/memcached_stats.pod +82 -0
- data/ext/libmemcached-0.32/docs/memcached_strerror.3 +168 -0
- data/ext/libmemcached-0.32/docs/memcached_strerror.pod +46 -0
- data/ext/libmemcached-0.32/docs/memcached_user_data.pod +49 -0
- data/ext/libmemcached-0.32/docs/memcached_verbosity.3 +163 -0
- data/ext/libmemcached-0.32/docs/memcached_verbosity.pod +41 -0
- data/ext/libmemcached-0.32/docs/memcached_version.3 +176 -0
- data/ext/libmemcached-0.32/docs/memcached_version.pod +56 -0
- data/ext/libmemcached-0.32/docs/memcat.1 +161 -0
- data/ext/libmemcached-0.32/docs/memcat.pod +37 -0
- data/ext/libmemcached-0.32/docs/memcp.1 +164 -0
- data/ext/libmemcached-0.32/docs/memcp.pod +40 -0
- data/ext/libmemcached-0.32/docs/memdump.1 +155 -0
- data/ext/libmemcached-0.32/docs/memdump.pod +31 -0
- data/ext/libmemcached-0.32/docs/memerror.1 +154 -0
- data/ext/libmemcached-0.32/docs/memerror.pod +30 -0
- data/ext/libmemcached-0.32/docs/memflush.1 +159 -0
- data/ext/libmemcached-0.32/docs/memflush.pod +35 -0
- data/ext/libmemcached-0.32/docs/memrm.1 +158 -0
- data/ext/libmemcached-0.32/docs/memrm.pod +34 -0
- data/ext/libmemcached-0.32/docs/memslap.1 +157 -0
- data/ext/libmemcached-0.32/docs/memslap.pod +33 -0
- data/ext/libmemcached-0.32/docs/memstat.1 +159 -0
- data/ext/libmemcached-0.32/docs/memstat.pod +35 -0
- data/ext/libmemcached-0.32/libmemcached/Makefile +1069 -0
- data/ext/libmemcached-0.32/libmemcached/Makefile.am +111 -0
- data/ext/libmemcached-0.32/libmemcached/Makefile.in +1069 -0
- data/ext/libmemcached-0.32/libmemcached/byteorder.c +31 -0
- data/ext/libmemcached-0.32/libmemcached/common.h +189 -0
- data/ext/libmemcached-0.32/libmemcached/crc.c +86 -0
- data/ext/libmemcached-0.32/libmemcached/hsieh_hash.c +68 -0
- data/ext/libmemcached-0.32/libmemcached/jenkins_hash.c +213 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached.la +41 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached.ver +1 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-byteorder.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-byteorder.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-crc.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-crc.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-jenkins_hash.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-jenkins_hash.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-md5.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-md5.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_allocators.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_allocators.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_analyze.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_analyze.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_auto.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_auto.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_behavior.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_behavior.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_connect.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_connect.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_delete.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_delete.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_do.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_do.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_dump.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_dump.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_exist.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_exist.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_fetch.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_fetch.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_flush.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_flush.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_flush_buffers.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_flush_buffers.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_get.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_get.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_hash.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_hash.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_hosts.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_hosts.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_io.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_io.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_key.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_key.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_parse.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_parse.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_purge.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_purge.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_quit.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_quit.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_response.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_response.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_result.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_result.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_sasl.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_sasl.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_server.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_server.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_stats.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_stats.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_storage.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_storage.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_strerror.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_strerror.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_string.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_string.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_touch.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_touch.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_verbosity.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_verbosity.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_version.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_version.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-murmur_hash.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_la-murmur_hash.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_probes.d +30 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_probes.h +82 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcachedcallbacks.la +41 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcachedcallbacks_la-memcached_callback.lo +12 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcachedcallbacks_la-memcached_callback.o +0 -0
- data/ext/libmemcached-0.32/libmemcached/md5.c +354 -0
- data/ext/libmemcached-0.32/libmemcached/memcached.c +152 -0
- data/ext/libmemcached-0.32/libmemcached/memcached.h +304 -0
- data/ext/libmemcached-0.32/libmemcached/memcached.hpp +799 -0
- data/ext/libmemcached-0.32/libmemcached/memcached/README.txt +7 -0
- data/ext/libmemcached-0.32/libmemcached/memcached/protocol_binary.h +385 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_allocators.c +72 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_analyze.c +100 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_auto.c +207 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_behavior.c +285 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_callback.c +175 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_configure.h +23 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_configure.h.in +23 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_connect.c +371 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_constants.h +145 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_delete.c +0 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_do.c +70 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_dump.c +79 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_exist.c +114 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_exist.h +20 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_fetch.c +102 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_flush.c +89 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_flush_buffers.c +22 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_get.c +494 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_get.h +87 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_hash.c +252 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_hosts.c +510 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_internal.h +31 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_io.c +575 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_io.h +72 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_key.c +28 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_parse.c +74 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_pool.h +38 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_purge.c +76 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_quit.c +75 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_response.c +529 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_result.c +57 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_result.h +59 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_sasl.c +225 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_sasl.h +44 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_server.c +159 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_server.h +93 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_stats.c +437 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_storage.c +515 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_storage.h +107 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_strerror.c +92 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_string.c +138 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_string.h +53 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_touch.c +60 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_touch.h +31 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_types.h +44 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_util.h +15 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_verbosity.c +36 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_version.c +112 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_watchpoint.h +38 -0
- data/ext/libmemcached-0.32/libmemcached/murmur_hash.c +76 -0
- data/ext/libmemcached-0.32/libmemcached/visibility.h +51 -0
- data/ext/libmemcached-0.32/libmemcachedutil/Makefile +604 -0
- data/ext/libmemcached-0.32/libmemcachedutil/Makefile.am +11 -0
- data/ext/libmemcached-0.32/libmemcachedutil/Makefile.in +604 -0
- data/ext/libmemcached-0.32/libmemcachedutil/libmemcachedutil.ver +1 -0
- data/ext/libmemcached-0.32/libmemcachedutil/memcached_pool.c +170 -0
- data/ext/libmemcached-0.32/libtool +10223 -0
- data/ext/libmemcached-0.32/m4/ac_cxx_compile_stdcxx_0x.m4 +103 -0
- data/ext/libmemcached-0.32/m4/ac_cxx_header_stdcxx_98.m4 +67 -0
- data/ext/libmemcached-0.32/m4/acx_pthread.m4 +276 -0
- data/ext/libmemcached-0.32/m4/byteorder.m4 +40 -0
- data/ext/libmemcached-0.32/m4/deprecated.m4 +17 -0
- data/ext/libmemcached-0.32/m4/enable_utillib.m4 +16 -0
- data/ext/libmemcached-0.32/m4/extensions.m4 +94 -0
- data/ext/libmemcached-0.32/m4/hsieh.m4 +18 -0
- data/ext/libmemcached-0.32/m4/lib-prefix.m4 +221 -0
- data/ext/libmemcached-0.32/m4/libtool.m4 +7831 -0
- data/ext/libmemcached-0.32/m4/ltoptions.m4 +369 -0
- data/ext/libmemcached-0.32/m4/ltsugar.m4 +123 -0
- data/ext/libmemcached-0.32/m4/ltversion.m4 +23 -0
- data/ext/libmemcached-0.32/m4/lt~obsolete.m4 +98 -0
- data/ext/libmemcached-0.32/m4/memcached.m4 +30 -0
- data/ext/libmemcached-0.32/m4/pandora_64bit.m4 +55 -0
- data/ext/libmemcached-0.32/m4/pandora_canonical.m4 +151 -0
- data/ext/libmemcached-0.32/m4/pandora_check_compiler_version.m4 +37 -0
- data/ext/libmemcached-0.32/m4/pandora_check_cxx_standard.m4 +16 -0
- data/ext/libmemcached-0.32/m4/pandora_enable_dtrace.m4 +41 -0
- data/ext/libmemcached-0.32/m4/pandora_ensure_gcc_version.m4 +36 -0
- data/ext/libmemcached-0.32/m4/pandora_have_better_malloc.m4 +54 -0
- data/ext/libmemcached-0.32/m4/pandora_have_sasl.m4 +133 -0
- data/ext/libmemcached-0.32/m4/pandora_header_assert.m4 +23 -0
- data/ext/libmemcached-0.32/m4/pandora_libtool.m4 +15 -0
- data/ext/libmemcached-0.32/m4/pandora_optimize.m4 +79 -0
- data/ext/libmemcached-0.32/m4/pandora_shared_ptr.m4 +56 -0
- data/ext/libmemcached-0.32/m4/pandora_vc_build.m4 +32 -0
- data/ext/libmemcached-0.32/m4/pandora_warnings.m4 +262 -0
- data/ext/libmemcached-0.32/m4/pod2man.m4 +7 -0
- data/ext/libmemcached-0.32/m4/protocol_binary.m4 +23 -0
- data/ext/libmemcached-0.32/m4/setsockopt.m4 +57 -0
- data/ext/libmemcached-0.32/m4/visibility.m4 +52 -0
- data/ext/libmemcached-0.32/stamp-h1 +1 -0
- data/ext/libmemcached-0.32/support/Makefile +487 -0
- data/ext/libmemcached-0.32/support/Makefile.am +4 -0
- data/ext/libmemcached-0.32/support/Makefile.in +487 -0
- data/ext/libmemcached-0.32/support/libmemcached-fc.spec +105 -0
- data/ext/libmemcached-0.32/support/libmemcached-fc.spec.in +105 -0
- data/ext/libmemcached-0.32/support/libmemcached.pc +10 -0
- data/ext/libmemcached-0.32/support/libmemcached.pc.in +10 -0
- data/ext/libmemcached-0.32/support/libmemcached.spec +105 -0
- data/ext/libmemcached-0.32/support/libmemcached.spec.in +105 -0
- data/ext/libmemcached-0.32/support/set_benchmark.sh +5 -0
- data/ext/libmemcached-0.32/tests/Makefile +762 -0
- data/ext/libmemcached-0.32/tests/Makefile.am +113 -0
- data/ext/libmemcached-0.32/tests/Makefile.in +762 -0
- data/ext/libmemcached-0.32/tests/atomsmasher +0 -0
- data/ext/libmemcached-0.32/tests/atomsmasher.c +245 -0
- data/ext/libmemcached-0.32/tests/atomsmasher.o +0 -0
- data/ext/libmemcached-0.32/tests/function.c +4893 -0
- data/ext/libmemcached-0.32/tests/ketama_test_cases.h +108 -0
- data/ext/libmemcached-0.32/tests/libserver.la +41 -0
- data/ext/libmemcached-0.32/tests/libtest.la +41 -0
- data/ext/libmemcached-0.32/tests/output.cmp +7 -0
- data/ext/libmemcached-0.32/tests/output.res +7 -0
- data/ext/libmemcached-0.32/tests/output2.res +46 -0
- data/ext/libmemcached-0.32/tests/plus.cpp +293 -0
- data/ext/libmemcached-0.32/tests/plus.o +0 -0
- data/ext/libmemcached-0.32/tests/r/memcat.res +19 -0
- data/ext/libmemcached-0.32/tests/r/memcp.res +27 -0
- data/ext/libmemcached-0.32/tests/r/memrm.res +19 -0
- data/ext/libmemcached-0.32/tests/r/memslap.res +33 -0
- data/ext/libmemcached-0.32/tests/r/memstat.res +33 -0
- data/ext/libmemcached-0.32/tests/server.c +118 -0
- data/ext/libmemcached-0.32/tests/server.h +25 -0
- data/ext/libmemcached-0.32/tests/server.lo +12 -0
- data/ext/libmemcached-0.32/tests/server.o +0 -0
- data/ext/libmemcached-0.32/tests/start.c +16 -0
- data/ext/libmemcached-0.32/tests/start.o +0 -0
- data/ext/libmemcached-0.32/tests/startservers +0 -0
- data/ext/libmemcached-0.32/tests/t/memcat.test +4 -0
- data/ext/libmemcached-0.32/tests/t/memcp.test +3 -0
- data/ext/libmemcached-0.32/tests/t/memrm.test +3 -0
- data/ext/libmemcached-0.32/tests/t/memslap.test +5 -0
- data/ext/libmemcached-0.32/tests/t/memstat.test +3 -0
- data/ext/libmemcached-0.32/tests/test.c +137 -0
- data/ext/libmemcached-0.32/tests/test.h +46 -0
- data/ext/libmemcached-0.32/tests/test.lo +12 -0
- data/ext/libmemcached-0.32/tests/test.o +0 -0
- data/ext/libmemcached-0.32/tests/testapp +0 -0
- data/ext/libmemcached-0.32/tests/testapp-function.o +0 -0
- data/ext/libmemcached-0.32/tests/testplus +0 -0
- data/ext/libmemcached-0.32/tests/udp.c +76 -0
- data/ext/libmemcached-0.32/tests/udp.o +0 -0
- data/ext/libmemcached-0.32/tests/udptest +0 -0
- data/ext/rlibmemcached.bundle +0 -0
- data/ext/rlibmemcached.i +249 -0
- data/ext/rlibmemcached_wrap.c +13781 -0
- data/ext/rlibmemcached_wrap.o +0 -0
- data/ext/share/man/man1/memcat.1 +161 -0
- data/ext/share/man/man1/memcp.1 +164 -0
- data/ext/share/man/man1/memdump.1 +155 -0
- data/ext/share/man/man1/memerror.1 +154 -0
- data/ext/share/man/man1/memflush.1 +159 -0
- data/ext/share/man/man1/memrm.1 +158 -0
- data/ext/share/man/man1/memslap.1 +157 -0
- data/ext/share/man/man1/memstat.1 +159 -0
- data/ext/share/man/man3/libmemcached.3 +229 -0
- data/ext/share/man/man3/libmemcached_examples.3 +242 -0
- data/ext/share/man/man3/memcached_add.3 +308 -0
- data/ext/share/man/man3/memcached_add_by_key.3 +308 -0
- data/ext/share/man/man3/memcached_analyze.3 +175 -0
- data/ext/share/man/man3/memcached_append.3 +308 -0
- data/ext/share/man/man3/memcached_append_by_key.3 +308 -0
- data/ext/share/man/man3/memcached_behavior_get.3 +317 -0
- data/ext/share/man/man3/memcached_behavior_set.3 +317 -0
- data/ext/share/man/man3/memcached_callback_get.3 +231 -0
- data/ext/share/man/man3/memcached_callback_set.3 +231 -0
- data/ext/share/man/man3/memcached_cas.3 +308 -0
- data/ext/share/man/man3/memcached_cas_by_key.3 +308 -0
- data/ext/share/man/man3/memcached_clone.3 +183 -0
- data/ext/share/man/man3/memcached_create.3 +183 -0
- data/ext/share/man/man3/memcached_decrement.3 +219 -0
- data/ext/share/man/man3/memcached_decrement_with_initial.3 +219 -0
- data/ext/share/man/man3/memcached_delete.3 +176 -0
- data/ext/share/man/man3/memcached_delete_by_key.3 +176 -0
- data/ext/share/man/man3/memcached_destroy_sasl_auth_data.3 +184 -0
- data/ext/share/man/man3/memcached_dump.3 +175 -0
- data/ext/share/man/man3/memcached_fetch.3 +283 -0
- data/ext/share/man/man3/memcached_fetch_execute.3 +283 -0
- data/ext/share/man/man3/memcached_fetch_result.3 +283 -0
- data/ext/share/man/man3/memcached_flush_buffers.3 +164 -0
- data/ext/share/man/man3/memcached_free.3 +183 -0
- data/ext/share/man/man3/memcached_generate_hash_value.3 +179 -0
- data/ext/share/man/man3/memcached_get.3 +283 -0
- data/ext/share/man/man3/memcached_get_by_key.3 +283 -0
- data/ext/share/man/man3/memcached_get_memory_allocators.3 +194 -0
- data/ext/share/man/man3/memcached_get_sasl_callbacks.3 +184 -0
- data/ext/share/man/man3/memcached_get_user_data.3 +171 -0
- data/ext/share/man/man3/memcached_increment.3 +219 -0
- data/ext/share/man/man3/memcached_increment_with_initial.3 +219 -0
- data/ext/share/man/man3/memcached_lib_version.3 +176 -0
- data/ext/share/man/man3/memcached_mget.3 +283 -0
- data/ext/share/man/man3/memcached_mget_by_key.3 +283 -0
- data/ext/share/man/man3/memcached_prepend.3 +308 -0
- data/ext/share/man/man3/memcached_prepend_by_key.3 +308 -0
- data/ext/share/man/man3/memcached_quit.3 +169 -0
- data/ext/share/man/man3/memcached_replace.3 +308 -0
- data/ext/share/man/man3/memcached_replace_by_key.3 +308 -0
- data/ext/share/man/man3/memcached_server_add.3 +224 -0
- data/ext/share/man/man3/memcached_server_count.3 +224 -0
- data/ext/share/man/man3/memcached_server_list.3 +224 -0
- data/ext/share/man/man3/memcached_server_list_append.3 +196 -0
- data/ext/share/man/man3/memcached_server_list_count.3 +196 -0
- data/ext/share/man/man3/memcached_server_list_free.3 +196 -0
- data/ext/share/man/man3/memcached_server_push.3 +224 -0
- data/ext/share/man/man3/memcached_servers_parse.3 +196 -0
- data/ext/share/man/man3/memcached_set.3 +308 -0
- data/ext/share/man/man3/memcached_set_by_key.3 +308 -0
- data/ext/share/man/man3/memcached_set_memory_allocators.3 +194 -0
- data/ext/share/man/man3/memcached_set_sasl_auth_data.3 +184 -0
- data/ext/share/man/man3/memcached_set_sasl_callbacks.3 +184 -0
- data/ext/share/man/man3/memcached_set_user_data.3 +171 -0
- data/ext/share/man/man3/memcached_stat.3 +204 -0
- data/ext/share/man/man3/memcached_stat_get_keys.3 +204 -0
- data/ext/share/man/man3/memcached_stat_get_value.3 +204 -0
- data/ext/share/man/man3/memcached_stat_servername.3 +204 -0
- data/ext/share/man/man3/memcached_strerror.3 +168 -0
- data/ext/share/man/man3/memcached_verbosity.3 +163 -0
- data/ext/share/man/man3/memcached_version.3 +176 -0
- data/lib/memcached.rb +32 -0
- data/lib/memcached/behaviors.rb +77 -0
- data/lib/memcached/exceptions.rb +84 -0
- data/lib/memcached/experimental.rb +48 -0
- data/lib/memcached/memcached.rb +683 -0
- data/lib/memcached/rails.rb +200 -0
- data/test/test_helper.rb +19 -0
- data/test/unit/binding_test.rb +8 -0
- data/test/unit/memcached_experimental_test.rb +274 -0
- data/test/unit/memcached_test.rb +1340 -0
- data/test/unit/rails_test.rb +282 -0
- metadata +658 -0
data/ext/extconf.rb
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'mkmf'
|
2
|
+
require 'rbconfig'
|
3
|
+
|
4
|
+
HERE = File.expand_path(File.dirname(__FILE__))
|
5
|
+
BUNDLE_PATH = Dir.glob("libmemcached-*").first
|
6
|
+
|
7
|
+
SOLARIS_32 = Config::CONFIG['target'] == "i386-pc-solaris2.10"
|
8
|
+
BSD = Config::CONFIG['host_os'].downcase =~ /bsd/
|
9
|
+
|
10
|
+
$CFLAGS = "#{Config::CONFIG['CFLAGS']} #{$CFLAGS}".gsub("$(cflags)", "").gsub("-fno-common", "").gsub("-Werror=declaration-after-statement", "")
|
11
|
+
$CFLAGS << " -std=gnu99" if SOLARIS_32
|
12
|
+
$CFLAGS << " -I/usr/local/include" if BSD
|
13
|
+
$EXTRA_CONF = " --disable-64bit" if SOLARIS_32
|
14
|
+
$LDFLAGS = "#{Config::CONFIG['LDFLAGS']} #{$LDFLAGS} -L#{Config::CONFIG['libdir']}".gsub("$(ldflags)", "").gsub("-fno-common", "")
|
15
|
+
$CXXFLAGS = "#{Config::CONFIG['CXXFLAGS']} -std=gnu++98"
|
16
|
+
$CC = "CC=#{Config::MAKEFILE_CONFIG["CC"].inspect}"
|
17
|
+
|
18
|
+
# JRuby's default configure options can't build libmemcached properly
|
19
|
+
LIBM_CFLAGS = defined?(JRUBY_VERSION) ? "-fPIC -g -O2" : $CFLAGS
|
20
|
+
LIBM_LDFLAGS = defined?(JRUBY_VERSION) ? "-fPIC -lsasl2 -lm" : $LDFLAGS
|
21
|
+
|
22
|
+
GMAKE_CMD = Config::CONFIG['host_os'].downcase =~ /bsd|solaris/ ? "gmake" : "make"
|
23
|
+
TAR_CMD = SOLARIS_32 ? 'gtar' : 'tar'
|
24
|
+
PATCH_CMD = SOLARIS_32 ? 'gpatch' : 'patch'
|
25
|
+
|
26
|
+
if ENV['DEBUG']
|
27
|
+
puts "Setting debug flags."
|
28
|
+
$CFLAGS << " -O0 -ggdb -DHAVE_DEBUG"
|
29
|
+
$EXTRA_CONF = ""
|
30
|
+
end
|
31
|
+
|
32
|
+
def run(cmd, reason)
|
33
|
+
puts reason
|
34
|
+
puts cmd
|
35
|
+
raise "'#{cmd}' failed" unless system(cmd)
|
36
|
+
end
|
37
|
+
|
38
|
+
def check_libmemcached
|
39
|
+
return if ENV["EXTERNAL_LIB"]
|
40
|
+
|
41
|
+
$includes = " -I#{HERE}/include"
|
42
|
+
$defines = " -DLIBMEMCACHED_WITH_SASL_SUPPORT"
|
43
|
+
$libraries = " -L#{HERE}/lib"
|
44
|
+
$CFLAGS = "#{$includes} #{$libraries} #{$CFLAGS}"
|
45
|
+
$LDFLAGS = "-lsasl2 -lm #{$libraries} #{$LDFLAGS}"
|
46
|
+
$LIBPATH = ["#{HERE}/lib"]
|
47
|
+
$DEFLIBPATH = [] unless SOLARIS_32
|
48
|
+
|
49
|
+
Dir.chdir(HERE) do
|
50
|
+
Dir.chdir(BUNDLE_PATH) do
|
51
|
+
run("find . | xargs touch", "Touching all files so autoconf doesn't run.")
|
52
|
+
run("env CFLAGS='-fPIC #{LIBM_CFLAGS}' LDFLAGS='-fPIC #{LIBM_LDFLAGS}' ./configure --prefix=#{HERE} --without-memcached --disable-shared --disable-utils --disable-dependency-tracking #{$CC} #{$EXTRA_CONF} 2>&1", "Configuring libmemcached.")
|
53
|
+
end
|
54
|
+
|
55
|
+
Dir.chdir(BUNDLE_PATH) do
|
56
|
+
#Running the make command in another script invoked by another shell command solves the "cd ." issue on FreeBSD 6+
|
57
|
+
run("GMAKE_CMD='#{GMAKE_CMD}' CXXFLAGS='#{$CXXFLAGS} #{LIBM_CFLAGS}' SOURCE_DIR='#{BUNDLE_PATH}' HERE='#{HERE}' ruby ../extconf-make.rb", "Making libmemcached.")
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# Absolutely prevent the linker from picking up any other libmemcached
|
62
|
+
Dir.chdir("#{HERE}/lib") do
|
63
|
+
system("cp -f libmemcached.a libmemcached_gem.a")
|
64
|
+
system("cp -f libmemcached.la libmemcached_gem.la")
|
65
|
+
end
|
66
|
+
$LIBS << " -lmemcached_gem -lsasl2"
|
67
|
+
end
|
68
|
+
|
69
|
+
check_libmemcached
|
70
|
+
|
71
|
+
if ENV['SWIG']
|
72
|
+
puts "WARNING: Swig 2.0.2 not found. Other versions may not work." if (`swig -version`!~ /2.0.2/)
|
73
|
+
run("swig #{$defines} #{$includes} -ruby -autorename -o rlibmemcached_wrap.c.in rlibmemcached.i", "Running SWIG.")
|
74
|
+
swig_patches = {
|
75
|
+
"STR2CSTR" => "StringValuePtr", # Patching SWIG output for Ruby 1.9.
|
76
|
+
"\"swig_runtime_data\"" => "\"SwigRuntimeData\"", # Patching SWIG output for Ruby 1.9.
|
77
|
+
"#ifndef RUBY_INIT_STACK" => "#ifdef __NEVER__", # Patching SWIG output for JRuby.
|
78
|
+
}.map{|pair| "s/#{pair.join('/')}/"}.join(';')
|
79
|
+
|
80
|
+
# sed has different syntax for inplace switch in BSD and GNU version, so using intermediate file
|
81
|
+
run("sed '#{swig_patches}' rlibmemcached_wrap.c.in > rlibmemcached_wrap.c", "Apply patches to SWIG output")
|
82
|
+
end
|
83
|
+
|
84
|
+
$CFLAGS << " -Os"
|
85
|
+
create_makefile 'rlibmemcached'
|
86
|
+
run("mv Makefile Makefile.in", "Copy Makefile")
|
87
|
+
run("sed 's/-I.opt.local.include//' Makefile.in > Makefile", "Remove MacPorts from the include path")
|
@@ -0,0 +1,304 @@
|
|
1
|
+
/*
|
2
|
+
* Summary: interface for memcached server
|
3
|
+
* Description: main include file for libmemcached
|
4
|
+
*
|
5
|
+
* Copy: See Copyright for the status of this software.
|
6
|
+
*
|
7
|
+
* Author: Brian Aker
|
8
|
+
*/
|
9
|
+
|
10
|
+
#ifndef LIBMEMCACHED_MEMCACHED_H
|
11
|
+
#define LIBMEMCACHED_MEMCACHED_H
|
12
|
+
|
13
|
+
#include <stdlib.h>
|
14
|
+
#include <inttypes.h>
|
15
|
+
#if !defined(__cplusplus)
|
16
|
+
# include <stdbool.h>
|
17
|
+
#endif
|
18
|
+
#include <sys/types.h>
|
19
|
+
#include <netinet/in.h>
|
20
|
+
|
21
|
+
#include <libmemcached/visibility.h>
|
22
|
+
#include <libmemcached/memcached_configure.h>
|
23
|
+
#include <libmemcached/memcached_constants.h>
|
24
|
+
#include <libmemcached/memcached_types.h>
|
25
|
+
#include <libmemcached/memcached_get.h>
|
26
|
+
#include <libmemcached/memcached_touch.h>
|
27
|
+
#include <libmemcached/memcached_server.h>
|
28
|
+
#include <libmemcached/memcached_string.h>
|
29
|
+
#include <libmemcached/memcached_result.h>
|
30
|
+
#include <libmemcached/memcached_storage.h>
|
31
|
+
#include <libmemcached/memcached_exist.h>
|
32
|
+
#include <libmemcached/memcached_sasl.h>
|
33
|
+
|
34
|
+
#ifdef __cplusplus
|
35
|
+
extern "C" {
|
36
|
+
#endif
|
37
|
+
|
38
|
+
#define MEMCACHED_VERSION_STRING_LENGTH 24
|
39
|
+
#define LIBMEMCACHED_VERSION_STRING "0.32"
|
40
|
+
|
41
|
+
struct memcached_analysis_st {
|
42
|
+
uint32_t average_item_size;
|
43
|
+
uint32_t longest_uptime;
|
44
|
+
uint32_t least_free_server;
|
45
|
+
uint32_t most_consumed_server;
|
46
|
+
uint32_t oldest_server;
|
47
|
+
double pool_hit_ratio;
|
48
|
+
uint64_t most_used_bytes;
|
49
|
+
uint64_t least_remaining_bytes;
|
50
|
+
};
|
51
|
+
|
52
|
+
struct memcached_stat_st {
|
53
|
+
uint32_t connection_structures;
|
54
|
+
uint32_t curr_connections;
|
55
|
+
uint32_t curr_items;
|
56
|
+
uint32_t pid;
|
57
|
+
uint32_t pointer_size;
|
58
|
+
uint32_t rusage_system_microseconds;
|
59
|
+
uint32_t rusage_system_seconds;
|
60
|
+
uint32_t rusage_user_microseconds;
|
61
|
+
uint32_t rusage_user_seconds;
|
62
|
+
uint32_t threads;
|
63
|
+
uint32_t time;
|
64
|
+
uint32_t total_connections;
|
65
|
+
uint32_t total_items;
|
66
|
+
uint32_t uptime;
|
67
|
+
uint64_t bytes;
|
68
|
+
uint64_t bytes_read;
|
69
|
+
uint64_t bytes_written;
|
70
|
+
uint64_t cmd_get;
|
71
|
+
uint64_t cmd_set;
|
72
|
+
uint64_t evictions;
|
73
|
+
uint64_t get_hits;
|
74
|
+
uint64_t get_misses;
|
75
|
+
uint64_t limit_maxbytes;
|
76
|
+
char version[MEMCACHED_VERSION_STRING_LENGTH];
|
77
|
+
};
|
78
|
+
|
79
|
+
struct memcached_st {
|
80
|
+
uint8_t purging;
|
81
|
+
bool is_allocated;
|
82
|
+
uint8_t distribution;
|
83
|
+
uint8_t hash;
|
84
|
+
uint32_t continuum_points_counter;
|
85
|
+
memcached_server_st *hosts;
|
86
|
+
int32_t snd_timeout;
|
87
|
+
int32_t rcv_timeout;
|
88
|
+
uint32_t server_failure_limit;
|
89
|
+
uint32_t io_msg_watermark;
|
90
|
+
uint32_t io_bytes_watermark;
|
91
|
+
uint32_t io_key_prefetch;
|
92
|
+
uint32_t number_of_hosts;
|
93
|
+
uint32_t cursor_server;
|
94
|
+
int cached_errno;
|
95
|
+
uint32_t flags;
|
96
|
+
int32_t poll_timeout;
|
97
|
+
int32_t connect_timeout;
|
98
|
+
int32_t retry_timeout;
|
99
|
+
uint32_t continuum_count;
|
100
|
+
int send_size;
|
101
|
+
int recv_size;
|
102
|
+
void *user_data;
|
103
|
+
time_t next_distribution_rebuild;
|
104
|
+
size_t prefix_key_length;
|
105
|
+
memcached_hash hash_continuum;
|
106
|
+
memcached_result_st result;
|
107
|
+
memcached_continuum_item_st *continuum;
|
108
|
+
memcached_clone_func on_clone;
|
109
|
+
memcached_cleanup_func on_cleanup;
|
110
|
+
memcached_free_function call_free;
|
111
|
+
memcached_malloc_function call_malloc;
|
112
|
+
memcached_realloc_function call_realloc;
|
113
|
+
memcached_calloc_function call_calloc;
|
114
|
+
memcached_trigger_key get_key_failure;
|
115
|
+
memcached_trigger_delete_key delete_trigger;
|
116
|
+
char prefix_key[MEMCACHED_PREFIX_KEY_MAX_SIZE];
|
117
|
+
uint32_t number_of_live_hosts;
|
118
|
+
uint32_t *live_host_indices;
|
119
|
+
uint32_t live_host_indices_size;
|
120
|
+
#ifdef LIBMEMCACHED_WITH_SASL_SUPPORT
|
121
|
+
const sasl_callback_t *sasl_callbacks;
|
122
|
+
#endif
|
123
|
+
int last_server_key;
|
124
|
+
};
|
125
|
+
|
126
|
+
LIBMEMCACHED_API
|
127
|
+
memcached_return memcached_version(memcached_st *ptr);
|
128
|
+
|
129
|
+
/* Public API */
|
130
|
+
|
131
|
+
LIBMEMCACHED_API
|
132
|
+
const char * memcached_lib_version(void);
|
133
|
+
|
134
|
+
LIBMEMCACHED_API
|
135
|
+
memcached_st *memcached_create(memcached_st *ptr);
|
136
|
+
LIBMEMCACHED_API
|
137
|
+
void memcached_free(memcached_st *ptr);
|
138
|
+
LIBMEMCACHED_API
|
139
|
+
memcached_st *memcached_clone(memcached_st *clone, memcached_st *ptr);
|
140
|
+
|
141
|
+
LIBMEMCACHED_API
|
142
|
+
memcached_return memcached_delete(memcached_st *ptr, const char *key, size_t key_length,
|
143
|
+
time_t expiration);
|
144
|
+
LIBMEMCACHED_API
|
145
|
+
memcached_return memcached_increment(memcached_st *ptr,
|
146
|
+
const char *key, size_t key_length,
|
147
|
+
uint32_t offset,
|
148
|
+
uint64_t *value);
|
149
|
+
LIBMEMCACHED_API
|
150
|
+
memcached_return memcached_decrement(memcached_st *ptr,
|
151
|
+
const char *key, size_t key_length,
|
152
|
+
uint32_t offset,
|
153
|
+
uint64_t *value);
|
154
|
+
LIBMEMCACHED_API
|
155
|
+
memcached_return memcached_increment_with_initial(memcached_st *ptr,
|
156
|
+
const char *key,
|
157
|
+
size_t key_length,
|
158
|
+
uint64_t offset,
|
159
|
+
uint64_t initial,
|
160
|
+
time_t expiration,
|
161
|
+
uint64_t *value);
|
162
|
+
LIBMEMCACHED_API
|
163
|
+
memcached_return memcached_decrement_with_initial(memcached_st *ptr,
|
164
|
+
const char *key,
|
165
|
+
size_t key_length,
|
166
|
+
uint64_t offset,
|
167
|
+
uint64_t initial,
|
168
|
+
time_t expiration,
|
169
|
+
uint64_t *value);
|
170
|
+
LIBMEMCACHED_API
|
171
|
+
void memcached_stat_free(memcached_st *, memcached_stat_st *);
|
172
|
+
LIBMEMCACHED_API
|
173
|
+
memcached_stat_st *memcached_stat(memcached_st *ptr, char *args, memcached_return *error);
|
174
|
+
LIBMEMCACHED_API
|
175
|
+
memcached_return memcached_stat_servername(memcached_stat_st *memc_stat, char *args,
|
176
|
+
char *hostname, unsigned int port);
|
177
|
+
LIBMEMCACHED_API
|
178
|
+
memcached_return memcached_flush(memcached_st *ptr, time_t expiration);
|
179
|
+
LIBMEMCACHED_API
|
180
|
+
memcached_return memcached_verbosity(memcached_st *ptr, unsigned int verbosity);
|
181
|
+
LIBMEMCACHED_API
|
182
|
+
void memcached_quit(memcached_st *ptr);
|
183
|
+
LIBMEMCACHED_API
|
184
|
+
const char *memcached_strerror(memcached_st *ptr, memcached_return rc);
|
185
|
+
LIBMEMCACHED_API
|
186
|
+
memcached_return memcached_behavior_set(memcached_st *ptr, memcached_behavior flag, uint64_t data);
|
187
|
+
LIBMEMCACHED_API
|
188
|
+
uint64_t memcached_behavior_get(memcached_st *ptr, memcached_behavior flag);
|
189
|
+
|
190
|
+
/* The two public hash bits */
|
191
|
+
LIBMEMCACHED_API
|
192
|
+
uint32_t memcached_generate_hash_value(const char *key, size_t key_length, memcached_hash hash_algorithm);
|
193
|
+
LIBMEMCACHED_API
|
194
|
+
uint32_t memcached_generate_hash(memcached_st *ptr, const char *key, size_t key_length);
|
195
|
+
|
196
|
+
LIBMEMCACHED_API
|
197
|
+
memcached_return memcached_flush_buffers(memcached_st *mem);
|
198
|
+
|
199
|
+
/* Server Public functions */
|
200
|
+
|
201
|
+
LIBMEMCACHED_API
|
202
|
+
memcached_return memcached_server_add_udp(memcached_st *ptr,
|
203
|
+
const char *hostname,
|
204
|
+
unsigned int port);
|
205
|
+
LIBMEMCACHED_API
|
206
|
+
memcached_return memcached_server_add_unix_socket(memcached_st *ptr,
|
207
|
+
const char *filename);
|
208
|
+
LIBMEMCACHED_API
|
209
|
+
memcached_return memcached_server_add(memcached_st *ptr, const char *hostname,
|
210
|
+
unsigned int port);
|
211
|
+
|
212
|
+
LIBMEMCACHED_API
|
213
|
+
memcached_return memcached_server_add_udp_with_weight(memcached_st *ptr,
|
214
|
+
const char *hostname,
|
215
|
+
unsigned int port,
|
216
|
+
uint32_t weight);
|
217
|
+
LIBMEMCACHED_API
|
218
|
+
memcached_return memcached_server_add_unix_socket_with_weight(memcached_st *ptr,
|
219
|
+
const char *filename,
|
220
|
+
uint32_t weight);
|
221
|
+
LIBMEMCACHED_API
|
222
|
+
memcached_return memcached_server_add_with_weight(memcached_st *ptr, const char *hostname,
|
223
|
+
unsigned int port,
|
224
|
+
uint32_t weight);
|
225
|
+
LIBMEMCACHED_API
|
226
|
+
void memcached_server_list_free(memcached_server_st *ptr);
|
227
|
+
LIBMEMCACHED_API
|
228
|
+
memcached_return memcached_server_push(memcached_st *ptr, memcached_server_st *list);
|
229
|
+
|
230
|
+
LIBMEMCACHED_API
|
231
|
+
memcached_server_st *memcached_server_list_append(memcached_server_st *ptr,
|
232
|
+
const char *hostname,
|
233
|
+
unsigned int port,
|
234
|
+
memcached_return *error);
|
235
|
+
LIBMEMCACHED_API
|
236
|
+
memcached_server_st *memcached_server_list_append_with_weight(memcached_server_st *ptr,
|
237
|
+
const char *hostname,
|
238
|
+
unsigned int port,
|
239
|
+
uint32_t weight,
|
240
|
+
memcached_return *error);
|
241
|
+
LIBMEMCACHED_API
|
242
|
+
unsigned int memcached_server_list_count(memcached_server_st *ptr);
|
243
|
+
LIBMEMCACHED_API
|
244
|
+
memcached_server_st *memcached_servers_parse(const char *server_strings);
|
245
|
+
|
246
|
+
LIBMEMCACHED_API
|
247
|
+
char *memcached_stat_get_value(memcached_st *ptr, memcached_stat_st *memc_stat,
|
248
|
+
const char *key, memcached_return *error);
|
249
|
+
LIBMEMCACHED_API
|
250
|
+
char ** memcached_stat_get_keys(memcached_st *ptr, memcached_stat_st *memc_stat,
|
251
|
+
memcached_return *error);
|
252
|
+
|
253
|
+
LIBMEMCACHED_API
|
254
|
+
memcached_return memcached_delete_by_key(memcached_st *ptr,
|
255
|
+
const char *master_key, size_t master_key_length,
|
256
|
+
const char *key, size_t key_length,
|
257
|
+
time_t expiration);
|
258
|
+
|
259
|
+
LIBMEMCACHED_API
|
260
|
+
memcached_return memcached_fetch_execute(memcached_st *ptr,
|
261
|
+
memcached_execute_function *callback,
|
262
|
+
void *context,
|
263
|
+
unsigned int number_of_callbacks);
|
264
|
+
|
265
|
+
LIBMEMCACHED_API
|
266
|
+
memcached_return memcached_callback_set(memcached_st *ptr,
|
267
|
+
memcached_callback flag,
|
268
|
+
void *data);
|
269
|
+
LIBMEMCACHED_API
|
270
|
+
void *memcached_callback_get(memcached_st *ptr,
|
271
|
+
memcached_callback flag,
|
272
|
+
memcached_return *error);
|
273
|
+
|
274
|
+
LIBMEMCACHED_API
|
275
|
+
memcached_return memcached_dump(memcached_st *ptr, memcached_dump_func *function, void *context, uint32_t number_of_callbacks);
|
276
|
+
|
277
|
+
|
278
|
+
LIBMEMCACHED_API
|
279
|
+
memcached_return memcached_set_memory_allocators(memcached_st *ptr,
|
280
|
+
memcached_malloc_function mem_malloc,
|
281
|
+
memcached_free_function mem_free,
|
282
|
+
memcached_realloc_function mem_realloc,
|
283
|
+
memcached_calloc_function mem_calloc);
|
284
|
+
|
285
|
+
LIBMEMCACHED_API
|
286
|
+
void memcached_get_memory_allocators(memcached_st *ptr,
|
287
|
+
memcached_malloc_function *mem_malloc,
|
288
|
+
memcached_free_function *mem_free,
|
289
|
+
memcached_realloc_function *mem_realloc,
|
290
|
+
memcached_calloc_function *mem_calloc);
|
291
|
+
|
292
|
+
LIBMEMCACHED_API
|
293
|
+
void *memcached_get_user_data(memcached_st *ptr);
|
294
|
+
LIBMEMCACHED_API
|
295
|
+
void *memcached_set_user_data(memcached_st *ptr, void *data);
|
296
|
+
|
297
|
+
LIBMEMCACHED_API
|
298
|
+
memcached_return run_distribution(memcached_st *ptr);
|
299
|
+
#ifdef __cplusplus
|
300
|
+
}
|
301
|
+
#endif
|
302
|
+
|
303
|
+
|
304
|
+
#endif /* LIBMEMCACHED_MEMCACHED_H */
|
@@ -0,0 +1,799 @@
|
|
1
|
+
/*
|
2
|
+
* Summary: C++ interface for memcached server
|
3
|
+
*
|
4
|
+
* Copy: See Copyright for the status of this software.
|
5
|
+
*
|
6
|
+
* Authors: Padraig O'Sullivan <osullivan.padraig@gmail.com>
|
7
|
+
* Patrick Galbraith <patg@patg.net>
|
8
|
+
*/
|
9
|
+
|
10
|
+
/**
|
11
|
+
* @file memcached.hpp
|
12
|
+
* @brief Libmemcached C++ interface
|
13
|
+
*/
|
14
|
+
|
15
|
+
#ifndef LIBMEMCACHEDPP_H
|
16
|
+
#define LIBMEMCACHEDPP_H
|
17
|
+
|
18
|
+
#include <libmemcached/memcached.h>
|
19
|
+
|
20
|
+
#include <string.h>
|
21
|
+
|
22
|
+
#include <string>
|
23
|
+
#include <vector>
|
24
|
+
#include <map>
|
25
|
+
|
26
|
+
namespace memcache
|
27
|
+
{
|
28
|
+
|
29
|
+
/**
|
30
|
+
* This is the core memcached library (if later, other objects
|
31
|
+
* are needed, they will be created from this class).
|
32
|
+
*/
|
33
|
+
class Memcache
|
34
|
+
{
|
35
|
+
public:
|
36
|
+
|
37
|
+
Memcache()
|
38
|
+
:
|
39
|
+
memc(),
|
40
|
+
result()
|
41
|
+
{
|
42
|
+
memcached_create(&memc);
|
43
|
+
}
|
44
|
+
|
45
|
+
Memcache(memcached_st *clone)
|
46
|
+
:
|
47
|
+
memc(),
|
48
|
+
result()
|
49
|
+
{
|
50
|
+
memcached_clone(&memc, clone);
|
51
|
+
}
|
52
|
+
|
53
|
+
Memcache(const Memcache &rhs)
|
54
|
+
:
|
55
|
+
memc(),
|
56
|
+
result()
|
57
|
+
{
|
58
|
+
memcached_clone(&memc, const_cast<memcached_st *>(&rhs.getImpl()));
|
59
|
+
}
|
60
|
+
|
61
|
+
~Memcache()
|
62
|
+
{
|
63
|
+
memcached_free(&memc);
|
64
|
+
}
|
65
|
+
|
66
|
+
/**
|
67
|
+
* Get the internal memcached_st *
|
68
|
+
*/
|
69
|
+
memcached_st &getImpl()
|
70
|
+
{
|
71
|
+
return memc;
|
72
|
+
}
|
73
|
+
|
74
|
+
/**
|
75
|
+
* Get the internal memcached_st *
|
76
|
+
*/
|
77
|
+
const memcached_st &getImpl() const
|
78
|
+
{
|
79
|
+
return memc;
|
80
|
+
}
|
81
|
+
|
82
|
+
/**
|
83
|
+
* Return an error string for the given return structure.
|
84
|
+
*
|
85
|
+
* @param[in] rc a memcached_return structure
|
86
|
+
* @return error string corresponding to given return code in the library.
|
87
|
+
*/
|
88
|
+
const std::string getError(memcached_return rc) const
|
89
|
+
{
|
90
|
+
/* first parameter to strerror is unused */
|
91
|
+
return memcached_strerror(NULL, rc);
|
92
|
+
}
|
93
|
+
|
94
|
+
/**
|
95
|
+
* Fetches an individual value from the server. mget() must always
|
96
|
+
* be called before using this method.
|
97
|
+
*
|
98
|
+
* @param[in] key key of object to fetch
|
99
|
+
* @param[out] ret_val store returned object in this vector
|
100
|
+
* @return a memcached return structure
|
101
|
+
*/
|
102
|
+
memcached_return fetch(std::string &key,
|
103
|
+
std::vector<char> &ret_val)
|
104
|
+
{
|
105
|
+
char ret_key[MEMCACHED_MAX_KEY];
|
106
|
+
size_t value_length= 0;
|
107
|
+
size_t key_length= 0;
|
108
|
+
memcached_return rc;
|
109
|
+
uint32_t flags= 0;
|
110
|
+
char *value= memcached_fetch(&memc, ret_key, &key_length,
|
111
|
+
&value_length, &flags, &rc);
|
112
|
+
if (value && ret_val.empty())
|
113
|
+
{
|
114
|
+
ret_val.reserve(value_length);
|
115
|
+
ret_val.assign(value, value + value_length);
|
116
|
+
key.assign(ret_key);
|
117
|
+
}
|
118
|
+
return rc;
|
119
|
+
}
|
120
|
+
|
121
|
+
/**
|
122
|
+
* Fetches an individual value from the server.
|
123
|
+
*
|
124
|
+
* @param[in] key key of object whose value to get
|
125
|
+
* @param[out] ret_val object that is retrieved is stored in
|
126
|
+
* this vector
|
127
|
+
* @return true on success; false otherwise
|
128
|
+
*/
|
129
|
+
bool get(const std::string &key,
|
130
|
+
std::vector<char> &ret_val)
|
131
|
+
{
|
132
|
+
uint32_t flags= 0;
|
133
|
+
memcached_return rc;
|
134
|
+
size_t value_length= 0;
|
135
|
+
|
136
|
+
if (key.empty())
|
137
|
+
{
|
138
|
+
return false;
|
139
|
+
}
|
140
|
+
char *value= memcached_get(&memc, key.c_str(), key.length(),
|
141
|
+
&value_length, &flags, &rc);
|
142
|
+
if (value != NULL && ret_val.empty())
|
143
|
+
{
|
144
|
+
ret_val.reserve(value_length);
|
145
|
+
ret_val.assign(value, value + value_length);
|
146
|
+
return true;
|
147
|
+
}
|
148
|
+
return false;
|
149
|
+
}
|
150
|
+
|
151
|
+
/**
|
152
|
+
* Fetches an individual from a server which is specified by
|
153
|
+
* the master_key parameter that is used for determining which
|
154
|
+
* server an object was stored in if key partitioning was
|
155
|
+
* used for storage.
|
156
|
+
*
|
157
|
+
* @param[in] master_key key that specifies server object is stored on
|
158
|
+
* @param[in] key key of object whose value to get
|
159
|
+
* @param[out] ret_val object that is retrieved is stored in
|
160
|
+
* this vector
|
161
|
+
* @return true on success; false otherwise
|
162
|
+
*/
|
163
|
+
bool getByKey(const std::string &master_key,
|
164
|
+
const std::string &key,
|
165
|
+
std::vector<char> &ret_val)
|
166
|
+
{
|
167
|
+
uint32_t flags= 0;
|
168
|
+
memcached_return rc;
|
169
|
+
size_t value_length= 0;
|
170
|
+
|
171
|
+
if (master_key.empty() || key.empty())
|
172
|
+
{
|
173
|
+
return false;
|
174
|
+
}
|
175
|
+
char *value= memcached_get_by_key(&memc,
|
176
|
+
master_key.c_str(), master_key.length(),
|
177
|
+
key.c_str(), key.length(),
|
178
|
+
GET_LEN_ARG_UNSPECIFIED,
|
179
|
+
&value_length, &flags, &rc);
|
180
|
+
if (value)
|
181
|
+
{
|
182
|
+
ret_val.reserve(value_length);
|
183
|
+
ret_val.assign(value, value + value_length);
|
184
|
+
return true;
|
185
|
+
}
|
186
|
+
return false;
|
187
|
+
}
|
188
|
+
|
189
|
+
/**
|
190
|
+
* Selects multiple keys at once. This method always
|
191
|
+
* works asynchronously.
|
192
|
+
*
|
193
|
+
* @param[in] keys vector of keys to select
|
194
|
+
* @return true if all keys are found
|
195
|
+
*/
|
196
|
+
bool mget(std::vector<std::string> &keys)
|
197
|
+
{
|
198
|
+
std::vector<const char *> real_keys;
|
199
|
+
std::vector<size_t> key_len;
|
200
|
+
/*
|
201
|
+
* Construct an array which will contain the length
|
202
|
+
* of each of the strings in the input vector. Also, to
|
203
|
+
* interface with the memcached C API, we need to convert
|
204
|
+
* the vector of std::string's to a vector of char *.
|
205
|
+
*/
|
206
|
+
real_keys.reserve(keys.size());
|
207
|
+
key_len.reserve(keys.size());
|
208
|
+
|
209
|
+
std::vector<std::string>::iterator it= keys.begin();
|
210
|
+
|
211
|
+
while (it != keys.end())
|
212
|
+
{
|
213
|
+
real_keys.push_back(const_cast<char *>((*it).c_str()));
|
214
|
+
key_len.push_back((*it).length());
|
215
|
+
++it;
|
216
|
+
}
|
217
|
+
|
218
|
+
/*
|
219
|
+
* If the std::vector of keys is empty then we cannot
|
220
|
+
* call memcached_mget as we will get undefined behavior.
|
221
|
+
*/
|
222
|
+
if (! real_keys.empty())
|
223
|
+
{
|
224
|
+
memcached_return rc= memcached_mget(&memc, &real_keys[0], &key_len[0],
|
225
|
+
real_keys.size());
|
226
|
+
return (rc == MEMCACHED_SUCCESS);
|
227
|
+
}
|
228
|
+
|
229
|
+
return false;
|
230
|
+
}
|
231
|
+
|
232
|
+
/**
|
233
|
+
* Writes an object to the server. If the object already exists, it will
|
234
|
+
* overwrite the existing object. This method always returns true
|
235
|
+
* when using non-blocking mode unless a network error occurs.
|
236
|
+
*
|
237
|
+
* @param[in] key key of object to write to server
|
238
|
+
* @param[in] value value of object to write to server
|
239
|
+
* @param[in] expiration time to keep the object stored in the server for
|
240
|
+
* @param[in] flags flags to store with the object
|
241
|
+
* @return true on succcess; false otherwise
|
242
|
+
*/
|
243
|
+
bool set(const std::string &key,
|
244
|
+
const std::vector<char> &value,
|
245
|
+
time_t expiration,
|
246
|
+
uint32_t flags)
|
247
|
+
{
|
248
|
+
if (key.empty() || value.empty())
|
249
|
+
{
|
250
|
+
return false;
|
251
|
+
}
|
252
|
+
memcached_return rc= memcached_set(&memc,
|
253
|
+
key.c_str(), key.length(),
|
254
|
+
&value[0], value.size(),
|
255
|
+
expiration, flags);
|
256
|
+
return (rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
|
257
|
+
}
|
258
|
+
|
259
|
+
/**
|
260
|
+
* Writes an object to a server specified by the master_key parameter.
|
261
|
+
* If the object already exists, it will overwrite the existing object.
|
262
|
+
*
|
263
|
+
* @param[in] master_key key that specifies server to write to
|
264
|
+
* @param[in] key key of object to write to server
|
265
|
+
* @param[in] value value of object to write to server
|
266
|
+
* @param[in] expiration time to keep the object stored in the server for
|
267
|
+
* @param[in] flags flags to store with the object
|
268
|
+
* @return true on succcess; false otherwise
|
269
|
+
*/
|
270
|
+
bool setByKey(const std::string &master_key,
|
271
|
+
const std::string &key,
|
272
|
+
const std::vector<char> &value,
|
273
|
+
time_t expiration,
|
274
|
+
uint32_t flags)
|
275
|
+
{
|
276
|
+
if (master_key.empty() ||
|
277
|
+
key.empty() ||
|
278
|
+
value.empty())
|
279
|
+
{
|
280
|
+
return false;
|
281
|
+
}
|
282
|
+
memcached_return rc= memcached_set_by_key(&memc, master_key.c_str(),
|
283
|
+
master_key.length(),
|
284
|
+
key.c_str(), key.length(),
|
285
|
+
&value[0], value.size(),
|
286
|
+
expiration,
|
287
|
+
flags);
|
288
|
+
return (rc == MEMCACHED_SUCCESS);
|
289
|
+
}
|
290
|
+
|
291
|
+
/**
|
292
|
+
* Writes a list of objects to the server. Objects are specified by
|
293
|
+
* 2 vectors - 1 vector of keys and 1 vector of values.
|
294
|
+
*
|
295
|
+
* @param[in] keys vector of keys of objects to write to server
|
296
|
+
* @param[in] values vector of values of objects to write to server
|
297
|
+
* @param[in] expiration time to keep the objects stored in server for
|
298
|
+
* @param[in] flags flags to store with the objects
|
299
|
+
* @return true on success; false otherwise
|
300
|
+
*/
|
301
|
+
bool setAll(std::vector<std::string> &keys,
|
302
|
+
std::vector< std::vector<char> *> &values,
|
303
|
+
time_t expiration,
|
304
|
+
uint32_t flags)
|
305
|
+
{
|
306
|
+
if (keys.size() != values.size())
|
307
|
+
{
|
308
|
+
return false;
|
309
|
+
}
|
310
|
+
bool retval= true;
|
311
|
+
std::vector<std::string>::iterator key_it= keys.begin();
|
312
|
+
std::vector< std::vector<char> *>::iterator val_it= values.begin();
|
313
|
+
while (key_it != keys.end())
|
314
|
+
{
|
315
|
+
retval= set((*key_it), *(*val_it), expiration, flags);
|
316
|
+
if (retval == false)
|
317
|
+
{
|
318
|
+
return retval;
|
319
|
+
}
|
320
|
+
++key_it;
|
321
|
+
++val_it;
|
322
|
+
}
|
323
|
+
return retval;
|
324
|
+
}
|
325
|
+
|
326
|
+
/**
|
327
|
+
* Writes a list of objects to the server. Objects are specified by
|
328
|
+
* a map of keys to values.
|
329
|
+
*
|
330
|
+
* @param[in] key_value_map map of keys and values to store in server
|
331
|
+
* @param[in] expiration time to keep the objects stored in server for
|
332
|
+
* @param[in] flags flags to store with the objects
|
333
|
+
* @return true on success; false otherwise
|
334
|
+
*/
|
335
|
+
bool setAll(std::map<const std::string, std::vector<char> > &key_value_map,
|
336
|
+
time_t expiration,
|
337
|
+
uint32_t flags)
|
338
|
+
{
|
339
|
+
if (key_value_map.empty())
|
340
|
+
{
|
341
|
+
return false;
|
342
|
+
}
|
343
|
+
bool retval= true;
|
344
|
+
std::map<const std::string, std::vector<char> >::iterator it=
|
345
|
+
key_value_map.begin();
|
346
|
+
while (it != key_value_map.end())
|
347
|
+
{
|
348
|
+
retval= set(it->first, it->second, expiration, flags);
|
349
|
+
if (retval == false)
|
350
|
+
{
|
351
|
+
return false;
|
352
|
+
}
|
353
|
+
++it;
|
354
|
+
}
|
355
|
+
return true;
|
356
|
+
}
|
357
|
+
|
358
|
+
/**
|
359
|
+
* Increment the value of the object associated with the specified
|
360
|
+
* key by the offset given. The resulting value is saved in the value
|
361
|
+
* parameter.
|
362
|
+
*
|
363
|
+
* @param[in] key key of object in server whose value to increment
|
364
|
+
* @param[in] offset amount to increment object's value by
|
365
|
+
* @param[out] value store the result of the increment here
|
366
|
+
* @return true on success; false otherwise
|
367
|
+
*/
|
368
|
+
bool increment(const std::string &key, uint32_t offset, uint64_t *value)
|
369
|
+
{
|
370
|
+
if (key.empty())
|
371
|
+
{
|
372
|
+
return false;
|
373
|
+
}
|
374
|
+
memcached_return rc= memcached_increment(&memc, key.c_str(), key.length(),
|
375
|
+
offset, value);
|
376
|
+
return (rc == MEMCACHED_SUCCESS);
|
377
|
+
}
|
378
|
+
|
379
|
+
/**
|
380
|
+
* Decrement the value of the object associated with the specified
|
381
|
+
* key by the offset given. The resulting value is saved in the value
|
382
|
+
* parameter.
|
383
|
+
*
|
384
|
+
* @param[in] key key of object in server whose value to decrement
|
385
|
+
* @param[in] offset amount to increment object's value by
|
386
|
+
* @param[out] value store the result of the decrement here
|
387
|
+
* @return true on success; false otherwise
|
388
|
+
*/
|
389
|
+
bool decrement(const std::string &key, uint32_t offset, uint64_t *value)
|
390
|
+
{
|
391
|
+
if (key.empty())
|
392
|
+
{
|
393
|
+
return false;
|
394
|
+
}
|
395
|
+
memcached_return rc= memcached_decrement(&memc, key.c_str(),
|
396
|
+
key.length(),
|
397
|
+
offset, value);
|
398
|
+
return (rc == MEMCACHED_SUCCESS);
|
399
|
+
}
|
400
|
+
|
401
|
+
|
402
|
+
/**
|
403
|
+
* Add an object with the specified key and value to the server. This
|
404
|
+
* function returns false if the object already exists on the server.
|
405
|
+
*
|
406
|
+
* @param[in] key key of object to add
|
407
|
+
* @param[in] value of object to add
|
408
|
+
* @return true on success; false otherwise
|
409
|
+
*/
|
410
|
+
bool add(const std::string &key, const std::vector<char> &value)
|
411
|
+
{
|
412
|
+
if (key.empty() || value.empty())
|
413
|
+
{
|
414
|
+
return false;
|
415
|
+
}
|
416
|
+
memcached_return rc= memcached_add(&memc, key.c_str(), key.length(),
|
417
|
+
&value[0], value.size(), 0, 0);
|
418
|
+
return (rc == MEMCACHED_SUCCESS);
|
419
|
+
}
|
420
|
+
|
421
|
+
/**
|
422
|
+
* Add an object with the specified key and value to the server. This
|
423
|
+
* function returns false if the object already exists on the server. The
|
424
|
+
* server to add the object to is specified by the master_key parameter.
|
425
|
+
*
|
426
|
+
* @param[in[ master_key key of server to add object to
|
427
|
+
* @param[in] key key of object to add
|
428
|
+
* @param[in] value of object to add
|
429
|
+
* @return true on success; false otherwise
|
430
|
+
*/
|
431
|
+
bool addByKey(const std::string &master_key,
|
432
|
+
const std::string &key,
|
433
|
+
const std::vector<char> &value)
|
434
|
+
{
|
435
|
+
if (master_key.empty() ||
|
436
|
+
key.empty() ||
|
437
|
+
value.empty())
|
438
|
+
{
|
439
|
+
return false;
|
440
|
+
}
|
441
|
+
memcached_return rc= memcached_add_by_key(&memc,
|
442
|
+
master_key.c_str(),
|
443
|
+
master_key.length(),
|
444
|
+
key.c_str(),
|
445
|
+
key.length(),
|
446
|
+
&value[0],
|
447
|
+
value.size(),
|
448
|
+
0, 0);
|
449
|
+
return (rc == MEMCACHED_SUCCESS);
|
450
|
+
}
|
451
|
+
|
452
|
+
/**
|
453
|
+
* Replaces an object on the server. This method only succeeds
|
454
|
+
* if the object is already present on the server.
|
455
|
+
*
|
456
|
+
* @param[in] key key of object to replace
|
457
|
+
* @param[in[ value value to replace object with
|
458
|
+
* @return true on success; false otherwise
|
459
|
+
*/
|
460
|
+
bool replace(const std::string &key, const std::vector<char> &value)
|
461
|
+
{
|
462
|
+
if (key.empty() ||
|
463
|
+
value.empty())
|
464
|
+
{
|
465
|
+
return false;
|
466
|
+
}
|
467
|
+
memcached_return rc= memcached_replace(&memc, key.c_str(), key.length(),
|
468
|
+
&value[0], value.size(),
|
469
|
+
0, 0);
|
470
|
+
return (rc == MEMCACHED_SUCCESS);
|
471
|
+
}
|
472
|
+
|
473
|
+
/**
|
474
|
+
* Replaces an object on the server. This method only succeeds
|
475
|
+
* if the object is already present on the server. The server
|
476
|
+
* to replace the object on is specified by the master_key param.
|
477
|
+
*
|
478
|
+
* @param[in] master_key key of server to replace object on
|
479
|
+
* @param[in] key key of object to replace
|
480
|
+
* @param[in[ value value to replace object with
|
481
|
+
* @return true on success; false otherwise
|
482
|
+
*/
|
483
|
+
bool replaceByKey(const std::string &master_key,
|
484
|
+
const std::string &key,
|
485
|
+
const std::vector<char> &value)
|
486
|
+
{
|
487
|
+
if (master_key.empty() ||
|
488
|
+
key.empty() ||
|
489
|
+
value.empty())
|
490
|
+
{
|
491
|
+
return false;
|
492
|
+
}
|
493
|
+
memcached_return rc= memcached_replace_by_key(&memc,
|
494
|
+
master_key.c_str(),
|
495
|
+
master_key.length(),
|
496
|
+
key.c_str(),
|
497
|
+
key.length(),
|
498
|
+
&value[0],
|
499
|
+
value.size(),
|
500
|
+
0, 0);
|
501
|
+
return (rc == MEMCACHED_SUCCESS);
|
502
|
+
}
|
503
|
+
|
504
|
+
/**
|
505
|
+
* Places a segment of data before the last piece of data stored.
|
506
|
+
*
|
507
|
+
* @param[in] key key of object whose value we will prepend data to
|
508
|
+
* @param[in] value data to prepend to object's value
|
509
|
+
* @return true on success; false otherwise
|
510
|
+
*/
|
511
|
+
bool prepend(const std::string &key, const std::vector<char> &value)
|
512
|
+
{
|
513
|
+
if (key.empty() || value.empty())
|
514
|
+
{
|
515
|
+
return false;
|
516
|
+
}
|
517
|
+
memcached_return rc= memcached_prepend(&memc, key.c_str(), key.length(),
|
518
|
+
&value[0], value.size(), 0, 0);
|
519
|
+
return (rc == MEMCACHED_SUCCESS);
|
520
|
+
}
|
521
|
+
|
522
|
+
/**
|
523
|
+
* Places a segment of data before the last piece of data stored. The
|
524
|
+
* server on which the object where we will be prepending data is stored
|
525
|
+
* on is specified by the master_key parameter.
|
526
|
+
*
|
527
|
+
* @param[in] master_key key of server where object is stored
|
528
|
+
* @param[in] key key of object whose value we will prepend data to
|
529
|
+
* @param[in] value data to prepend to object's value
|
530
|
+
* @return true on success; false otherwise
|
531
|
+
*/
|
532
|
+
bool prependByKey(const std::string &master_key,
|
533
|
+
const std::string &key,
|
534
|
+
const std::vector<char> &value)
|
535
|
+
{
|
536
|
+
if (master_key.empty() ||
|
537
|
+
key.empty() ||
|
538
|
+
value.empty())
|
539
|
+
{
|
540
|
+
return false;
|
541
|
+
}
|
542
|
+
memcached_return rc= memcached_prepend_by_key(&memc,
|
543
|
+
master_key.c_str(),
|
544
|
+
master_key.length(),
|
545
|
+
key.c_str(),
|
546
|
+
key.length(),
|
547
|
+
&value[0],
|
548
|
+
value.size(),
|
549
|
+
0,
|
550
|
+
0);
|
551
|
+
return (rc == MEMCACHED_SUCCESS);
|
552
|
+
}
|
553
|
+
|
554
|
+
/**
|
555
|
+
* Places a segment of data at the end of the last piece of data stored.
|
556
|
+
*
|
557
|
+
* @param[in] key key of object whose value we will append data to
|
558
|
+
* @param[in] value data to append to object's value
|
559
|
+
* @return true on success; false otherwise
|
560
|
+
*/
|
561
|
+
bool append(const std::string &key, const std::vector<char> &value)
|
562
|
+
{
|
563
|
+
if (key.empty() || value.empty())
|
564
|
+
{
|
565
|
+
return false;
|
566
|
+
}
|
567
|
+
memcached_return rc= memcached_append(&memc,
|
568
|
+
key.c_str(),
|
569
|
+
key.length(),
|
570
|
+
&value[0],
|
571
|
+
value.size(),
|
572
|
+
0, 0);
|
573
|
+
return (rc == MEMCACHED_SUCCESS);
|
574
|
+
}
|
575
|
+
|
576
|
+
/**
|
577
|
+
* Places a segment of data at the end of the last piece of data stored. The
|
578
|
+
* server on which the object where we will be appending data is stored
|
579
|
+
* on is specified by the master_key parameter.
|
580
|
+
*
|
581
|
+
* @param[in] master_key key of server where object is stored
|
582
|
+
* @param[in] key key of object whose value we will append data to
|
583
|
+
* @param[in] value data to append to object's value
|
584
|
+
* @return true on success; false otherwise
|
585
|
+
*/
|
586
|
+
bool appendByKey(const std::string &master_key,
|
587
|
+
const std::string &key,
|
588
|
+
const std::vector<char> &value)
|
589
|
+
{
|
590
|
+
if (master_key.empty() ||
|
591
|
+
key.empty() ||
|
592
|
+
value.empty())
|
593
|
+
{
|
594
|
+
return false;
|
595
|
+
}
|
596
|
+
memcached_return rc= memcached_append_by_key(&memc,
|
597
|
+
master_key.c_str(),
|
598
|
+
master_key.length(),
|
599
|
+
key.c_str(),
|
600
|
+
key.length(),
|
601
|
+
&value[0],
|
602
|
+
value.size(),
|
603
|
+
0, 0);
|
604
|
+
return (rc == MEMCACHED_SUCCESS);
|
605
|
+
}
|
606
|
+
|
607
|
+
/**
|
608
|
+
* Overwrite data in the server as long as the cas_arg value
|
609
|
+
* is still the same in the server.
|
610
|
+
*
|
611
|
+
* @param[in] key key of object in server
|
612
|
+
* @param[in] value value to store for object in server
|
613
|
+
* @param[in] cas_arg "cas" value
|
614
|
+
*/
|
615
|
+
bool cas(const std::string &key,
|
616
|
+
const std::vector<char> &value,
|
617
|
+
uint64_t cas_arg)
|
618
|
+
{
|
619
|
+
if (key.empty() || value.empty())
|
620
|
+
{
|
621
|
+
return false;
|
622
|
+
}
|
623
|
+
memcached_return rc= memcached_cas(&memc, key.c_str(), key.length(),
|
624
|
+
&value[0], value.size(),
|
625
|
+
0, 0, cas_arg);
|
626
|
+
return (rc == MEMCACHED_SUCCESS);
|
627
|
+
}
|
628
|
+
|
629
|
+
/**
|
630
|
+
* Overwrite data in the server as long as the cas_arg value
|
631
|
+
* is still the same in the server. The server to use is
|
632
|
+
* specified by the master_key parameter.
|
633
|
+
*
|
634
|
+
* @param[in] master_key specifies server to operate on
|
635
|
+
* @param[in] key key of object in server
|
636
|
+
* @param[in] value value to store for object in server
|
637
|
+
* @param[in] cas_arg "cas" value
|
638
|
+
*/
|
639
|
+
bool casByKey(const std::string &master_key,
|
640
|
+
const std::string &key,
|
641
|
+
const std::vector<char> &value,
|
642
|
+
uint64_t cas_arg)
|
643
|
+
{
|
644
|
+
if (master_key.empty() ||
|
645
|
+
key.empty() ||
|
646
|
+
value.empty())
|
647
|
+
{
|
648
|
+
return false;
|
649
|
+
}
|
650
|
+
memcached_return rc= memcached_cas_by_key(&memc,
|
651
|
+
master_key.c_str(),
|
652
|
+
master_key.length(),
|
653
|
+
key.c_str(),
|
654
|
+
key.length(),
|
655
|
+
&value[0],
|
656
|
+
value.size(),
|
657
|
+
0, 0, cas_arg);
|
658
|
+
return (rc == MEMCACHED_SUCCESS);
|
659
|
+
}
|
660
|
+
|
661
|
+
/**
|
662
|
+
* Delete an object from the server specified by the key given.
|
663
|
+
*
|
664
|
+
* @param[in] key key of object to delete
|
665
|
+
* @return true on success; false otherwise
|
666
|
+
*/
|
667
|
+
bool remove(const std::string &key)
|
668
|
+
{
|
669
|
+
if (key.empty())
|
670
|
+
{
|
671
|
+
return false;
|
672
|
+
}
|
673
|
+
memcached_return rc= memcached_delete(&memc, key.c_str(), key.length(), 0);
|
674
|
+
return (rc == MEMCACHED_SUCCESS);
|
675
|
+
}
|
676
|
+
|
677
|
+
/**
|
678
|
+
* Delete an object from the server specified by the key given.
|
679
|
+
*
|
680
|
+
* @param[in] key key of object to delete
|
681
|
+
* @param[in] expiration time to delete the object after
|
682
|
+
* @return true on success; false otherwise
|
683
|
+
*/
|
684
|
+
bool remove(const std::string &key,
|
685
|
+
time_t expiration)
|
686
|
+
{
|
687
|
+
if (key.empty())
|
688
|
+
{
|
689
|
+
return false;
|
690
|
+
}
|
691
|
+
memcached_return rc= memcached_delete(&memc,
|
692
|
+
key.c_str(),
|
693
|
+
key.length(),
|
694
|
+
expiration);
|
695
|
+
return (rc == MEMCACHED_SUCCESS);
|
696
|
+
}
|
697
|
+
|
698
|
+
/**
|
699
|
+
* Delete an object from the server specified by the key given.
|
700
|
+
*
|
701
|
+
* @param[in] master_key specifies server to remove object from
|
702
|
+
* @param[in] key key of object to delete
|
703
|
+
* @return true on success; false otherwise
|
704
|
+
*/
|
705
|
+
bool removeByKey(const std::string &master_key,
|
706
|
+
const std::string &key)
|
707
|
+
{
|
708
|
+
if (master_key.empty() || key.empty())
|
709
|
+
{
|
710
|
+
return false;
|
711
|
+
}
|
712
|
+
memcached_return rc= memcached_delete_by_key(&memc,
|
713
|
+
master_key.c_str(),
|
714
|
+
master_key.length(),
|
715
|
+
key.c_str(),
|
716
|
+
key.length(),
|
717
|
+
0);
|
718
|
+
return (rc == MEMCACHED_SUCCESS);
|
719
|
+
}
|
720
|
+
|
721
|
+
/**
|
722
|
+
* Delete an object from the server specified by the key given.
|
723
|
+
*
|
724
|
+
* @param[in] master_key specifies server to remove object from
|
725
|
+
* @param[in] key key of object to delete
|
726
|
+
* @param[in] expiration time to delete the object after
|
727
|
+
* @return true on success; false otherwise
|
728
|
+
*/
|
729
|
+
bool removeByKey(const std::string &master_key,
|
730
|
+
const std::string &key,
|
731
|
+
time_t expiration)
|
732
|
+
{
|
733
|
+
if (master_key.empty() || key.empty())
|
734
|
+
{
|
735
|
+
return false;
|
736
|
+
}
|
737
|
+
memcached_return rc= memcached_delete_by_key(&memc,
|
738
|
+
master_key.c_str(),
|
739
|
+
master_key.length(),
|
740
|
+
key.c_str(),
|
741
|
+
key.length(),
|
742
|
+
expiration);
|
743
|
+
return (rc == MEMCACHED_SUCCESS);
|
744
|
+
}
|
745
|
+
|
746
|
+
/**
|
747
|
+
* Wipe the contents of memcached servers.
|
748
|
+
*
|
749
|
+
* @param[in] expiration time to wait until wiping contents of
|
750
|
+
* memcached servers
|
751
|
+
* @return true on success; false otherwise
|
752
|
+
*/
|
753
|
+
bool flush(time_t expiration)
|
754
|
+
{
|
755
|
+
memcached_return rc= memcached_flush(&memc, expiration);
|
756
|
+
return (rc == MEMCACHED_SUCCESS);
|
757
|
+
}
|
758
|
+
|
759
|
+
/**
|
760
|
+
* Callback function for result sets. It passes the result
|
761
|
+
* sets to the list of functions provided.
|
762
|
+
*
|
763
|
+
* @param[in] callback list of callback functions
|
764
|
+
* @param[in] context pointer to memory reference that is
|
765
|
+
* supplied to the calling function
|
766
|
+
* @param[in] num_of_callbacks number of callback functions
|
767
|
+
* @return true on success; false otherwise
|
768
|
+
*/
|
769
|
+
bool fetchExecute(memcached_execute_function *callback,
|
770
|
+
void *context,
|
771
|
+
unsigned int num_of_callbacks)
|
772
|
+
{
|
773
|
+
memcached_return rc= memcached_fetch_execute(&memc,
|
774
|
+
callback,
|
775
|
+
context,
|
776
|
+
num_of_callbacks);
|
777
|
+
return (rc == MEMCACHED_SUCCESS);
|
778
|
+
}
|
779
|
+
|
780
|
+
/**
|
781
|
+
* Get the library version string.
|
782
|
+
* @return std::string containing a copy of the library version string.
|
783
|
+
*/
|
784
|
+
const std::string libVersion() const
|
785
|
+
{
|
786
|
+
const char *ver= memcached_lib_version();
|
787
|
+
const std::string version(ver);
|
788
|
+
return version;
|
789
|
+
}
|
790
|
+
|
791
|
+
private:
|
792
|
+
|
793
|
+
memcached_st memc;
|
794
|
+
memcached_result_st result;
|
795
|
+
};
|
796
|
+
|
797
|
+
}
|
798
|
+
|
799
|
+
#endif /* LIBMEMCACHEDPP_H */
|