couchbase-memcached 1.2.8
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.tar.gz.sig +2 -0
- data/BENCHMARKS +134 -0
- data/CHANGELOG +127 -0
- data/LICENSE +184 -0
- data/Manifest +535 -0
- data/README +118 -0
- data/Rakefile +83 -0
- data/TODO +4 -0
- data/couchbase-memcached.gemspec +33 -0
- data/ext/extconf-make.rb +25 -0
- data/ext/extconf.rb +91 -0
- data/ext/libmemcached-0.50/AUTHORS +11 -0
- data/ext/libmemcached-0.50/COPYING +33 -0
- data/ext/libmemcached-0.50/ChangeLog +392 -0
- data/ext/libmemcached-0.50/Makefile.am +114 -0
- data/ext/libmemcached-0.50/Makefile.in +4232 -0
- data/ext/libmemcached-0.50/NEWS +1 -0
- data/ext/libmemcached-0.50/README +43 -0
- data/ext/libmemcached-0.50/README.FIRST +31 -0
- data/ext/libmemcached-0.50/README.win32 +25 -0
- data/ext/libmemcached-0.50/THANKS +14 -0
- data/ext/libmemcached-0.50/TODO +11 -0
- data/ext/libmemcached-0.50/aclocal.m4 +1077 -0
- data/ext/libmemcached-0.50/clients/client_options.h +45 -0
- data/ext/libmemcached-0.50/clients/execute.cc +131 -0
- data/ext/libmemcached-0.50/clients/execute.h +30 -0
- data/ext/libmemcached-0.50/clients/generator.cc +96 -0
- data/ext/libmemcached-0.50/clients/generator.h +36 -0
- data/ext/libmemcached-0.50/clients/include.am +116 -0
- data/ext/libmemcached-0.50/clients/memaslap.c +908 -0
- data/ext/libmemcached-0.50/clients/memcapable.cc +2094 -0
- data/ext/libmemcached-0.50/clients/memcat.cc +242 -0
- data/ext/libmemcached-0.50/clients/memcp.cc +317 -0
- data/ext/libmemcached-0.50/clients/memdump.cc +183 -0
- data/ext/libmemcached-0.50/clients/memerror.cc +102 -0
- data/ext/libmemcached-0.50/clients/memflush.cc +154 -0
- data/ext/libmemcached-0.50/clients/memparse.cc +68 -0
- data/ext/libmemcached-0.50/clients/memrm.cc +177 -0
- data/ext/libmemcached-0.50/clients/memslap.cc +495 -0
- data/ext/libmemcached-0.50/clients/memstat.cc +349 -0
- data/ext/libmemcached-0.50/clients/ms_atomic.h +69 -0
- data/ext/libmemcached-0.50/clients/ms_conn.c +3413 -0
- data/ext/libmemcached-0.50/clients/ms_conn.h +241 -0
- data/ext/libmemcached-0.50/clients/ms_memslap.h +132 -0
- data/ext/libmemcached-0.50/clients/ms_setting.c +1068 -0
- data/ext/libmemcached-0.50/clients/ms_setting.h +181 -0
- data/ext/libmemcached-0.50/clients/ms_sigsegv.c +126 -0
- data/ext/libmemcached-0.50/clients/ms_sigsegv.h +34 -0
- data/ext/libmemcached-0.50/clients/ms_stats.c +307 -0
- data/ext/libmemcached-0.50/clients/ms_stats.h +69 -0
- data/ext/libmemcached-0.50/clients/ms_task.c +1114 -0
- data/ext/libmemcached-0.50/clients/ms_task.h +94 -0
- data/ext/libmemcached-0.50/clients/ms_thread.c +351 -0
- data/ext/libmemcached-0.50/clients/ms_thread.h +78 -0
- data/ext/libmemcached-0.50/clients/utilities.cc +231 -0
- data/ext/libmemcached-0.50/clients/utilities.h +64 -0
- data/ext/libmemcached-0.50/config.h.in +647 -0
- data/ext/libmemcached-0.50/config/autorun.sh +126 -0
- data/ext/libmemcached-0.50/config/compile +143 -0
- data/ext/libmemcached-0.50/config/config.guess +1517 -0
- data/ext/libmemcached-0.50/config/config.rpath +666 -0
- data/ext/libmemcached-0.50/config/config.sub +1760 -0
- data/ext/libmemcached-0.50/config/depcomp +630 -0
- data/ext/libmemcached-0.50/config/install-sh +520 -0
- data/ext/libmemcached-0.50/config/ltmain.sh +9642 -0
- data/ext/libmemcached-0.50/config/missing +376 -0
- data/ext/libmemcached-0.50/config/pandora-plugin +752 -0
- data/ext/libmemcached-0.50/config/uncrustify.cfg +1112 -0
- data/ext/libmemcached-0.50/configure +27103 -0
- data/ext/libmemcached-0.50/configure.ac +186 -0
- data/ext/libmemcached-0.50/docs/conf.py.in +354 -0
- data/ext/libmemcached-0.50/docs/include.am +240 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_clone.3 +88 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_crc32.3 +105 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_create.3 +88 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_fnv1_32.3 +105 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_fnv1_64.3 +105 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_fnv1a_32.3 +105 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_fnv1a_64.3 +105 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_free.3 +88 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_functions.3 +105 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_hsieh.3 +105 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_is_allocated.3 +88 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_jenkins.3 +105 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_md5.3 +105 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_murmur.3 +105 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_value.3 +66 -0
- data/ext/libmemcached-0.50/docs/man/libhashkit.3 +57 -0
- data/ext/libmemcached-0.50/docs/man/libmemcached.3 +208 -0
- data/ext/libmemcached-0.50/docs/man/libmemcached_check_configuration.3 +293 -0
- data/ext/libmemcached-0.50/docs/man/libmemcached_configuration.3 +293 -0
- data/ext/libmemcached-0.50/docs/man/libmemcached_examples.3 +144 -0
- data/ext/libmemcached-0.50/docs/man/libmemcachedutil.3 +68 -0
- data/ext/libmemcached-0.50/docs/man/memaslap.1 +1222 -0
- data/ext/libmemcached-0.50/docs/man/memcached.3 +293 -0
- data/ext/libmemcached-0.50/docs/man/memcached_add.3 +132 -0
- data/ext/libmemcached-0.50/docs/man/memcached_add_by_key.3 +132 -0
- data/ext/libmemcached-0.50/docs/man/memcached_analyze.3 +77 -0
- data/ext/libmemcached-0.50/docs/man/memcached_append.3 +111 -0
- data/ext/libmemcached-0.50/docs/man/memcached_append_by_key.3 +111 -0
- data/ext/libmemcached-0.50/docs/man/memcached_behavior_get.3 +333 -0
- data/ext/libmemcached-0.50/docs/man/memcached_behavior_set.3 +333 -0
- data/ext/libmemcached-0.50/docs/man/memcached_callback_get.3 +159 -0
- data/ext/libmemcached-0.50/docs/man/memcached_callback_set.3 +159 -0
- data/ext/libmemcached-0.50/docs/man/memcached_cas.3 +91 -0
- data/ext/libmemcached-0.50/docs/man/memcached_cas_by_key.3 +91 -0
- data/ext/libmemcached-0.50/docs/man/memcached_clone.3 +99 -0
- data/ext/libmemcached-0.50/docs/man/memcached_create.3 +99 -0
- data/ext/libmemcached-0.50/docs/man/memcached_decrement.3 +124 -0
- data/ext/libmemcached-0.50/docs/man/memcached_decrement_with_initial.3 +124 -0
- data/ext/libmemcached-0.50/docs/man/memcached_delete.3 +83 -0
- data/ext/libmemcached-0.50/docs/man/memcached_delete_by_key.3 +83 -0
- data/ext/libmemcached-0.50/docs/man/memcached_destroy_sasl_auth_data.3 +95 -0
- data/ext/libmemcached-0.50/docs/man/memcached_dump.3 +77 -0
- data/ext/libmemcached-0.50/docs/man/memcached_fetch.3 +174 -0
- data/ext/libmemcached-0.50/docs/man/memcached_fetch_execute.3 +174 -0
- data/ext/libmemcached-0.50/docs/man/memcached_fetch_result.3 +174 -0
- data/ext/libmemcached-0.50/docs/man/memcached_flush_buffers.3 +72 -0
- data/ext/libmemcached-0.50/docs/man/memcached_free.3 +99 -0
- data/ext/libmemcached-0.50/docs/man/memcached_generate_hash.3 +85 -0
- data/ext/libmemcached-0.50/docs/man/memcached_generate_hash_value.3 +85 -0
- data/ext/libmemcached-0.50/docs/man/memcached_get.3 +174 -0
- data/ext/libmemcached-0.50/docs/man/memcached_get_by_key.3 +174 -0
- data/ext/libmemcached-0.50/docs/man/memcached_get_memory_allocators.3 +111 -0
- data/ext/libmemcached-0.50/docs/man/memcached_get_sasl_callbacks.3 +95 -0
- data/ext/libmemcached-0.50/docs/man/memcached_get_user_data.3 +79 -0
- data/ext/libmemcached-0.50/docs/man/memcached_increment.3 +124 -0
- data/ext/libmemcached-0.50/docs/man/memcached_increment_with_initial.3 +124 -0
- data/ext/libmemcached-0.50/docs/man/memcached_lib_version.3 +76 -0
- data/ext/libmemcached-0.50/docs/man/memcached_mget.3 +174 -0
- data/ext/libmemcached-0.50/docs/man/memcached_mget_by_key.3 +174 -0
- data/ext/libmemcached-0.50/docs/man/memcached_mget_execute.3 +174 -0
- data/ext/libmemcached-0.50/docs/man/memcached_mget_execute_by_key.3 +174 -0
- data/ext/libmemcached-0.50/docs/man/memcached_pool_behavior_get.3 +139 -0
- data/ext/libmemcached-0.50/docs/man/memcached_pool_behavior_set.3 +139 -0
- data/ext/libmemcached-0.50/docs/man/memcached_pool_create.3 +139 -0
- data/ext/libmemcached-0.50/docs/man/memcached_pool_destroy.3 +139 -0
- data/ext/libmemcached-0.50/docs/man/memcached_pool_pop.3 +139 -0
- data/ext/libmemcached-0.50/docs/man/memcached_pool_push.3 +139 -0
- data/ext/libmemcached-0.50/docs/man/memcached_pool_st.3 +139 -0
- data/ext/libmemcached-0.50/docs/man/memcached_prepend.3 +111 -0
- data/ext/libmemcached-0.50/docs/man/memcached_prepend_by_key.3 +111 -0
- data/ext/libmemcached-0.50/docs/man/memcached_quit.3 +74 -0
- data/ext/libmemcached-0.50/docs/man/memcached_replace.3 +132 -0
- data/ext/libmemcached-0.50/docs/man/memcached_replace_by_key.3 +132 -0
- data/ext/libmemcached-0.50/docs/man/memcached_sasl_set_auth_data.3 +95 -0
- data/ext/libmemcached-0.50/docs/man/memcached_server_add.3 +141 -0
- data/ext/libmemcached-0.50/docs/man/memcached_server_count.3 +141 -0
- data/ext/libmemcached-0.50/docs/man/memcached_server_cursor.3 +141 -0
- data/ext/libmemcached-0.50/docs/man/memcached_server_list.3 +141 -0
- data/ext/libmemcached-0.50/docs/man/memcached_server_list_append.3 +111 -0
- data/ext/libmemcached-0.50/docs/man/memcached_server_list_count.3 +111 -0
- data/ext/libmemcached-0.50/docs/man/memcached_server_list_free.3 +111 -0
- data/ext/libmemcached-0.50/docs/man/memcached_server_push.3 +141 -0
- data/ext/libmemcached-0.50/docs/man/memcached_servers_parse.3 +111 -0
- data/ext/libmemcached-0.50/docs/man/memcached_set.3 +132 -0
- data/ext/libmemcached-0.50/docs/man/memcached_set_by_key.3 +132 -0
- data/ext/libmemcached-0.50/docs/man/memcached_set_memory_allocators.3 +111 -0
- data/ext/libmemcached-0.50/docs/man/memcached_set_sasl_callbacks.3 +95 -0
- data/ext/libmemcached-0.50/docs/man/memcached_set_user_data.3 +79 -0
- data/ext/libmemcached-0.50/docs/man/memcached_stat.3 +116 -0
- data/ext/libmemcached-0.50/docs/man/memcached_stat_execute.3 +116 -0
- data/ext/libmemcached-0.50/docs/man/memcached_stat_get_keys.3 +116 -0
- data/ext/libmemcached-0.50/docs/man/memcached_stat_get_value.3 +116 -0
- data/ext/libmemcached-0.50/docs/man/memcached_stat_servername.3 +116 -0
- data/ext/libmemcached-0.50/docs/man/memcached_strerror.3 +69 -0
- data/ext/libmemcached-0.50/docs/man/memcached_verbosity.3 +66 -0
- data/ext/libmemcached-0.50/docs/man/memcached_version.3 +76 -0
- data/ext/libmemcached-0.50/docs/man/memcapable.1 +92 -0
- data/ext/libmemcached-0.50/docs/man/memcat.1 +71 -0
- data/ext/libmemcached-0.50/docs/man/memcp.1 +77 -0
- data/ext/libmemcached-0.50/docs/man/memdump.1 +66 -0
- data/ext/libmemcached-0.50/docs/man/memerror.1 +65 -0
- data/ext/libmemcached-0.50/docs/man/memflush.1 +73 -0
- data/ext/libmemcached-0.50/docs/man/memrm.1 +72 -0
- data/ext/libmemcached-0.50/docs/man/memslap.1 +59 -0
- data/ext/libmemcached-0.50/docs/man/memstat.1 +70 -0
- data/ext/libmemcached-0.50/example/include.am +24 -0
- data/ext/libmemcached-0.50/example/interface_v0.c +594 -0
- data/ext/libmemcached-0.50/example/interface_v1.c +411 -0
- data/ext/libmemcached-0.50/example/memcached_light.c +474 -0
- data/ext/libmemcached-0.50/example/memcached_light.h +7 -0
- data/ext/libmemcached-0.50/example/storage.c +172 -0
- data/ext/libmemcached-0.50/example/storage.h +27 -0
- data/ext/libmemcached-0.50/example/storage_innodb.c +535 -0
- data/ext/libmemcached-0.50/libhashkit/algorithm.cc +69 -0
- data/ext/libmemcached-0.50/libhashkit/algorithm.h +96 -0
- data/ext/libmemcached-0.50/libhashkit/behavior.cc +9 -0
- data/ext/libmemcached-0.50/libhashkit/behavior.h +26 -0
- data/ext/libmemcached-0.50/libhashkit/common.h +33 -0
- data/ext/libmemcached-0.50/libhashkit/configure.h.in +19 -0
- data/ext/libmemcached-0.50/libhashkit/crc32.cc +86 -0
- data/ext/libmemcached-0.50/libhashkit/digest.cc +62 -0
- data/ext/libmemcached-0.50/libhashkit/digest.h +30 -0
- data/ext/libmemcached-0.50/libhashkit/fnv.cc +75 -0
- data/ext/libmemcached-0.50/libhashkit/function.cc +156 -0
- data/ext/libmemcached-0.50/libhashkit/function.h +44 -0
- data/ext/libmemcached-0.50/libhashkit/hashkit.cc +100 -0
- data/ext/libmemcached-0.50/libhashkit/hashkit.h +95 -0
- data/ext/libmemcached-0.50/libhashkit/hashkit.hpp +97 -0
- data/ext/libmemcached-0.50/libhashkit/hsieh.cc +70 -0
- data/ext/libmemcached-0.50/libhashkit/include.am +69 -0
- data/ext/libmemcached-0.50/libhashkit/jenkins.cc +214 -0
- data/ext/libmemcached-0.50/libhashkit/ketama.cc +164 -0
- data/ext/libmemcached-0.50/libhashkit/md5.cc +367 -0
- data/ext/libmemcached-0.50/libhashkit/murmur.cc +77 -0
- data/ext/libmemcached-0.50/libhashkit/one_at_a_time.cc +34 -0
- data/ext/libmemcached-0.50/libhashkit/str_algorithm.cc +58 -0
- data/ext/libmemcached-0.50/libhashkit/str_algorithm.h +48 -0
- data/ext/libmemcached-0.50/libhashkit/strerror.cc +25 -0
- data/ext/libmemcached-0.50/libhashkit/strerror.h +23 -0
- data/ext/libmemcached-0.50/libhashkit/types.h +90 -0
- data/ext/libmemcached-0.50/libhashkit/visibility.h +48 -0
- data/ext/libmemcached-0.50/libmemcached/allocators.cc +119 -0
- data/ext/libmemcached-0.50/libmemcached/allocators.h +87 -0
- data/ext/libmemcached-0.50/libmemcached/analyze.cc +110 -0
- data/ext/libmemcached-0.50/libmemcached/analyze.h +66 -0
- data/ext/libmemcached-0.50/libmemcached/array.c +128 -0
- data/ext/libmemcached-0.50/libmemcached/array.h +75 -0
- data/ext/libmemcached-0.50/libmemcached/auto.cc +383 -0
- data/ext/libmemcached-0.50/libmemcached/auto.h +111 -0
- data/ext/libmemcached-0.50/libmemcached/basic_string.h +55 -0
- data/ext/libmemcached-0.50/libmemcached/behavior.cc +590 -0
- data/ext/libmemcached-0.50/libmemcached/behavior.h +86 -0
- data/ext/libmemcached-0.50/libmemcached/byteorder.cc +90 -0
- data/ext/libmemcached-0.50/libmemcached/byteorder.h +52 -0
- data/ext/libmemcached-0.50/libmemcached/callback.cc +160 -0
- data/ext/libmemcached-0.50/libmemcached/callback.h +61 -0
- data/ext/libmemcached-0.50/libmemcached/common.h +182 -0
- data/ext/libmemcached-0.50/libmemcached/configure.h.in +52 -0
- data/ext/libmemcached-0.50/libmemcached/connect.cc +626 -0
- data/ext/libmemcached-0.50/libmemcached/constants.h +167 -0
- data/ext/libmemcached-0.50/libmemcached/delete.cc +266 -0
- data/ext/libmemcached-0.50/libmemcached/delete.h +57 -0
- data/ext/libmemcached-0.50/libmemcached/do.cc +100 -0
- data/ext/libmemcached-0.50/libmemcached/do.hpp +49 -0
- data/ext/libmemcached-0.50/libmemcached/dump.cc +107 -0
- data/ext/libmemcached-0.50/libmemcached/dump.h +51 -0
- data/ext/libmemcached-0.50/libmemcached/error.cc +419 -0
- data/ext/libmemcached-0.50/libmemcached/error.h +61 -0
- data/ext/libmemcached-0.50/libmemcached/error.hpp +87 -0
- data/ext/libmemcached-0.50/libmemcached/exception.hpp +63 -0
- data/ext/libmemcached-0.50/libmemcached/fetch.cc +267 -0
- data/ext/libmemcached-0.50/libmemcached/fetch.h +53 -0
- data/ext/libmemcached-0.50/libmemcached/flush.cc +149 -0
- data/ext/libmemcached-0.50/libmemcached/flush.h +49 -0
- data/ext/libmemcached-0.50/libmemcached/flush_buffers.cc +66 -0
- data/ext/libmemcached-0.50/libmemcached/flush_buffers.h +49 -0
- data/ext/libmemcached-0.50/libmemcached/get.cc +842 -0
- data/ext/libmemcached-0.50/libmemcached/get.h +135 -0
- data/ext/libmemcached-0.50/libmemcached/hash.cc +178 -0
- data/ext/libmemcached-0.50/libmemcached/hash.h +68 -0
- data/ext/libmemcached-0.50/libmemcached/hosts.cc +516 -0
- data/ext/libmemcached-0.50/libmemcached/include.am +183 -0
- data/ext/libmemcached-0.50/libmemcached/initialize_query.cc +70 -0
- data/ext/libmemcached-0.50/libmemcached/initialize_query.h +51 -0
- data/ext/libmemcached-0.50/libmemcached/internal.h +46 -0
- data/ext/libmemcached-0.50/libmemcached/io.cc +920 -0
- data/ext/libmemcached-0.50/libmemcached/io.h +119 -0
- data/ext/libmemcached-0.50/libmemcached/is.h +48 -0
- data/ext/libmemcached-0.50/libmemcached/key.cc +23 -0
- data/ext/libmemcached-0.50/libmemcached/libmemcached_probes.d +30 -0
- data/ext/libmemcached-0.50/libmemcached/libmemcached_probes.h +118 -0
- data/ext/libmemcached-0.50/libmemcached/memcached.cc +437 -0
- data/ext/libmemcached-0.50/libmemcached/memcached.h +214 -0
- data/ext/libmemcached-0.50/libmemcached/memcached.hpp +799 -0
- data/ext/libmemcached-0.50/libmemcached/memcached/README.txt +7 -0
- data/ext/libmemcached-0.50/libmemcached/memcached/protocol_binary.h +726 -0
- data/ext/libmemcached-0.50/libmemcached/memcached/vbucket.h +26 -0
- data/ext/libmemcached-0.50/libmemcached/memcached_util.h +44 -0
- data/ext/libmemcached-0.50/libmemcached/memory.h +79 -0
- data/ext/libmemcached-0.50/libmemcached/options.cc +178 -0
- data/ext/libmemcached-0.50/libmemcached/options.h +49 -0
- data/ext/libmemcached-0.50/libmemcached/options.hpp +56 -0
- data/ext/libmemcached-0.50/libmemcached/options/context.h +151 -0
- data/ext/libmemcached-0.50/libmemcached/options/include.am +19 -0
- data/ext/libmemcached-0.50/libmemcached/options/parser.am +0 -0
- data/ext/libmemcached-0.50/libmemcached/options/parser.cc +2324 -0
- data/ext/libmemcached-0.50/libmemcached/options/parser.h +122 -0
- data/ext/libmemcached-0.50/libmemcached/options/scanner.cc +3203 -0
- data/ext/libmemcached-0.50/libmemcached/options/scanner.h +479 -0
- data/ext/libmemcached-0.50/libmemcached/options/server.h +60 -0
- data/ext/libmemcached-0.50/libmemcached/options/symbol.h +57 -0
- data/ext/libmemcached-0.50/libmemcached/parse.cc +110 -0
- data/ext/libmemcached-0.50/libmemcached/parse.h +23 -0
- data/ext/libmemcached-0.50/libmemcached/platform.h +56 -0
- data/ext/libmemcached-0.50/libmemcached/prefix_key.cc +65 -0
- data/ext/libmemcached-0.50/libmemcached/prefix_key.h +49 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/ascii_handler.c +963 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/ascii_handler.h +40 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/binary_handler.c +1121 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/binary_handler.h +47 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/cache.c +149 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/cache.h +116 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/callback.h +418 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/common.h +163 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/include.am +26 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/pedantic.c +202 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/protocol_handler.c +365 -0
- data/ext/libmemcached-0.50/libmemcached/protocol_handler.h +215 -0
- data/ext/libmemcached-0.50/libmemcached/purge.cc +90 -0
- data/ext/libmemcached-0.50/libmemcached/quit.cc +139 -0
- data/ext/libmemcached-0.50/libmemcached/quit.h +55 -0
- data/ext/libmemcached-0.50/libmemcached/response.cc +619 -0
- data/ext/libmemcached-0.50/libmemcached/response.h +57 -0
- data/ext/libmemcached-0.50/libmemcached/result.cc +173 -0
- data/ext/libmemcached-0.50/libmemcached/result.h +100 -0
- data/ext/libmemcached-0.50/libmemcached/return.h +98 -0
- data/ext/libmemcached-0.50/libmemcached/sasl.c +408 -0
- data/ext/libmemcached-0.50/libmemcached/sasl.h +86 -0
- data/ext/libmemcached-0.50/libmemcached/server.cc +351 -0
- data/ext/libmemcached-0.50/libmemcached/server.h +169 -0
- data/ext/libmemcached-0.50/libmemcached/server_list.cc +88 -0
- data/ext/libmemcached-0.50/libmemcached/server_list.h +77 -0
- data/ext/libmemcached-0.50/libmemcached/stats.cc +623 -0
- data/ext/libmemcached-0.50/libmemcached/stats.h +96 -0
- data/ext/libmemcached-0.50/libmemcached/storage.cc +567 -0
- data/ext/libmemcached-0.50/libmemcached/storage.h +133 -0
- data/ext/libmemcached-0.50/libmemcached/strerror.cc +189 -0
- data/ext/libmemcached-0.50/libmemcached/strerror.h +50 -0
- data/ext/libmemcached-0.50/libmemcached/string.cc +253 -0
- data/ext/libmemcached-0.50/libmemcached/string.h +121 -0
- data/ext/libmemcached-0.50/libmemcached/touch.cc +106 -0
- data/ext/libmemcached-0.50/libmemcached/touch.h +59 -0
- data/ext/libmemcached-0.50/libmemcached/types.h +117 -0
- data/ext/libmemcached-0.50/libmemcached/util.h +40 -0
- data/ext/libmemcached-0.50/libmemcached/util/flush.cc +61 -0
- data/ext/libmemcached-0.50/libmemcached/util/flush.h +50 -0
- data/ext/libmemcached-0.50/libmemcached/util/include.am +34 -0
- data/ext/libmemcached-0.50/libmemcached/util/ping.cc +62 -0
- data/ext/libmemcached-0.50/libmemcached/util/ping.h +49 -0
- data/ext/libmemcached-0.50/libmemcached/util/pool.cc +392 -0
- data/ext/libmemcached-0.50/libmemcached/util/pool.h +78 -0
- data/ext/libmemcached-0.50/libmemcached/util/version.cc +87 -0
- data/ext/libmemcached-0.50/libmemcached/util/version.h +53 -0
- data/ext/libmemcached-0.50/libmemcached/verbosity.cc +97 -0
- data/ext/libmemcached-0.50/libmemcached/verbosity.h +50 -0
- data/ext/libmemcached-0.50/libmemcached/version.cc +214 -0
- data/ext/libmemcached-0.50/libmemcached/version.h +52 -0
- data/ext/libmemcached-0.50/libmemcached/virtual_bucket.c +118 -0
- data/ext/libmemcached-0.50/libmemcached/virtual_bucket.h +59 -0
- data/ext/libmemcached-0.50/libmemcached/visibility.h +51 -0
- data/ext/libmemcached-0.50/libmemcached/watchpoint.h +110 -0
- data/ext/libmemcached-0.50/libtest/callbacks.h +21 -0
- data/ext/libmemcached-0.50/libtest/collection.h +19 -0
- data/ext/libmemcached-0.50/libtest/common.h +50 -0
- data/ext/libmemcached-0.50/libtest/core.h +11 -0
- data/ext/libmemcached-0.50/libtest/error.h +18 -0
- data/ext/libmemcached-0.50/libtest/failed.h +52 -0
- data/ext/libmemcached-0.50/libtest/framework.cc +57 -0
- data/ext/libmemcached-0.50/libtest/framework.h +137 -0
- data/ext/libmemcached-0.50/libtest/get.h +22 -0
- data/ext/libmemcached-0.50/libtest/include.am +52 -0
- data/ext/libmemcached-0.50/libtest/runner.h +19 -0
- data/ext/libmemcached-0.50/libtest/server.c +355 -0
- data/ext/libmemcached-0.50/libtest/server.h +43 -0
- data/ext/libmemcached-0.50/libtest/stats.h +30 -0
- data/ext/libmemcached-0.50/libtest/strerror.h +14 -0
- data/ext/libmemcached-0.50/libtest/test.cc +319 -0
- data/ext/libmemcached-0.50/libtest/test.h +162 -0
- data/ext/libmemcached-0.50/libtest/test.hpp +46 -0
- data/ext/libmemcached-0.50/libtest/visibility.h +69 -0
- data/ext/libmemcached-0.50/m4/ac_cxx_header_stdcxx_98.m4 +83 -0
- data/ext/libmemcached-0.50/m4/acx_pthread.m4 +271 -0
- data/ext/libmemcached-0.50/m4/byteorder.m4 +19 -0
- data/ext/libmemcached-0.50/m4/deprecated.m4 +17 -0
- data/ext/libmemcached-0.50/m4/eagain.m4 +28 -0
- data/ext/libmemcached-0.50/m4/enable_utillib.m4 +16 -0
- data/ext/libmemcached-0.50/m4/gettext.m4 +379 -0
- data/ext/libmemcached-0.50/m4/hsieh.m4 +18 -0
- data/ext/libmemcached-0.50/m4/iconv.m4 +214 -0
- data/ext/libmemcached-0.50/m4/lib-ld.m4 +110 -0
- data/ext/libmemcached-0.50/m4/lib-link.m4 +767 -0
- data/ext/libmemcached-0.50/m4/lib-prefix.m4 +221 -0
- data/ext/libmemcached-0.50/m4/libtool.m4 +7851 -0
- data/ext/libmemcached-0.50/m4/ltoptions.m4 +369 -0
- data/ext/libmemcached-0.50/m4/ltsugar.m4 +123 -0
- data/ext/libmemcached-0.50/m4/ltversion.m4 +23 -0
- data/ext/libmemcached-0.50/m4/lt~obsolete.m4 +98 -0
- data/ext/libmemcached-0.50/m4/memaslap.m4 +9 -0
- data/ext/libmemcached-0.50/m4/memcached.m4 +31 -0
- data/ext/libmemcached-0.50/m4/murmur.m4 +18 -0
- data/ext/libmemcached-0.50/m4/pandora_64bit.m4 +60 -0
- data/ext/libmemcached-0.50/m4/pandora_bison.m4 +33 -0
- data/ext/libmemcached-0.50/m4/pandora_canonical.m4 +418 -0
- data/ext/libmemcached-0.50/m4/pandora_check_compiler_version.m4 +37 -0
- data/ext/libmemcached-0.50/m4/pandora_check_cxx_standard.m4 +23 -0
- data/ext/libmemcached-0.50/m4/pandora_cinttypes.m4 +39 -0
- data/ext/libmemcached-0.50/m4/pandora_clock_gettime.m4 +15 -0
- data/ext/libmemcached-0.50/m4/pandora_compile_stdcxx_0x.m4 +103 -0
- data/ext/libmemcached-0.50/m4/pandora_cstdint.m4 +38 -0
- data/ext/libmemcached-0.50/m4/pandora_cxx_demangle.m4 +27 -0
- data/ext/libmemcached-0.50/m4/pandora_enable_dtrace.m4 +60 -0
- data/ext/libmemcached-0.50/m4/pandora_ensure_gcc_version.m4 +62 -0
- data/ext/libmemcached-0.50/m4/pandora_extensions.m4 +16 -0
- data/ext/libmemcached-0.50/m4/pandora_fdatasync.m4 +25 -0
- data/ext/libmemcached-0.50/m4/pandora_flex.m4 +33 -0
- data/ext/libmemcached-0.50/m4/pandora_have_better_malloc.m4 +66 -0
- data/ext/libmemcached-0.50/m4/pandora_have_boost.m4 +93 -0
- data/ext/libmemcached-0.50/m4/pandora_have_gcc_atomics.m4 +37 -0
- data/ext/libmemcached-0.50/m4/pandora_have_innodb.m4 +41 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libaio.m4 +56 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libavahi.m4 +41 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libbdb.m4 +40 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libboost_date_time.m4 +46 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libboost_filesystem.m4 +47 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libboost_iostreams.m4 +49 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libboost_options.m4 +47 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libboost_regex.m4 +54 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libboost_test.m4 +45 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libboost_thread.m4 +54 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libcassandra.m4 +44 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libcurl.m4 +62 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libdl.m4 +51 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libdrizzle.m4 +61 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libevent.m4 +66 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libgearman.m4 +41 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libgtest.m4 +47 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libhaildb.m4 +43 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libhashkit.m4 +42 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libinnodb.m4 +64 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libldap.m4 +73 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libmemcached.m4 +106 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libmysqlclient.m4 +146 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libndbclient.m4 +80 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libpcre.m4 +73 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libpq.m4 +46 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libpqxx.m4 +44 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libsqlite3.m4 +42 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libtokyocabinet.m4 +54 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libuuid.m4 +55 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libvbucket.m4 +40 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libxml2.m4 +52 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libz.m4 +51 -0
- data/ext/libmemcached-0.50/m4/pandora_have_protobuf.m4 +82 -0
- data/ext/libmemcached-0.50/m4/pandora_have_sasl.m4 +133 -0
- data/ext/libmemcached-0.50/m4/pandora_have_thrift.m4 +45 -0
- data/ext/libmemcached-0.50/m4/pandora_header_assert.m4 +23 -0
- data/ext/libmemcached-0.50/m4/pandora_header_stdcxx_98.m4 +83 -0
- data/ext/libmemcached-0.50/m4/pandora_intltool.m4 +225 -0
- data/ext/libmemcached-0.50/m4/pandora_libtool.m4 +25 -0
- data/ext/libmemcached-0.50/m4/pandora_optimize.m4 +75 -0
- data/ext/libmemcached-0.50/m4/pandora_platform.m4 +117 -0
- data/ext/libmemcached-0.50/m4/pandora_plugins.m4 +62 -0
- data/ext/libmemcached-0.50/m4/pandora_print_callstack.m4 +61 -0
- data/ext/libmemcached-0.50/m4/pandora_pthread.m4 +258 -0
- data/ext/libmemcached-0.50/m4/pandora_python3_devel.m4 +236 -0
- data/ext/libmemcached-0.50/m4/pandora_run_cpplint.m4 +8 -0
- data/ext/libmemcached-0.50/m4/pandora_sasl.m4 +133 -0
- data/ext/libmemcached-0.50/m4/pandora_shared_ptr.m4 +59 -0
- data/ext/libmemcached-0.50/m4/pandora_stack_direction.m4 +39 -0
- data/ext/libmemcached-0.50/m4/pandora_stl_hash.m4 +94 -0
- data/ext/libmemcached-0.50/m4/pandora_swig.m4 +39 -0
- data/ext/libmemcached-0.50/m4/pandora_use_pipe.m4 +36 -0
- data/ext/libmemcached-0.50/m4/pandora_vc_build.m4 +168 -0
- data/ext/libmemcached-0.50/m4/pandora_version.m4 +11 -0
- data/ext/libmemcached-0.50/m4/pandora_visibility.m4 +75 -0
- data/ext/libmemcached-0.50/m4/pandora_warnings.m4 +447 -0
- data/ext/libmemcached-0.50/m4/pandora_with_gettext.m4 +44 -0
- data/ext/libmemcached-0.50/m4/pandora_with_lua.m4 +55 -0
- data/ext/libmemcached-0.50/m4/pandora_with_memcached.m4 +41 -0
- data/ext/libmemcached-0.50/m4/pandora_with_perl.m4 +81 -0
- data/ext/libmemcached-0.50/m4/pandora_with_php.m4 +56 -0
- data/ext/libmemcached-0.50/m4/pandora_with_python.m4 +37 -0
- data/ext/libmemcached-0.50/m4/pandora_with_python3.m4 +44 -0
- data/ext/libmemcached-0.50/m4/pandora_with_r.m4 +33 -0
- data/ext/libmemcached-0.50/m4/pandora_with_ruby.m4 +79 -0
- data/ext/libmemcached-0.50/m4/pandora_with_valgrind.m4 +17 -0
- data/ext/libmemcached-0.50/m4/pkg.m4 +157 -0
- data/ext/libmemcached-0.50/m4/po.m4 +449 -0
- data/ext/libmemcached-0.50/m4/progtest.m4 +92 -0
- data/ext/libmemcached-0.50/m4/protocol_binary.m4 +36 -0
- data/ext/libmemcached-0.50/m4/setsockopt.m4 +73 -0
- data/ext/libmemcached-0.50/m4/socket_send_flags.m4 +66 -0
- data/ext/libmemcached-0.50/poll/include.am +8 -0
- data/ext/libmemcached-0.50/poll/poll.c +77 -0
- data/ext/libmemcached-0.50/poll/poll.h +45 -0
- data/ext/libmemcached-0.50/support/include.am +11 -0
- data/ext/libmemcached-0.50/support/libmemcached-fc.spec.in +105 -0
- data/ext/libmemcached-0.50/support/libmemcached.pc.in +10 -0
- data/ext/libmemcached-0.50/support/libmemcached.spec.in +281 -0
- data/ext/libmemcached-0.50/support/set_benchmark.sh +5 -0
- data/ext/libmemcached-0.50/tests/atomsmasher.cc +295 -0
- data/ext/libmemcached-0.50/tests/basic.cc +134 -0
- data/ext/libmemcached-0.50/tests/basic.h +66 -0
- data/ext/libmemcached-0.50/tests/cpp_example.cc +195 -0
- data/ext/libmemcached-0.50/tests/deprecated.cc +72 -0
- data/ext/libmemcached-0.50/tests/deprecated.h +49 -0
- data/ext/libmemcached-0.50/tests/error_conditions.cc +63 -0
- data/ext/libmemcached-0.50/tests/error_conditions.h +48 -0
- data/ext/libmemcached-0.50/tests/hash_plus.cc +225 -0
- data/ext/libmemcached-0.50/tests/hash_results.h +127 -0
- data/ext/libmemcached-0.50/tests/hashkit_functions.cc +619 -0
- data/ext/libmemcached-0.50/tests/include.am +342 -0
- data/ext/libmemcached-0.50/tests/ketama_test_cases.h +121 -0
- data/ext/libmemcached-0.50/tests/ketama_test_cases_spy.h +118 -0
- data/ext/libmemcached-0.50/tests/libmemcached_world.h +205 -0
- data/ext/libmemcached-0.50/tests/mem_functions.cc +6648 -0
- data/ext/libmemcached-0.50/tests/mem_udp.cc +510 -0
- data/ext/libmemcached-0.50/tests/output_plus.res +5 -0
- data/ext/libmemcached-0.50/tests/parser.cc +599 -0
- data/ext/libmemcached-0.50/tests/parser.h +109 -0
- data/ext/libmemcached-0.50/tests/plus.cpp +240 -0
- data/ext/libmemcached-0.50/tests/pool.cc +78 -0
- data/ext/libmemcached-0.50/tests/pool.h +49 -0
- data/ext/libmemcached-0.50/tests/print.cc +58 -0
- data/ext/libmemcached-0.50/tests/print.h +51 -0
- data/ext/libmemcached-0.50/tests/replication.cc +333 -0
- data/ext/libmemcached-0.50/tests/replication.h +64 -0
- data/ext/libmemcached-0.50/tests/start.cc +29 -0
- data/ext/libmemcached-0.50/tests/string.cc +174 -0
- data/ext/libmemcached-0.50/tests/string.h +67 -0
- data/ext/libmemcached-0.50/tests/virtual_buckets.cc +143 -0
- data/ext/libmemcached-0.50/tests/virtual_buckets.h +51 -0
- data/ext/libmemcached-0.50/win32/include.am +11 -0
- data/ext/libmemcached-0.50/win32/wrappers.h +55 -0
- data/ext/rlibmemcached.i +263 -0
- data/ext/rlibmemcached_wrap.c +16732 -0
- data/lib/memcached.rb +32 -0
- data/lib/memcached/auth.rb +16 -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 +660 -0
- data/lib/memcached/rails.rb +133 -0
- data/test/profile/benchmark.rb +245 -0
- data/test/profile/c_profiler.rb +14 -0
- data/test/profile/exercise.rb +185 -0
- data/test/profile/rb_profiler.rb +21 -0
- data/test/profile/valgrind.rb +10 -0
- data/test/setup.rb +30 -0
- data/test/teardown.rb +0 -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 +1293 -0
- data/test/unit/rails_test.rb +122 -0
- metadata +650 -0
- metadata.gz.sig +0 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
|
|
2
|
+
*
|
|
3
|
+
* Libmemcached library
|
|
4
|
+
*
|
|
5
|
+
* Copyright (C) 2011 Data Differential, http://datadifferential.com/
|
|
6
|
+
* Copyright (C) 2006-2009 Brian Aker All rights reserved.
|
|
7
|
+
*
|
|
8
|
+
* Redistribution and use in source and binary forms, with or without
|
|
9
|
+
* modification, are permitted provided that the following conditions are
|
|
10
|
+
* met:
|
|
11
|
+
*
|
|
12
|
+
* * Redistributions of source code must retain the above copyright
|
|
13
|
+
* notice, this list of conditions and the following disclaimer.
|
|
14
|
+
*
|
|
15
|
+
* * Redistributions in binary form must reproduce the above
|
|
16
|
+
* copyright notice, this list of conditions and the following disclaimer
|
|
17
|
+
* in the documentation and/or other materials provided with the
|
|
18
|
+
* distribution.
|
|
19
|
+
*
|
|
20
|
+
* * The names of its contributors may not be used to endorse or
|
|
21
|
+
* promote products derived from this software without specific prior
|
|
22
|
+
* written permission.
|
|
23
|
+
*
|
|
24
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
25
|
+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
26
|
+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
27
|
+
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
28
|
+
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
29
|
+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
30
|
+
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
31
|
+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
32
|
+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
33
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
34
|
+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
35
|
+
*
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
#pragma once
|
|
39
|
+
|
|
40
|
+
#ifdef __cplusplus
|
|
41
|
+
extern "C" {
|
|
42
|
+
#endif
|
|
43
|
+
|
|
44
|
+
LIBMEMCACHED_API
|
|
45
|
+
memcached_return_t memcached_increment(memcached_st *ptr,
|
|
46
|
+
const char *key, size_t key_length,
|
|
47
|
+
uint32_t offset,
|
|
48
|
+
uint64_t *value);
|
|
49
|
+
LIBMEMCACHED_API
|
|
50
|
+
memcached_return_t memcached_decrement(memcached_st *ptr,
|
|
51
|
+
const char *key, size_t key_length,
|
|
52
|
+
uint32_t offset,
|
|
53
|
+
uint64_t *value);
|
|
54
|
+
|
|
55
|
+
LIBMEMCACHED_API
|
|
56
|
+
memcached_return_t memcached_increment_by_key(memcached_st *ptr,
|
|
57
|
+
const char *group_key, size_t group_key_length,
|
|
58
|
+
const char *key, size_t key_length,
|
|
59
|
+
uint64_t offset,
|
|
60
|
+
uint64_t *value);
|
|
61
|
+
|
|
62
|
+
LIBMEMCACHED_API
|
|
63
|
+
memcached_return_t memcached_decrement_by_key(memcached_st *ptr,
|
|
64
|
+
const char *group_key, size_t group_key_length,
|
|
65
|
+
const char *key, size_t key_length,
|
|
66
|
+
uint64_t offset,
|
|
67
|
+
uint64_t *value);
|
|
68
|
+
|
|
69
|
+
LIBMEMCACHED_API
|
|
70
|
+
memcached_return_t memcached_increment_with_initial(memcached_st *ptr,
|
|
71
|
+
const char *key,
|
|
72
|
+
size_t key_length,
|
|
73
|
+
uint64_t offset,
|
|
74
|
+
uint64_t initial,
|
|
75
|
+
time_t expiration,
|
|
76
|
+
uint64_t *value);
|
|
77
|
+
|
|
78
|
+
LIBMEMCACHED_API
|
|
79
|
+
memcached_return_t memcached_decrement_with_initial(memcached_st *ptr,
|
|
80
|
+
const char *key,
|
|
81
|
+
size_t key_length,
|
|
82
|
+
uint64_t offset,
|
|
83
|
+
uint64_t initial,
|
|
84
|
+
time_t expiration,
|
|
85
|
+
uint64_t *value);
|
|
86
|
+
|
|
87
|
+
LIBMEMCACHED_API
|
|
88
|
+
memcached_return_t memcached_increment_with_initial_by_key(memcached_st *ptr,
|
|
89
|
+
const char *group_key,
|
|
90
|
+
size_t group_key_length,
|
|
91
|
+
const char *key,
|
|
92
|
+
size_t key_length,
|
|
93
|
+
uint64_t offset,
|
|
94
|
+
uint64_t initial,
|
|
95
|
+
time_t expiration,
|
|
96
|
+
uint64_t *value);
|
|
97
|
+
|
|
98
|
+
LIBMEMCACHED_API
|
|
99
|
+
memcached_return_t memcached_decrement_with_initial_by_key(memcached_st *ptr,
|
|
100
|
+
const char *group_key,
|
|
101
|
+
size_t group_key_length,
|
|
102
|
+
const char *key,
|
|
103
|
+
size_t key_length,
|
|
104
|
+
uint64_t offset,
|
|
105
|
+
uint64_t initial,
|
|
106
|
+
time_t expiration,
|
|
107
|
+
uint64_t *value);
|
|
108
|
+
|
|
109
|
+
#ifdef __cplusplus
|
|
110
|
+
}
|
|
111
|
+
#endif
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
|
|
2
|
+
*
|
|
3
|
+
* Libmemcached library
|
|
4
|
+
*
|
|
5
|
+
* Copyright (C) 2011 Data Differential, http://datadifferential.com/
|
|
6
|
+
*
|
|
7
|
+
* Redistribution and use in source and binary forms, with or without
|
|
8
|
+
* modification, are permitted provided that the following conditions are
|
|
9
|
+
* met:
|
|
10
|
+
*
|
|
11
|
+
* * Redistributions of source code must retain the above copyright
|
|
12
|
+
* notice, this list of conditions and the following disclaimer.
|
|
13
|
+
*
|
|
14
|
+
* * Redistributions in binary form must reproduce the above
|
|
15
|
+
* copyright notice, this list of conditions and the following disclaimer
|
|
16
|
+
* in the documentation and/or other materials provided with the
|
|
17
|
+
* distribution.
|
|
18
|
+
*
|
|
19
|
+
* * The names of its contributors may not be used to endorse or
|
|
20
|
+
* promote products derived from this software without specific prior
|
|
21
|
+
* written permission.
|
|
22
|
+
*
|
|
23
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
24
|
+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
25
|
+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
26
|
+
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
27
|
+
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
28
|
+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
29
|
+
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
30
|
+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
31
|
+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
32
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
33
|
+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
34
|
+
*
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
#pragma once
|
|
38
|
+
|
|
39
|
+
// No assumptions of NULL should be made
|
|
40
|
+
|
|
41
|
+
struct memcached_string_t {
|
|
42
|
+
const char *c_str;
|
|
43
|
+
size_t size;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
#define memcached_size(X) (X).size;
|
|
47
|
+
#define memcached_c_str(X) (X).c_str;
|
|
48
|
+
#define memcached_string_param(X) (X).c_str, (X).size
|
|
49
|
+
|
|
50
|
+
#ifdef __cplusplus
|
|
51
|
+
#define memcached_string_printf(X) int((X).size), (X).c_str
|
|
52
|
+
#else
|
|
53
|
+
#define memcached_string_printf(X) (int)((X).size), (X).c_str
|
|
54
|
+
#endif
|
|
55
|
+
|
|
@@ -0,0 +1,590 @@
|
|
|
1
|
+
/* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
|
|
2
|
+
*
|
|
3
|
+
* Libmemcached library
|
|
4
|
+
*
|
|
5
|
+
* Copyright (C) 2011 Data Differential, http://datadifferential.com/
|
|
6
|
+
* Copyright (C) 2006-2009 Brian Aker All rights reserved.
|
|
7
|
+
*
|
|
8
|
+
* Redistribution and use in source and binary forms, with or without
|
|
9
|
+
* modification, are permitted provided that the following conditions are
|
|
10
|
+
* met:
|
|
11
|
+
*
|
|
12
|
+
* * Redistributions of source code must retain the above copyright
|
|
13
|
+
* notice, this list of conditions and the following disclaimer.
|
|
14
|
+
*
|
|
15
|
+
* * Redistributions in binary form must reproduce the above
|
|
16
|
+
* copyright notice, this list of conditions and the following disclaimer
|
|
17
|
+
* in the documentation and/or other materials provided with the
|
|
18
|
+
* distribution.
|
|
19
|
+
*
|
|
20
|
+
* * The names of its contributors may not be used to endorse or
|
|
21
|
+
* promote products derived from this software without specific prior
|
|
22
|
+
* written permission.
|
|
23
|
+
*
|
|
24
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
25
|
+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
26
|
+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
27
|
+
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
28
|
+
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
29
|
+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
30
|
+
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
31
|
+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
32
|
+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
33
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
34
|
+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
35
|
+
*
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
#include <libmemcached/common.h>
|
|
39
|
+
#include <libmemcached/options.hpp>
|
|
40
|
+
#include <libmemcached/virtual_bucket.h>
|
|
41
|
+
|
|
42
|
+
#include <ctime>
|
|
43
|
+
#include <sys/types.h>
|
|
44
|
+
|
|
45
|
+
/*
|
|
46
|
+
This function is used to modify the behavior of running client.
|
|
47
|
+
|
|
48
|
+
We quit all connections so we can reset the sockets.
|
|
49
|
+
*/
|
|
50
|
+
|
|
51
|
+
memcached_return_t memcached_behavior_set(memcached_st *ptr,
|
|
52
|
+
const memcached_behavior_t flag,
|
|
53
|
+
uint64_t data)
|
|
54
|
+
{
|
|
55
|
+
if (not ptr)
|
|
56
|
+
return MEMCACHED_INVALID_ARGUMENTS;
|
|
57
|
+
|
|
58
|
+
switch (flag)
|
|
59
|
+
{
|
|
60
|
+
case MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS:
|
|
61
|
+
ptr->number_of_replicas= (uint32_t)data;
|
|
62
|
+
break;
|
|
63
|
+
|
|
64
|
+
case MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK:
|
|
65
|
+
ptr->io_msg_watermark= (uint32_t) data;
|
|
66
|
+
break;
|
|
67
|
+
|
|
68
|
+
case MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK:
|
|
69
|
+
ptr->io_bytes_watermark= (uint32_t)data;
|
|
70
|
+
break;
|
|
71
|
+
|
|
72
|
+
case MEMCACHED_BEHAVIOR_IO_KEY_PREFETCH:
|
|
73
|
+
ptr->io_key_prefetch = (uint32_t)data;
|
|
74
|
+
break;
|
|
75
|
+
|
|
76
|
+
case MEMCACHED_BEHAVIOR_SND_TIMEOUT:
|
|
77
|
+
ptr->snd_timeout= (int32_t)data;
|
|
78
|
+
break;
|
|
79
|
+
|
|
80
|
+
case MEMCACHED_BEHAVIOR_RCV_TIMEOUT:
|
|
81
|
+
ptr->rcv_timeout= (int32_t)data;
|
|
82
|
+
break;
|
|
83
|
+
|
|
84
|
+
case MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS:
|
|
85
|
+
ptr->flags.auto_eject_hosts= bool(data);
|
|
86
|
+
|
|
87
|
+
case MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT:
|
|
88
|
+
ptr->server_failure_limit= (uint32_t)data;
|
|
89
|
+
break;
|
|
90
|
+
|
|
91
|
+
case MEMCACHED_BEHAVIOR_BINARY_PROTOCOL:
|
|
92
|
+
send_quit(ptr); // We need t shutdown all of the connections to make sure we do the correct protocol
|
|
93
|
+
if (data)
|
|
94
|
+
{
|
|
95
|
+
ptr->flags.verify_key= false;
|
|
96
|
+
}
|
|
97
|
+
ptr->flags.binary_protocol= bool(data);
|
|
98
|
+
break;
|
|
99
|
+
|
|
100
|
+
case MEMCACHED_BEHAVIOR_SUPPORT_CAS:
|
|
101
|
+
ptr->flags.support_cas= bool(data);
|
|
102
|
+
break;
|
|
103
|
+
|
|
104
|
+
case MEMCACHED_BEHAVIOR_NO_BLOCK:
|
|
105
|
+
ptr->flags.no_block= bool(data);
|
|
106
|
+
send_quit(ptr);
|
|
107
|
+
break;
|
|
108
|
+
|
|
109
|
+
case MEMCACHED_BEHAVIOR_BUFFER_REQUESTS:
|
|
110
|
+
ptr->flags.buffer_requests= bool(data);
|
|
111
|
+
send_quit(ptr);
|
|
112
|
+
break;
|
|
113
|
+
|
|
114
|
+
case MEMCACHED_BEHAVIOR_USE_UDP:
|
|
115
|
+
if (memcached_server_count(ptr))
|
|
116
|
+
{
|
|
117
|
+
return MEMCACHED_FAILURE;
|
|
118
|
+
}
|
|
119
|
+
ptr->flags.use_udp= bool(data);
|
|
120
|
+
if (data)
|
|
121
|
+
{
|
|
122
|
+
ptr->flags.no_reply= bool(data);
|
|
123
|
+
}
|
|
124
|
+
break;
|
|
125
|
+
|
|
126
|
+
case MEMCACHED_BEHAVIOR_TCP_NODELAY:
|
|
127
|
+
ptr->flags.tcp_nodelay= bool(data);
|
|
128
|
+
send_quit(ptr);
|
|
129
|
+
break;
|
|
130
|
+
|
|
131
|
+
case MEMCACHED_BEHAVIOR_TCP_KEEPALIVE:
|
|
132
|
+
ptr->flags.tcp_keepalive= bool(data);
|
|
133
|
+
send_quit(ptr);
|
|
134
|
+
break;
|
|
135
|
+
|
|
136
|
+
case MEMCACHED_BEHAVIOR_DISTRIBUTION:
|
|
137
|
+
return memcached_behavior_set_distribution(ptr, (memcached_server_distribution_t)data);
|
|
138
|
+
|
|
139
|
+
case MEMCACHED_BEHAVIOR_KETAMA:
|
|
140
|
+
{
|
|
141
|
+
if (data) // Turn on
|
|
142
|
+
return memcached_behavior_set_distribution(ptr, MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA);
|
|
143
|
+
|
|
144
|
+
return memcached_behavior_set_distribution(ptr, MEMCACHED_DISTRIBUTION_MODULA);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
case MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED:
|
|
148
|
+
{
|
|
149
|
+
(void)memcached_behavior_set_key_hash(ptr, MEMCACHED_HASH_MD5);
|
|
150
|
+
(void)memcached_behavior_set_distribution_hash(ptr, MEMCACHED_HASH_MD5);
|
|
151
|
+
ptr->ketama.weighted= bool(data);
|
|
152
|
+
/**
|
|
153
|
+
@note We try to keep the same distribution going. This should be deprecated and rewritten.
|
|
154
|
+
*/
|
|
155
|
+
return memcached_behavior_set_distribution(ptr, MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
case MEMCACHED_BEHAVIOR_HASH:
|
|
159
|
+
return memcached_behavior_set_key_hash(ptr, (memcached_hash_t)(data));
|
|
160
|
+
|
|
161
|
+
case MEMCACHED_BEHAVIOR_KETAMA_HASH:
|
|
162
|
+
return memcached_behavior_set_distribution_hash(ptr, (memcached_hash_t)(data));
|
|
163
|
+
|
|
164
|
+
case MEMCACHED_BEHAVIOR_CACHE_LOOKUPS:
|
|
165
|
+
return memcached_set_error(*ptr, MEMCACHED_DEPRECATED, MEMCACHED_AT,
|
|
166
|
+
memcached_literal_param("MEMCACHED_BEHAVIOR_CACHE_LOOKUPS has been deprecated."));
|
|
167
|
+
|
|
168
|
+
case MEMCACHED_BEHAVIOR_VERIFY_KEY:
|
|
169
|
+
if (ptr->flags.binary_protocol)
|
|
170
|
+
return memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT,
|
|
171
|
+
memcached_literal_param("MEMCACHED_BEHAVIOR_VERIFY_KEY if the binary protocol has been enabled."));
|
|
172
|
+
ptr->flags.verify_key= bool(data);
|
|
173
|
+
break;
|
|
174
|
+
|
|
175
|
+
case MEMCACHED_BEHAVIOR_SORT_HOSTS:
|
|
176
|
+
{
|
|
177
|
+
ptr->flags.use_sort_hosts= bool(data);
|
|
178
|
+
run_distribution(ptr);
|
|
179
|
+
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
case MEMCACHED_BEHAVIOR_POLL_TIMEOUT:
|
|
184
|
+
ptr->poll_timeout= (int32_t)data;
|
|
185
|
+
break;
|
|
186
|
+
|
|
187
|
+
case MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT:
|
|
188
|
+
ptr->connect_timeout= (int32_t)data;
|
|
189
|
+
break;
|
|
190
|
+
|
|
191
|
+
case MEMCACHED_BEHAVIOR_RETRY_TIMEOUT:
|
|
192
|
+
ptr->retry_timeout= (int32_t)data;
|
|
193
|
+
break;
|
|
194
|
+
|
|
195
|
+
case MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE:
|
|
196
|
+
ptr->send_size= (int32_t)data;
|
|
197
|
+
send_quit(ptr);
|
|
198
|
+
break;
|
|
199
|
+
|
|
200
|
+
case MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE:
|
|
201
|
+
ptr->recv_size= (int32_t)data;
|
|
202
|
+
send_quit(ptr);
|
|
203
|
+
break;
|
|
204
|
+
|
|
205
|
+
case MEMCACHED_BEHAVIOR_TCP_KEEPIDLE:
|
|
206
|
+
ptr->tcp_keepidle= (uint32_t)data;
|
|
207
|
+
send_quit(ptr);
|
|
208
|
+
break;
|
|
209
|
+
|
|
210
|
+
case MEMCACHED_BEHAVIOR_USER_DATA:
|
|
211
|
+
return memcached_set_error(*ptr, MEMCACHED_DEPRECATED, MEMCACHED_AT,
|
|
212
|
+
memcached_literal_param("MEMCACHED_BEHAVIOR_USER_DATA deprecated."));
|
|
213
|
+
|
|
214
|
+
case MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY:
|
|
215
|
+
ptr->flags.hash_with_prefix_key= bool(data);
|
|
216
|
+
break;
|
|
217
|
+
|
|
218
|
+
case MEMCACHED_BEHAVIOR_NOREPLY:
|
|
219
|
+
ptr->flags.no_reply= bool(data);
|
|
220
|
+
break;
|
|
221
|
+
|
|
222
|
+
case MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS:
|
|
223
|
+
ptr->flags.auto_eject_hosts= bool(data);
|
|
224
|
+
break;
|
|
225
|
+
|
|
226
|
+
case MEMCACHED_BEHAVIOR_RANDOMIZE_REPLICA_READ:
|
|
227
|
+
srandom((uint32_t) time(NULL));
|
|
228
|
+
ptr->flags.randomize_replica_read= bool(data);
|
|
229
|
+
break;
|
|
230
|
+
|
|
231
|
+
case MEMCACHED_BEHAVIOR_CORK:
|
|
232
|
+
return memcached_set_error(*ptr, MEMCACHED_DEPRECATED, MEMCACHED_AT,
|
|
233
|
+
memcached_literal_param("MEMCACHED_BEHAVIOR_CORK is now incorporated into the driver by default."));
|
|
234
|
+
|
|
235
|
+
case MEMCACHED_BEHAVIOR_LOAD_FROM_FILE:
|
|
236
|
+
return memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT,
|
|
237
|
+
memcached_literal_param("MEMCACHED_BEHAVIOR_LOAD_FROM_FILE can not be set with memcached_behavior_set()"));
|
|
238
|
+
|
|
239
|
+
case MEMCACHED_BEHAVIOR_MAX:
|
|
240
|
+
default:
|
|
241
|
+
/* Shouldn't get here */
|
|
242
|
+
WATCHPOINT_ASSERT(0);
|
|
243
|
+
return memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT,
|
|
244
|
+
memcached_literal_param("Invalid behavior passed to memcached_behavior_set()"));
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
return MEMCACHED_SUCCESS;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
bool _is_auto_eject_host(const memcached_st *ptr)
|
|
251
|
+
{
|
|
252
|
+
return ptr->flags.auto_eject_hosts;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
uint64_t memcached_behavior_get(memcached_st *ptr,
|
|
256
|
+
const memcached_behavior_t flag)
|
|
257
|
+
{
|
|
258
|
+
switch (flag)
|
|
259
|
+
{
|
|
260
|
+
case MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS:
|
|
261
|
+
return ptr->number_of_replicas;
|
|
262
|
+
|
|
263
|
+
case MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK:
|
|
264
|
+
return ptr->io_msg_watermark;
|
|
265
|
+
|
|
266
|
+
case MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK:
|
|
267
|
+
return ptr->io_bytes_watermark;
|
|
268
|
+
|
|
269
|
+
case MEMCACHED_BEHAVIOR_IO_KEY_PREFETCH:
|
|
270
|
+
return ptr->io_key_prefetch;
|
|
271
|
+
|
|
272
|
+
case MEMCACHED_BEHAVIOR_BINARY_PROTOCOL:
|
|
273
|
+
return ptr->flags.binary_protocol;
|
|
274
|
+
|
|
275
|
+
case MEMCACHED_BEHAVIOR_SUPPORT_CAS:
|
|
276
|
+
return ptr->flags.support_cas;
|
|
277
|
+
|
|
278
|
+
case MEMCACHED_BEHAVIOR_CACHE_LOOKUPS:
|
|
279
|
+
return true;
|
|
280
|
+
|
|
281
|
+
case MEMCACHED_BEHAVIOR_NO_BLOCK:
|
|
282
|
+
return ptr->flags.no_block;
|
|
283
|
+
|
|
284
|
+
case MEMCACHED_BEHAVIOR_BUFFER_REQUESTS:
|
|
285
|
+
return ptr->flags.buffer_requests;
|
|
286
|
+
|
|
287
|
+
case MEMCACHED_BEHAVIOR_USE_UDP:
|
|
288
|
+
return ptr->flags.use_udp;
|
|
289
|
+
|
|
290
|
+
case MEMCACHED_BEHAVIOR_TCP_NODELAY:
|
|
291
|
+
return ptr->flags.tcp_nodelay;
|
|
292
|
+
|
|
293
|
+
case MEMCACHED_BEHAVIOR_VERIFY_KEY:
|
|
294
|
+
return ptr->flags.verify_key;
|
|
295
|
+
|
|
296
|
+
case MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED:
|
|
297
|
+
return ptr->ketama.weighted;
|
|
298
|
+
|
|
299
|
+
case MEMCACHED_BEHAVIOR_DISTRIBUTION:
|
|
300
|
+
return ptr->distribution;
|
|
301
|
+
|
|
302
|
+
case MEMCACHED_BEHAVIOR_KETAMA:
|
|
303
|
+
return (ptr->distribution == MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA) ? (uint64_t) 1 : 0;
|
|
304
|
+
|
|
305
|
+
case MEMCACHED_BEHAVIOR_HASH:
|
|
306
|
+
return hashkit_get_function(&ptr->hashkit);
|
|
307
|
+
|
|
308
|
+
case MEMCACHED_BEHAVIOR_KETAMA_HASH:
|
|
309
|
+
return hashkit_get_function(&ptr->hashkit);
|
|
310
|
+
|
|
311
|
+
case MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS:
|
|
312
|
+
case MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT:
|
|
313
|
+
return ptr->server_failure_limit;
|
|
314
|
+
|
|
315
|
+
case MEMCACHED_BEHAVIOR_SORT_HOSTS:
|
|
316
|
+
return ptr->flags.use_sort_hosts;
|
|
317
|
+
|
|
318
|
+
case MEMCACHED_BEHAVIOR_POLL_TIMEOUT:
|
|
319
|
+
return (uint64_t)ptr->poll_timeout;
|
|
320
|
+
|
|
321
|
+
case MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT:
|
|
322
|
+
return (uint64_t)ptr->connect_timeout;
|
|
323
|
+
|
|
324
|
+
case MEMCACHED_BEHAVIOR_RETRY_TIMEOUT:
|
|
325
|
+
return (uint64_t)ptr->retry_timeout;
|
|
326
|
+
|
|
327
|
+
case MEMCACHED_BEHAVIOR_SND_TIMEOUT:
|
|
328
|
+
return (uint64_t)ptr->snd_timeout;
|
|
329
|
+
|
|
330
|
+
case MEMCACHED_BEHAVIOR_RCV_TIMEOUT:
|
|
331
|
+
return (uint64_t)ptr->rcv_timeout;
|
|
332
|
+
|
|
333
|
+
case MEMCACHED_BEHAVIOR_TCP_KEEPIDLE:
|
|
334
|
+
return (uint64_t)ptr->tcp_keepidle;
|
|
335
|
+
|
|
336
|
+
case MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE:
|
|
337
|
+
{
|
|
338
|
+
int sock_size= 0;
|
|
339
|
+
socklen_t sock_length= sizeof(int);
|
|
340
|
+
|
|
341
|
+
if (ptr->send_size != -1) // If value is -1 then we are using the default
|
|
342
|
+
return (uint64_t) ptr->send_size;
|
|
343
|
+
|
|
344
|
+
memcached_server_write_instance_st instance= memcached_server_instance_fetch(ptr, 0);
|
|
345
|
+
|
|
346
|
+
if (instance) // If we have an instance we test, otherwise we just set and pray
|
|
347
|
+
{
|
|
348
|
+
/* REFACTOR */
|
|
349
|
+
/* We just try the first host, and if it is down we return zero */
|
|
350
|
+
if (memcached_failed(memcached_connect(instance)))
|
|
351
|
+
{
|
|
352
|
+
return 0;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
if (memcached_failed(memcached_io_wait_for_write(instance)))
|
|
356
|
+
{
|
|
357
|
+
return 0;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
if (getsockopt(instance->fd, SOL_SOCKET, SO_SNDBUF, &sock_size, &sock_length) < 0)
|
|
361
|
+
{
|
|
362
|
+
memcached_set_errno(*ptr, errno, MEMCACHED_AT);
|
|
363
|
+
return 0; /* Zero means error */
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
return (uint64_t) sock_size;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
case MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE:
|
|
371
|
+
{
|
|
372
|
+
int sock_size= 0;
|
|
373
|
+
socklen_t sock_length= sizeof(int);
|
|
374
|
+
|
|
375
|
+
if (ptr->recv_size != -1) // If value is -1 then we are using the default
|
|
376
|
+
return (uint64_t) ptr->recv_size;
|
|
377
|
+
|
|
378
|
+
memcached_server_write_instance_st instance= memcached_server_instance_fetch(ptr, 0);
|
|
379
|
+
|
|
380
|
+
/**
|
|
381
|
+
@note REFACTOR
|
|
382
|
+
*/
|
|
383
|
+
if (instance)
|
|
384
|
+
{
|
|
385
|
+
/* We just try the first host, and if it is down we return zero */
|
|
386
|
+
if (memcached_failed(memcached_connect(instance)))
|
|
387
|
+
{
|
|
388
|
+
return 0;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
if (memcached_failed(memcached_io_wait_for_write(instance)))
|
|
392
|
+
{
|
|
393
|
+
return 0;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
if (getsockopt(instance->fd, SOL_SOCKET, SO_RCVBUF, &sock_size, &sock_length) < 0)
|
|
397
|
+
{
|
|
398
|
+
memcached_set_errno(*ptr, errno, MEMCACHED_AT);
|
|
399
|
+
return 0; /* Zero means error */
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
return (uint64_t) sock_size;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
case MEMCACHED_BEHAVIOR_USER_DATA:
|
|
408
|
+
memcached_set_error(*ptr, MEMCACHED_DEPRECATED, MEMCACHED_AT,
|
|
409
|
+
memcached_literal_param("MEMCACHED_BEHAVIOR_USER_DATA deprecated."));
|
|
410
|
+
return 0;
|
|
411
|
+
|
|
412
|
+
case MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY:
|
|
413
|
+
return ptr->flags.hash_with_prefix_key;
|
|
414
|
+
|
|
415
|
+
case MEMCACHED_BEHAVIOR_NOREPLY:
|
|
416
|
+
return ptr->flags.no_reply;
|
|
417
|
+
|
|
418
|
+
case MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS:
|
|
419
|
+
return ptr->flags.auto_eject_hosts;
|
|
420
|
+
|
|
421
|
+
case MEMCACHED_BEHAVIOR_RANDOMIZE_REPLICA_READ:
|
|
422
|
+
return ptr->flags.randomize_replica_read;
|
|
423
|
+
|
|
424
|
+
case MEMCACHED_BEHAVIOR_CORK:
|
|
425
|
+
#ifdef HAVE_MSG_MORE
|
|
426
|
+
return true;
|
|
427
|
+
#else
|
|
428
|
+
return false;
|
|
429
|
+
#endif
|
|
430
|
+
|
|
431
|
+
case MEMCACHED_BEHAVIOR_TCP_KEEPALIVE:
|
|
432
|
+
return ptr->flags.tcp_keepalive;
|
|
433
|
+
|
|
434
|
+
case MEMCACHED_BEHAVIOR_LOAD_FROM_FILE:
|
|
435
|
+
return bool(memcached_parse_filename(ptr));
|
|
436
|
+
|
|
437
|
+
case MEMCACHED_BEHAVIOR_MAX:
|
|
438
|
+
default:
|
|
439
|
+
WATCHPOINT_ASSERT(0); /* Programming mistake if it gets this far */
|
|
440
|
+
return 0;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
/* NOTREACHED */
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
memcached_return_t memcached_behavior_set_distribution(memcached_st *ptr, memcached_server_distribution_t type)
|
|
448
|
+
{
|
|
449
|
+
if (type < MEMCACHED_DISTRIBUTION_CONSISTENT_MAX)
|
|
450
|
+
{
|
|
451
|
+
if (MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED)
|
|
452
|
+
{
|
|
453
|
+
ptr->ketama.weighted= true;
|
|
454
|
+
}
|
|
455
|
+
else
|
|
456
|
+
{
|
|
457
|
+
ptr->ketama.weighted= false;
|
|
458
|
+
}
|
|
459
|
+
ptr->distribution= type;
|
|
460
|
+
run_distribution(ptr);
|
|
461
|
+
return MEMCACHED_SUCCESS;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
return memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT,
|
|
465
|
+
memcached_literal_param("Invalid memcached_server_distribution_t"));
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
memcached_server_distribution_t memcached_behavior_get_distribution(memcached_st *ptr)
|
|
470
|
+
{
|
|
471
|
+
return ptr->distribution;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
memcached_return_t memcached_behavior_set_key_hash(memcached_st *ptr, memcached_hash_t type)
|
|
475
|
+
{
|
|
476
|
+
if (hashkit_success(hashkit_set_function(&ptr->hashkit, (hashkit_hash_algorithm_t)type)))
|
|
477
|
+
return MEMCACHED_SUCCESS;
|
|
478
|
+
|
|
479
|
+
return memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT,
|
|
480
|
+
memcached_literal_param("Invalid memcached_hash_t()"));
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
memcached_hash_t memcached_behavior_get_key_hash(memcached_st *ptr)
|
|
484
|
+
{
|
|
485
|
+
return (memcached_hash_t)hashkit_get_function(&ptr->hashkit);
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
memcached_return_t memcached_behavior_set_distribution_hash(memcached_st *ptr, memcached_hash_t type)
|
|
489
|
+
{
|
|
490
|
+
if (hashkit_success(hashkit_set_distribution_function(&ptr->hashkit, (hashkit_hash_algorithm_t)type)))
|
|
491
|
+
return MEMCACHED_SUCCESS;
|
|
492
|
+
|
|
493
|
+
return memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT,
|
|
494
|
+
memcached_literal_param("Invalid memcached_hash_t()"));
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
memcached_hash_t memcached_behavior_get_distribution_hash(memcached_st *ptr)
|
|
498
|
+
{
|
|
499
|
+
return (memcached_hash_t)hashkit_get_function(&ptr->hashkit);
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
const char *libmemcached_string_behavior(const memcached_behavior_t flag)
|
|
503
|
+
{
|
|
504
|
+
switch (flag)
|
|
505
|
+
{
|
|
506
|
+
case MEMCACHED_BEHAVIOR_NO_BLOCK: return "MEMCACHED_BEHAVIOR_NO_BLOCK";
|
|
507
|
+
case MEMCACHED_BEHAVIOR_TCP_NODELAY: return "MEMCACHED_BEHAVIOR_TCP_NODELAY";
|
|
508
|
+
case MEMCACHED_BEHAVIOR_HASH: return "MEMCACHED_BEHAVIOR_HASH";
|
|
509
|
+
case MEMCACHED_BEHAVIOR_KETAMA: return "MEMCACHED_BEHAVIOR_KETAMA";
|
|
510
|
+
case MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE: return "MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE";
|
|
511
|
+
case MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE: return "MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE";
|
|
512
|
+
case MEMCACHED_BEHAVIOR_CACHE_LOOKUPS: return "MEMCACHED_BEHAVIOR_CACHE_LOOKUPS";
|
|
513
|
+
case MEMCACHED_BEHAVIOR_SUPPORT_CAS: return "MEMCACHED_BEHAVIOR_SUPPORT_CAS";
|
|
514
|
+
case MEMCACHED_BEHAVIOR_POLL_TIMEOUT: return "MEMCACHED_BEHAVIOR_POLL_TIMEOUT";
|
|
515
|
+
case MEMCACHED_BEHAVIOR_DISTRIBUTION: return "MEMCACHED_BEHAVIOR_DISTRIBUTION";
|
|
516
|
+
case MEMCACHED_BEHAVIOR_BUFFER_REQUESTS: return "MEMCACHED_BEHAVIOR_BUFFER_REQUESTS";
|
|
517
|
+
case MEMCACHED_BEHAVIOR_USER_DATA: return "MEMCACHED_BEHAVIOR_USER_DATA";
|
|
518
|
+
case MEMCACHED_BEHAVIOR_SORT_HOSTS: return "MEMCACHED_BEHAVIOR_SORT_HOSTS";
|
|
519
|
+
case MEMCACHED_BEHAVIOR_VERIFY_KEY: return "MEMCACHED_BEHAVIOR_VERIFY_KEY";
|
|
520
|
+
case MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT: return "MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT";
|
|
521
|
+
case MEMCACHED_BEHAVIOR_RETRY_TIMEOUT: return "MEMCACHED_BEHAVIOR_RETRY_TIMEOUT";
|
|
522
|
+
case MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED: return "MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED";
|
|
523
|
+
case MEMCACHED_BEHAVIOR_KETAMA_HASH: return "MEMCACHED_BEHAVIOR_KETAMA_HASH";
|
|
524
|
+
case MEMCACHED_BEHAVIOR_BINARY_PROTOCOL: return "MEMCACHED_BEHAVIOR_BINARY_PROTOCOL";
|
|
525
|
+
case MEMCACHED_BEHAVIOR_SND_TIMEOUT: return "MEMCACHED_BEHAVIOR_SND_TIMEOUT";
|
|
526
|
+
case MEMCACHED_BEHAVIOR_RCV_TIMEOUT: return "MEMCACHED_BEHAVIOR_RCV_TIMEOUT";
|
|
527
|
+
case MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT: return "MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT";
|
|
528
|
+
case MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK: return "MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK";
|
|
529
|
+
case MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK: return "MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK";
|
|
530
|
+
case MEMCACHED_BEHAVIOR_IO_KEY_PREFETCH: return "MEMCACHED_BEHAVIOR_IO_KEY_PREFETCH";
|
|
531
|
+
case MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY: return "MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY";
|
|
532
|
+
case MEMCACHED_BEHAVIOR_NOREPLY: return "MEMCACHED_BEHAVIOR_NOREPLY";
|
|
533
|
+
case MEMCACHED_BEHAVIOR_USE_UDP: return "MEMCACHED_BEHAVIOR_USE_UDP";
|
|
534
|
+
case MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS: return "MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS";
|
|
535
|
+
case MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS: return "MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS";
|
|
536
|
+
case MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS: return "MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS";
|
|
537
|
+
case MEMCACHED_BEHAVIOR_RANDOMIZE_REPLICA_READ: return "MEMCACHED_BEHAVIOR_RANDOMIZE_REPLICA_READ";
|
|
538
|
+
case MEMCACHED_BEHAVIOR_CORK: return "MEMCACHED_BEHAVIOR_CORK";
|
|
539
|
+
case MEMCACHED_BEHAVIOR_TCP_KEEPALIVE: return "MEMCACHED_BEHAVIOR_TCP_KEEPALIVE";
|
|
540
|
+
case MEMCACHED_BEHAVIOR_TCP_KEEPIDLE: return "MEMCACHED_BEHAVIOR_TCP_KEEPIDLE";
|
|
541
|
+
case MEMCACHED_BEHAVIOR_LOAD_FROM_FILE: return "MEMCACHED_BEHAVIOR_LOAD_FROM_FILE";
|
|
542
|
+
default:
|
|
543
|
+
case MEMCACHED_BEHAVIOR_MAX: return "INVALID memcached_behavior_t";
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
const char *libmemcached_string_distribution(const memcached_server_distribution_t flag)
|
|
548
|
+
{
|
|
549
|
+
switch (flag)
|
|
550
|
+
{
|
|
551
|
+
case MEMCACHED_DISTRIBUTION_MODULA: return "MEMCACHED_DISTRIBUTION_MODULA";
|
|
552
|
+
case MEMCACHED_DISTRIBUTION_CONSISTENT: return "MEMCACHED_DISTRIBUTION_CONSISTENT";
|
|
553
|
+
case MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA: return "MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA";
|
|
554
|
+
case MEMCACHED_DISTRIBUTION_RANDOM: return "MEMCACHED_DISTRIBUTION_RANDOM";
|
|
555
|
+
case MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA_SPY: return "MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA_SPY";
|
|
556
|
+
case MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED: return "MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED";
|
|
557
|
+
case MEMCACHED_DISTRIBUTION_VIRTUAL_BUCKET: return "MEMCACHED_DISTRIBUTION_VIRTUAL_BUCKET";
|
|
558
|
+
default:
|
|
559
|
+
case MEMCACHED_DISTRIBUTION_CONSISTENT_MAX: return "INVALID memcached_server_distribution_t";
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
memcached_return_t memcached_bucket_set(memcached_st *self,
|
|
564
|
+
const uint32_t *host_map,
|
|
565
|
+
const uint32_t *forward_map,
|
|
566
|
+
const uint32_t buckets,
|
|
567
|
+
const uint32_t replicas)
|
|
568
|
+
{
|
|
569
|
+
memcached_return_t rc;
|
|
570
|
+
|
|
571
|
+
if (not self)
|
|
572
|
+
return MEMCACHED_INVALID_ARGUMENTS;
|
|
573
|
+
|
|
574
|
+
if (not host_map)
|
|
575
|
+
return MEMCACHED_INVALID_ARGUMENTS;
|
|
576
|
+
|
|
577
|
+
memcached_server_distribution_t old= memcached_behavior_get_distribution(self);
|
|
578
|
+
|
|
579
|
+
if (memcached_failed(rc =memcached_behavior_set_distribution(self, MEMCACHED_DISTRIBUTION_VIRTUAL_BUCKET)))
|
|
580
|
+
{
|
|
581
|
+
return rc;
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
if (memcached_failed(rc= memcached_virtual_bucket_create(self, host_map, forward_map, buckets, replicas)))
|
|
585
|
+
{
|
|
586
|
+
memcached_behavior_set_distribution(self, old);
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
return rc;
|
|
590
|
+
}
|