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,119 @@
|
|
|
1
|
+
/* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
|
|
2
|
+
*
|
|
3
|
+
* LibMemcached
|
|
4
|
+
*
|
|
5
|
+
* Copyright (C) 2011 Data Differential, http://datadifferential.com/
|
|
6
|
+
* Copyright (C) 2006-2009 Brian Aker
|
|
7
|
+
* All rights reserved.
|
|
8
|
+
*
|
|
9
|
+
* Redistribution and use in source and binary forms, with or without
|
|
10
|
+
* modification, are permitted provided that the following conditions are
|
|
11
|
+
* met:
|
|
12
|
+
*
|
|
13
|
+
* * Redistributions of source code must retain the above copyright
|
|
14
|
+
* notice, this list of conditions and the following disclaimer.
|
|
15
|
+
*
|
|
16
|
+
* * Redistributions in binary form must reproduce the above
|
|
17
|
+
* copyright notice, this list of conditions and the following disclaimer
|
|
18
|
+
* in the documentation and/or other materials provided with the
|
|
19
|
+
* distribution.
|
|
20
|
+
*
|
|
21
|
+
* * The names of its contributors may not be used to endorse or
|
|
22
|
+
* promote products derived from this software without specific prior
|
|
23
|
+
* written permission.
|
|
24
|
+
*
|
|
25
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
26
|
+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
27
|
+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
28
|
+
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
29
|
+
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
30
|
+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
31
|
+
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
32
|
+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
33
|
+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
34
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
35
|
+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
36
|
+
*
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
#pragma once
|
|
40
|
+
|
|
41
|
+
#include <libmemcached/memcached.h>
|
|
42
|
+
|
|
43
|
+
#define MAX_UDP_DATAGRAM_LENGTH 1400
|
|
44
|
+
#define UDP_DATAGRAM_HEADER_LENGTH 8
|
|
45
|
+
#define UDP_REQUEST_ID_MSG_SIG_DIGITS 10
|
|
46
|
+
#define UDP_REQUEST_ID_THREAD_MASK 0xFFFF << UDP_REQUEST_ID_MSG_SIG_DIGITS
|
|
47
|
+
#define get_udp_datagram_request_id(A) ntohs((A)->request_id)
|
|
48
|
+
#define get_udp_datagram_seq_num(A) ntohs((A)->sequence_number)
|
|
49
|
+
#define get_udp_datagram_num_datagrams(A) ntohs((A)->num_datagrams)
|
|
50
|
+
#define get_msg_num_from_request_id(A) ( (A) & (~(UDP_REQUEST_ID_THREAD_MASK)) )
|
|
51
|
+
#define get_thread_id_from_request_id(A) ( (A) & (UDP_REQUEST_ID_THREAD_MASK) ) >> UDP_REQUEST_ID_MSG_SIG_DIGITS
|
|
52
|
+
#define generate_udp_request_thread_id(A) (A) << UDP_REQUEST_ID_MSG_SIG_DIGITS
|
|
53
|
+
#define UDP_REQUEST_ID_MAX_THREAD_ID get_thread_id_from_request_id(0xFFFF)
|
|
54
|
+
|
|
55
|
+
struct udp_datagram_header_st
|
|
56
|
+
{
|
|
57
|
+
uint16_t request_id;
|
|
58
|
+
uint16_t sequence_number;
|
|
59
|
+
uint16_t num_datagrams;
|
|
60
|
+
uint16_t reserved;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
struct libmemcached_io_vector_st
|
|
64
|
+
{
|
|
65
|
+
size_t length;
|
|
66
|
+
const void *buffer;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
#ifdef __cplusplus
|
|
70
|
+
extern "C" {
|
|
71
|
+
#endif
|
|
72
|
+
|
|
73
|
+
LIBMEMCACHED_LOCAL
|
|
74
|
+
memcached_return_t memcached_io_wait_for_write(memcached_server_write_instance_st ptr);
|
|
75
|
+
|
|
76
|
+
LIBMEMCACHED_LOCAL
|
|
77
|
+
ssize_t memcached_io_writev(memcached_server_write_instance_st ptr,
|
|
78
|
+
const struct libmemcached_io_vector_st *vector,
|
|
79
|
+
size_t number_of, bool with_flush);
|
|
80
|
+
|
|
81
|
+
LIBMEMCACHED_LOCAL
|
|
82
|
+
ssize_t memcached_io_write(memcached_server_write_instance_st ptr,
|
|
83
|
+
const void *buffer, size_t length, bool with_flush);
|
|
84
|
+
|
|
85
|
+
LIBMEMCACHED_LOCAL
|
|
86
|
+
void memcached_io_reset(memcached_server_write_instance_st ptr);
|
|
87
|
+
|
|
88
|
+
LIBMEMCACHED_LOCAL
|
|
89
|
+
memcached_return_t memcached_io_read(memcached_server_write_instance_st ptr,
|
|
90
|
+
void *buffer, size_t length, ssize_t *nread);
|
|
91
|
+
|
|
92
|
+
/* Read a line (terminated by '\n') into the buffer */
|
|
93
|
+
LIBMEMCACHED_LOCAL
|
|
94
|
+
memcached_return_t memcached_io_readline(memcached_server_write_instance_st ptr,
|
|
95
|
+
char *buffer_ptr,
|
|
96
|
+
size_t size);
|
|
97
|
+
|
|
98
|
+
LIBMEMCACHED_LOCAL
|
|
99
|
+
void memcached_io_close(memcached_server_write_instance_st ptr);
|
|
100
|
+
|
|
101
|
+
/* Read n bytes of data from the server and store them in dta */
|
|
102
|
+
LIBMEMCACHED_LOCAL
|
|
103
|
+
memcached_return_t memcached_safe_read(memcached_server_write_instance_st ptr,
|
|
104
|
+
void *dta,
|
|
105
|
+
size_t size);
|
|
106
|
+
|
|
107
|
+
LIBMEMCACHED_LOCAL
|
|
108
|
+
memcached_return_t memcached_io_init_udp_header(memcached_server_write_instance_st ptr,
|
|
109
|
+
uint16_t thread_id);
|
|
110
|
+
|
|
111
|
+
LIBMEMCACHED_LOCAL
|
|
112
|
+
memcached_server_write_instance_st memcached_io_get_readable_server(memcached_st *memc);
|
|
113
|
+
|
|
114
|
+
LIBMEMCACHED_LOCAL
|
|
115
|
+
memcached_return_t memcached_io_slurp(memcached_server_write_instance_st ptr);
|
|
116
|
+
|
|
117
|
+
#ifdef __cplusplus
|
|
118
|
+
}
|
|
119
|
+
#endif
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
|
|
2
|
+
*
|
|
3
|
+
* LibMemcached
|
|
4
|
+
*
|
|
5
|
+
* Copyright (C) 2011 Data Differential, http://datadifferential.com/
|
|
6
|
+
* 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
|
+
/* These are private */
|
|
41
|
+
#define memcached_is_allocated(__object) ((__object)->options.is_allocated)
|
|
42
|
+
#define memcached_is_initialized(__object) ((__object)->options.is_initialized)
|
|
43
|
+
#define memcached_is_purging(__object) ((__object)->state.is_purging)
|
|
44
|
+
#define memcached_is_processing_input(__object) ((__object)->state.is_processing_input)
|
|
45
|
+
#define memcached_set_purging(__object, __value) ((__object)->state.is_purging= (__value))
|
|
46
|
+
#define memcached_set_processing_input(__object, __value) ((__object)->state.is_processing_input= (__value))
|
|
47
|
+
#define memcached_set_initialized(__object, __value) ((__object)->options.is_initialized(= (__value))
|
|
48
|
+
#define memcached_set_allocated(__object, __value) ((__object)->options.is_allocated= (__value))
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#include "common.h"
|
|
2
|
+
|
|
3
|
+
memcached_return_t memcached_key_test(const char * const *keys,
|
|
4
|
+
const size_t *key_length,
|
|
5
|
+
size_t number_of_keys)
|
|
6
|
+
{
|
|
7
|
+
for (uint32_t x= 0; x < number_of_keys; x++)
|
|
8
|
+
{
|
|
9
|
+
memcached_return_t rc;
|
|
10
|
+
rc= memcached_validate_key_length(*(key_length + x), false);
|
|
11
|
+
if (rc != MEMCACHED_SUCCESS)
|
|
12
|
+
return rc;
|
|
13
|
+
|
|
14
|
+
for (size_t y= 0; y < *(key_length + x); y++)
|
|
15
|
+
{
|
|
16
|
+
if ((isgraph(keys[x][y])) == 0)
|
|
17
|
+
return MEMCACHED_BAD_KEY_PROVIDED;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return MEMCACHED_SUCCESS;
|
|
22
|
+
}
|
|
23
|
+
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
provider libmemcached {
|
|
2
|
+
probe memcached_delete_start();
|
|
3
|
+
probe memcached_delete_end();
|
|
4
|
+
probe memcached_increment_with_initial_start();
|
|
5
|
+
probe memcached_increment_with_initial_end();
|
|
6
|
+
probe memcached_decrement_with_initial_start();
|
|
7
|
+
probe memcached_decrement_with_initial_end();
|
|
8
|
+
probe memcached_increment_start();
|
|
9
|
+
probe memcached_increment_end();
|
|
10
|
+
probe memcached_decrement_start();
|
|
11
|
+
probe memcached_decrement_end();
|
|
12
|
+
probe memcached_flush_start();
|
|
13
|
+
probe memcached_flush_end();
|
|
14
|
+
probe memcached_set_start();
|
|
15
|
+
probe memcached_set_end();
|
|
16
|
+
probe memcached_add_start();
|
|
17
|
+
probe memcached_add_end();
|
|
18
|
+
probe memcached_replace_start();
|
|
19
|
+
probe memcached_replace_end();
|
|
20
|
+
probe memcached_get_start();
|
|
21
|
+
probe memcached_get_end();
|
|
22
|
+
probe memcached_touch_start();
|
|
23
|
+
probe memcached_touch_end();
|
|
24
|
+
probe memcached_mget_start();
|
|
25
|
+
probe memcached_mget_end();
|
|
26
|
+
probe memcached_connect_start();
|
|
27
|
+
probe memcached_connect_end();
|
|
28
|
+
probe memcached_server_add_start();
|
|
29
|
+
probe memcached_server_add_end();
|
|
30
|
+
};
|
|
@@ -0,0 +1,118 @@
|
|
|
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
|
+
|
|
41
|
+
/*
|
|
42
|
+
* This file contains the definition of the various probes supported by
|
|
43
|
+
* libmemcached. Currently it only support DTRACE, but just create an
|
|
44
|
+
* implementation of the following macros to create your own sort of
|
|
45
|
+
* probing :)
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
#ifdef HAVE_DTRACE
|
|
49
|
+
/*
|
|
50
|
+
* Create the DTrace probes on the system using it (to support both Solaris
|
|
51
|
+
* and MacOS X
|
|
52
|
+
*/
|
|
53
|
+
#include "libmemcached/dtrace_probes.h"
|
|
54
|
+
|
|
55
|
+
#else
|
|
56
|
+
/*
|
|
57
|
+
* Provide dummy macros so that we don't need to clutter the code with
|
|
58
|
+
* ifdefs when we want to use the probes.
|
|
59
|
+
*/
|
|
60
|
+
|
|
61
|
+
#define LIBMEMCACHED_MEMCACHED_ADD_END()
|
|
62
|
+
#define LIBMEMCACHED_MEMCACHED_ADD_END_ENABLED() (0)
|
|
63
|
+
#define LIBMEMCACHED_MEMCACHED_ADD_START()
|
|
64
|
+
#define LIBMEMCACHED_MEMCACHED_ADD_START_ENABLED() (0)
|
|
65
|
+
#define LIBMEMCACHED_MEMCACHED_CONNECT_END()
|
|
66
|
+
#define LIBMEMCACHED_MEMCACHED_CONNECT_END_ENABLED() (0)
|
|
67
|
+
#define LIBMEMCACHED_MEMCACHED_CONNECT_START()
|
|
68
|
+
#define LIBMEMCACHED_MEMCACHED_CONNECT_START_ENABLED() (0)
|
|
69
|
+
#define LIBMEMCACHED_MEMCACHED_DECREMENT_END()
|
|
70
|
+
#define LIBMEMCACHED_MEMCACHED_DECREMENT_END_ENABLED() (0)
|
|
71
|
+
#define LIBMEMCACHED_MEMCACHED_DECREMENT_START()
|
|
72
|
+
#define LIBMEMCACHED_MEMCACHED_DECREMENT_START_ENABLED() (0)
|
|
73
|
+
#define LIBMEMCACHED_MEMCACHED_DECREMENT_WITH_INITIAL_END()
|
|
74
|
+
#define LIBMEMCACHED_MEMCACHED_DECREMENT_WITH_INITIAL_END_ENABLED() (0)
|
|
75
|
+
#define LIBMEMCACHED_MEMCACHED_DECREMENT_WITH_INITIAL_START()
|
|
76
|
+
#define LIBMEMCACHED_MEMCACHED_DECREMENT_WITH_INITIAL_START_ENABLED() (0)
|
|
77
|
+
#define LIBMEMCACHED_MEMCACHED_DELETE_END()
|
|
78
|
+
#define LIBMEMCACHED_MEMCACHED_DELETE_END_ENABLED() (0)
|
|
79
|
+
#define LIBMEMCACHED_MEMCACHED_DELETE_START()
|
|
80
|
+
#define LIBMEMCACHED_MEMCACHED_DELETE_START_ENABLED() (0)
|
|
81
|
+
#define LIBMEMCACHED_MEMCACHED_FLUSH_END()
|
|
82
|
+
#define LIBMEMCACHED_MEMCACHED_FLUSH_END_ENABLED() (0)
|
|
83
|
+
#define LIBMEMCACHED_MEMCACHED_FLUSH_START()
|
|
84
|
+
#define LIBMEMCACHED_MEMCACHED_FLUSH_START_ENABLED() (0)
|
|
85
|
+
#define LIBMEMCACHED_MEMCACHED_GET_END()
|
|
86
|
+
#define LIBMEMCACHED_MEMCACHED_GET_END_ENABLED() (0)
|
|
87
|
+
#define LIBMEMCACHED_MEMCACHED_GET_START()
|
|
88
|
+
#define LIBMEMCACHED_MEMCACHED_GET_START_ENABLED() (0)
|
|
89
|
+
#define LIBMEMCACHED_MEMCACHED_TOUCH_END()
|
|
90
|
+
#define LIBMEMCACHED_MEMCACHED_TOUCH_END_ENABLED() (0)
|
|
91
|
+
#define LIBMEMCACHED_MEMCACHED_TOUCH_START()
|
|
92
|
+
#define LIBMEMCACHED_MEMCACHED_TOUCH_START_ENABLED() (0)
|
|
93
|
+
#define LIBMEMCACHED_MEMCACHED_INCREMENT_END()
|
|
94
|
+
#define LIBMEMCACHED_MEMCACHED_INCREMENT_END_ENABLED() (0)
|
|
95
|
+
#define LIBMEMCACHED_MEMCACHED_INCREMENT_START()
|
|
96
|
+
#define LIBMEMCACHED_MEMCACHED_INCREMENT_START_ENABLED() (0)
|
|
97
|
+
#define LIBMEMCACHED_MEMCACHED_INCREMENT_WITH_INITIAL_END()
|
|
98
|
+
#define LIBMEMCACHED_MEMCACHED_INCREMENT_WITH_INITIAL_END_ENABLED() (0)
|
|
99
|
+
#define LIBMEMCACHED_MEMCACHED_INCREMENT_WITH_INITIAL_START()
|
|
100
|
+
#define LIBMEMCACHED_MEMCACHED_INCREMENT_WITH_INITIAL_START_ENABLED() (0)
|
|
101
|
+
#define LIBMEMCACHED_MEMCACHED_MGET_END()
|
|
102
|
+
#define LIBMEMCACHED_MEMCACHED_MGET_END_ENABLED() (0)
|
|
103
|
+
#define LIBMEMCACHED_MEMCACHED_MGET_START()
|
|
104
|
+
#define LIBMEMCACHED_MEMCACHED_MGET_START_ENABLED() (0)
|
|
105
|
+
#define LIBMEMCACHED_MEMCACHED_REPLACE_END()
|
|
106
|
+
#define LIBMEMCACHED_MEMCACHED_REPLACE_END_ENABLED() (0)
|
|
107
|
+
#define LIBMEMCACHED_MEMCACHED_REPLACE_START()
|
|
108
|
+
#define LIBMEMCACHED_MEMCACHED_REPLACE_START_ENABLED() (0)
|
|
109
|
+
#define LIBMEMCACHED_MEMCACHED_SERVER_ADD_END()
|
|
110
|
+
#define LIBMEMCACHED_MEMCACHED_SERVER_ADD_END_ENABLED() (0)
|
|
111
|
+
#define LIBMEMCACHED_MEMCACHED_SERVER_ADD_START()
|
|
112
|
+
#define LIBMEMCACHED_MEMCACHED_SERVER_ADD_START_ENABLED() (0)
|
|
113
|
+
#define LIBMEMCACHED_MEMCACHED_SET_END()
|
|
114
|
+
#define LIBMEMCACHED_MEMCACHED_SET_END_ENABLED() (0)
|
|
115
|
+
#define LIBMEMCACHED_MEMCACHED_SET_START()
|
|
116
|
+
#define LIBMEMCACHED_MEMCACHED_SET_START_ENABLED() (0)
|
|
117
|
+
|
|
118
|
+
#endif
|
|
@@ -0,0 +1,437 @@
|
|
|
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
|
+
|
|
40
|
+
#include <libmemcached/options.hpp>
|
|
41
|
+
#include <libmemcached/virtual_bucket.h>
|
|
42
|
+
|
|
43
|
+
#if 0
|
|
44
|
+
static const memcached_st global_copy= {
|
|
45
|
+
.state= {
|
|
46
|
+
.is_purging= false, // .is_purging
|
|
47
|
+
.is_processing_input= false, // is_processing_input
|
|
48
|
+
.is_time_for_rebuild= false,
|
|
49
|
+
},
|
|
50
|
+
.flags= {
|
|
51
|
+
.auto_eject_hosts= false,
|
|
52
|
+
.binary_protocol= false,
|
|
53
|
+
.buffer_requests= false,
|
|
54
|
+
.hash_with_prefix_key= false,
|
|
55
|
+
.no_block= false,
|
|
56
|
+
.no_reply= false,
|
|
57
|
+
.randomize_replica_read= false,
|
|
58
|
+
.support_cas= false,
|
|
59
|
+
.tcp_nodelay= false,
|
|
60
|
+
.use_sort_hosts= false,
|
|
61
|
+
.use_udp= false,
|
|
62
|
+
.verify_key= false,
|
|
63
|
+
.tcp_keepalive= false,
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
#endif
|
|
67
|
+
|
|
68
|
+
static inline bool _memcached_init(memcached_st *self)
|
|
69
|
+
{
|
|
70
|
+
self->state.is_purging= false;
|
|
71
|
+
self->state.is_processing_input= false;
|
|
72
|
+
self->state.is_time_for_rebuild= false;
|
|
73
|
+
|
|
74
|
+
self->flags.auto_eject_hosts= false;
|
|
75
|
+
self->flags.binary_protocol= false;
|
|
76
|
+
self->flags.buffer_requests= false;
|
|
77
|
+
self->flags.hash_with_prefix_key= false;
|
|
78
|
+
self->flags.no_block= false;
|
|
79
|
+
self->flags.no_reply= false;
|
|
80
|
+
self->flags.randomize_replica_read= false;
|
|
81
|
+
self->flags.support_cas= false;
|
|
82
|
+
self->flags.tcp_nodelay= false;
|
|
83
|
+
self->flags.use_sort_hosts= false;
|
|
84
|
+
self->flags.use_udp= false;
|
|
85
|
+
self->flags.verify_key= false;
|
|
86
|
+
self->flags.tcp_keepalive= false;
|
|
87
|
+
|
|
88
|
+
self->virtual_bucket= NULL;
|
|
89
|
+
|
|
90
|
+
self->distribution= MEMCACHED_DISTRIBUTION_MODULA;
|
|
91
|
+
|
|
92
|
+
if (not hashkit_create(&self->hashkit))
|
|
93
|
+
return false;
|
|
94
|
+
|
|
95
|
+
self->ketama.continuum= NULL;
|
|
96
|
+
self->ketama.continuum_count= 0;
|
|
97
|
+
self->ketama.continuum_points_counter= 0;
|
|
98
|
+
self->ketama.next_distribution_rebuild= 0;
|
|
99
|
+
self->ketama.weighted= false;
|
|
100
|
+
|
|
101
|
+
self->number_of_hosts= 0;
|
|
102
|
+
self->servers= NULL;
|
|
103
|
+
self->last_disconnected_server= NULL;
|
|
104
|
+
|
|
105
|
+
self->snd_timeout= 0;
|
|
106
|
+
self->rcv_timeout= 0;
|
|
107
|
+
self->server_failure_limit= 0;
|
|
108
|
+
self->query_id= 1; // 0 is considered invalid
|
|
109
|
+
|
|
110
|
+
/* TODO, Document why we picked these defaults */
|
|
111
|
+
self->io_msg_watermark= 500;
|
|
112
|
+
self->io_bytes_watermark= 65 * 1024;
|
|
113
|
+
|
|
114
|
+
self->tcp_keepidle= 0;
|
|
115
|
+
|
|
116
|
+
self->io_key_prefetch= 0;
|
|
117
|
+
self->poll_timeout= MEMCACHED_DEFAULT_TIMEOUT;
|
|
118
|
+
self->connect_timeout= MEMCACHED_DEFAULT_CONNECT_TIMEOUT;
|
|
119
|
+
self->retry_timeout= 0;
|
|
120
|
+
|
|
121
|
+
self->send_size= -1;
|
|
122
|
+
self->recv_size= -1;
|
|
123
|
+
|
|
124
|
+
self->user_data= NULL;
|
|
125
|
+
self->number_of_replicas= 0;
|
|
126
|
+
|
|
127
|
+
self->allocators= memcached_allocators_return_default();
|
|
128
|
+
|
|
129
|
+
self->on_clone= NULL;
|
|
130
|
+
self->on_cleanup= NULL;
|
|
131
|
+
self->get_key_failure= NULL;
|
|
132
|
+
self->delete_trigger= NULL;
|
|
133
|
+
self->callbacks= NULL;
|
|
134
|
+
self->sasl.callbacks= NULL;
|
|
135
|
+
self->sasl.is_allocated= false;
|
|
136
|
+
|
|
137
|
+
self->error_messages= NULL;
|
|
138
|
+
self->prefix_key= NULL;
|
|
139
|
+
self->configure.initial_pool_size= 1;
|
|
140
|
+
self->configure.max_pool_size= 1;
|
|
141
|
+
self->configure.version= -1;
|
|
142
|
+
self->configure.filename= NULL;
|
|
143
|
+
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
static void _free(memcached_st *ptr, bool release_st)
|
|
148
|
+
{
|
|
149
|
+
/* If we have anything open, lets close it now */
|
|
150
|
+
send_quit(ptr);
|
|
151
|
+
memcached_server_list_free(memcached_server_list(ptr));
|
|
152
|
+
memcached_result_free(&ptr->result);
|
|
153
|
+
|
|
154
|
+
memcached_virtual_bucket_free(ptr);
|
|
155
|
+
|
|
156
|
+
memcached_server_free(ptr->last_disconnected_server);
|
|
157
|
+
|
|
158
|
+
if (ptr->on_cleanup)
|
|
159
|
+
ptr->on_cleanup(ptr);
|
|
160
|
+
|
|
161
|
+
libmemcached_free(ptr, ptr->ketama.continuum);
|
|
162
|
+
|
|
163
|
+
memcached_array_free(ptr->prefix_key);
|
|
164
|
+
ptr->prefix_key= NULL;
|
|
165
|
+
|
|
166
|
+
memcached_error_free(ptr);
|
|
167
|
+
|
|
168
|
+
if (ptr->sasl.callbacks)
|
|
169
|
+
{
|
|
170
|
+
#ifdef LIBMEMCACHED_WITH_SASL_SUPPORT
|
|
171
|
+
memcached_destroy_sasl_auth_data(ptr);
|
|
172
|
+
#endif
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if (release_st)
|
|
176
|
+
{
|
|
177
|
+
memcached_array_free(ptr->configure.filename);
|
|
178
|
+
ptr->configure.filename= NULL;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (memcached_is_allocated(ptr) && release_st)
|
|
182
|
+
{
|
|
183
|
+
libmemcached_free(ptr, ptr);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
memcached_st *memcached_create(memcached_st *ptr)
|
|
188
|
+
{
|
|
189
|
+
if (ptr == NULL)
|
|
190
|
+
{
|
|
191
|
+
ptr= (memcached_st *)malloc(sizeof(memcached_st));
|
|
192
|
+
|
|
193
|
+
if (not ptr)
|
|
194
|
+
{
|
|
195
|
+
return NULL; /* MEMCACHED_MEMORY_ALLOCATION_FAILURE */
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
ptr->options.is_allocated= true;
|
|
199
|
+
}
|
|
200
|
+
else
|
|
201
|
+
{
|
|
202
|
+
ptr->options.is_allocated= false;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
#if 0
|
|
206
|
+
memcached_set_purging(ptr, false);
|
|
207
|
+
memcached_set_processing_input(ptr, false);
|
|
208
|
+
#endif
|
|
209
|
+
|
|
210
|
+
if (! _memcached_init(ptr))
|
|
211
|
+
{
|
|
212
|
+
memcached_free(ptr);
|
|
213
|
+
return NULL;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
if (! memcached_result_create(ptr, &ptr->result))
|
|
217
|
+
{
|
|
218
|
+
memcached_free(ptr);
|
|
219
|
+
return NULL;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
WATCHPOINT_ASSERT_INITIALIZED(&ptr->result);
|
|
223
|
+
|
|
224
|
+
return ptr;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
memcached_st *memcached(const char *string, size_t length)
|
|
228
|
+
{
|
|
229
|
+
memcached_st *self= memcached_create(NULL);
|
|
230
|
+
if (not self)
|
|
231
|
+
{
|
|
232
|
+
errno= ENOMEM;
|
|
233
|
+
return NULL;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
if (not length)
|
|
237
|
+
return self;
|
|
238
|
+
|
|
239
|
+
memcached_return_t rc= memcached_parse_configuration(self, string, length);
|
|
240
|
+
|
|
241
|
+
if (memcached_success(rc) and memcached_parse_filename(self))
|
|
242
|
+
{
|
|
243
|
+
rc= memcached_parse_configure_file(*self, memcached_parse_filename(self), memcached_parse_filename_length(self));
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
if (memcached_failed(rc))
|
|
247
|
+
{
|
|
248
|
+
memcached_free(self);
|
|
249
|
+
errno= EINVAL;
|
|
250
|
+
return NULL;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
return self;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
memcached_return_t memcached_reset(memcached_st *ptr)
|
|
257
|
+
{
|
|
258
|
+
WATCHPOINT_ASSERT(ptr);
|
|
259
|
+
if (not ptr)
|
|
260
|
+
return MEMCACHED_INVALID_ARGUMENTS;
|
|
261
|
+
|
|
262
|
+
bool stored_is_allocated= memcached_is_allocated(ptr);
|
|
263
|
+
uint64_t query_id= ptr->query_id;
|
|
264
|
+
_free(ptr, false);
|
|
265
|
+
memcached_create(ptr);
|
|
266
|
+
memcached_set_allocated(ptr, stored_is_allocated);
|
|
267
|
+
ptr->query_id= query_id;
|
|
268
|
+
|
|
269
|
+
if (ptr->configure.filename)
|
|
270
|
+
{
|
|
271
|
+
return memcached_parse_configure_file(*ptr, memcached_param_array(ptr->configure.filename));
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
return MEMCACHED_SUCCESS;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
void memcached_servers_reset(memcached_st *self)
|
|
278
|
+
{
|
|
279
|
+
if (not self)
|
|
280
|
+
return;
|
|
281
|
+
|
|
282
|
+
memcached_server_list_free(memcached_server_list(self));
|
|
283
|
+
|
|
284
|
+
memcached_server_list_set(self, NULL);
|
|
285
|
+
self->number_of_hosts= 0;
|
|
286
|
+
memcached_server_free(self->last_disconnected_server);
|
|
287
|
+
self->last_disconnected_server= NULL;
|
|
288
|
+
self->server_failure_limit= 0;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
void memcached_reset_last_disconnected_server(memcached_st *self)
|
|
292
|
+
{
|
|
293
|
+
if (not self)
|
|
294
|
+
return;
|
|
295
|
+
|
|
296
|
+
memcached_server_free(self->last_disconnected_server);
|
|
297
|
+
self->last_disconnected_server= NULL;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
void memcached_free(memcached_st *ptr)
|
|
301
|
+
{
|
|
302
|
+
if (not ptr)
|
|
303
|
+
return;
|
|
304
|
+
|
|
305
|
+
_free(ptr, true);
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/*
|
|
309
|
+
clone is the destination, while source is the structure to clone.
|
|
310
|
+
If source is NULL the call is the same as if a memcached_create() was
|
|
311
|
+
called.
|
|
312
|
+
*/
|
|
313
|
+
memcached_st *memcached_clone(memcached_st *clone, const memcached_st *source)
|
|
314
|
+
{
|
|
315
|
+
memcached_return_t rc= MEMCACHED_SUCCESS;
|
|
316
|
+
|
|
317
|
+
if (not source)
|
|
318
|
+
return memcached_create(clone);
|
|
319
|
+
|
|
320
|
+
if (clone && memcached_is_allocated(clone))
|
|
321
|
+
{
|
|
322
|
+
return NULL;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
memcached_st *new_clone= memcached_create(clone);
|
|
326
|
+
|
|
327
|
+
if (not new_clone)
|
|
328
|
+
return NULL;
|
|
329
|
+
|
|
330
|
+
new_clone->flags= source->flags;
|
|
331
|
+
new_clone->send_size= source->send_size;
|
|
332
|
+
new_clone->recv_size= source->recv_size;
|
|
333
|
+
new_clone->poll_timeout= source->poll_timeout;
|
|
334
|
+
new_clone->connect_timeout= source->connect_timeout;
|
|
335
|
+
new_clone->retry_timeout= source->retry_timeout;
|
|
336
|
+
new_clone->distribution= source->distribution;
|
|
337
|
+
|
|
338
|
+
if (not hashkit_clone(&new_clone->hashkit, &source->hashkit))
|
|
339
|
+
{
|
|
340
|
+
memcached_free(new_clone);
|
|
341
|
+
return NULL;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
new_clone->user_data= source->user_data;
|
|
345
|
+
|
|
346
|
+
new_clone->snd_timeout= source->snd_timeout;
|
|
347
|
+
new_clone->rcv_timeout= source->rcv_timeout;
|
|
348
|
+
|
|
349
|
+
new_clone->on_clone= source->on_clone;
|
|
350
|
+
new_clone->on_cleanup= source->on_cleanup;
|
|
351
|
+
|
|
352
|
+
new_clone->allocators= source->allocators;
|
|
353
|
+
|
|
354
|
+
new_clone->get_key_failure= source->get_key_failure;
|
|
355
|
+
new_clone->delete_trigger= source->delete_trigger;
|
|
356
|
+
new_clone->server_failure_limit= source->server_failure_limit;
|
|
357
|
+
new_clone->io_msg_watermark= source->io_msg_watermark;
|
|
358
|
+
new_clone->io_bytes_watermark= source->io_bytes_watermark;
|
|
359
|
+
new_clone->io_key_prefetch= source->io_key_prefetch;
|
|
360
|
+
new_clone->number_of_replicas= source->number_of_replicas;
|
|
361
|
+
new_clone->tcp_keepidle= source->tcp_keepidle;
|
|
362
|
+
|
|
363
|
+
if (memcached_server_count(source))
|
|
364
|
+
rc= memcached_push(new_clone, source);
|
|
365
|
+
|
|
366
|
+
if (rc != MEMCACHED_SUCCESS)
|
|
367
|
+
{
|
|
368
|
+
memcached_free(new_clone);
|
|
369
|
+
|
|
370
|
+
return NULL;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
new_clone->prefix_key= memcached_array_clone(new_clone, source->prefix_key);
|
|
375
|
+
new_clone->configure.filename= memcached_array_clone(new_clone, source->prefix_key);
|
|
376
|
+
|
|
377
|
+
#ifdef LIBMEMCACHED_WITH_SASL_SUPPORT
|
|
378
|
+
if (source->sasl.callbacks)
|
|
379
|
+
{
|
|
380
|
+
if (memcached_clone_sasl(new_clone, source) != MEMCACHED_SUCCESS)
|
|
381
|
+
{
|
|
382
|
+
memcached_free(new_clone);
|
|
383
|
+
return NULL;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
#endif
|
|
387
|
+
|
|
388
|
+
rc= run_distribution(new_clone);
|
|
389
|
+
|
|
390
|
+
if (rc != MEMCACHED_SUCCESS)
|
|
391
|
+
{
|
|
392
|
+
memcached_free(new_clone);
|
|
393
|
+
|
|
394
|
+
return NULL;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
if (source->on_clone)
|
|
398
|
+
source->on_clone(new_clone, source);
|
|
399
|
+
|
|
400
|
+
return new_clone;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
void *memcached_get_user_data(const memcached_st *ptr)
|
|
404
|
+
{
|
|
405
|
+
return ptr->user_data;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
void *memcached_set_user_data(memcached_st *ptr, void *data)
|
|
409
|
+
{
|
|
410
|
+
void *ret= ptr->user_data;
|
|
411
|
+
ptr->user_data= data;
|
|
412
|
+
|
|
413
|
+
return ret;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
memcached_return_t memcached_push(memcached_st *destination, const memcached_st *source)
|
|
417
|
+
{
|
|
418
|
+
return memcached_server_push(destination, source->servers);
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
memcached_server_write_instance_st memcached_server_instance_fetch(memcached_st *ptr, uint32_t server_key)
|
|
422
|
+
{
|
|
423
|
+
return &ptr->servers[server_key];
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
memcached_server_instance_st memcached_server_instance_by_position(const memcached_st *ptr, uint32_t server_key)
|
|
427
|
+
{
|
|
428
|
+
return &ptr->servers[server_key];
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
uint64_t memcached_query_id(const memcached_st *self)
|
|
432
|
+
{
|
|
433
|
+
if (not self)
|
|
434
|
+
return 0;
|
|
435
|
+
|
|
436
|
+
return self->query_id;
|
|
437
|
+
}
|