memcached 1.2.6 → 1.2.7
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/CHANGELOG +2 -0
- data/Manifest +206 -12
- data/Rakefile +32 -1
- data/ext/extconf.rb +10 -35
- data/ext/libmemcached-0.32/AUTHORS +7 -0
- data/ext/libmemcached-0.32/COPYING +32 -0
- data/ext/libmemcached-0.32/ChangeLog +303 -0
- data/ext/libmemcached-0.32/INSTALL +302 -0
- data/ext/libmemcached-0.32/Makefile.am +36 -0
- data/ext/libmemcached-0.32/Makefile.in +828 -0
- data/ext/libmemcached-0.32/NEWS +1 -0
- data/ext/libmemcached-0.32/README +33 -0
- data/ext/libmemcached-0.32/THANKS +14 -0
- data/ext/libmemcached-0.32/TODO +11 -0
- data/ext/libmemcached-0.32/aclocal.m4 +1852 -0
- data/ext/libmemcached-0.32/clients/Makefile.am +73 -0
- data/ext/libmemcached-0.32/clients/Makefile.in +770 -0
- data/ext/libmemcached-0.32/clients/client_options.h +32 -0
- data/ext/libmemcached-0.32/clients/execute.c +64 -0
- data/ext/libmemcached-0.32/clients/execute.h +5 -0
- data/ext/libmemcached-0.32/clients/generator.c +74 -0
- data/ext/libmemcached-0.32/clients/generator.h +20 -0
- data/ext/libmemcached-0.32/clients/memcat.c +178 -0
- data/ext/libmemcached-0.32/clients/memcp.c +251 -0
- data/ext/libmemcached-0.32/clients/memdump.c +170 -0
- data/ext/libmemcached-0.32/clients/memerror.c +80 -0
- data/ext/libmemcached-0.32/clients/memflush.c +143 -0
- data/ext/libmemcached-0.32/clients/memrm.c +160 -0
- data/ext/libmemcached-0.32/clients/memslap.c +441 -0
- data/ext/libmemcached-0.32/clients/memstat.c +326 -0
- data/ext/libmemcached-0.32/clients/utilities.c +207 -0
- data/ext/libmemcached-0.32/clients/utilities.h +41 -0
- data/ext/libmemcached-0.32/config.h.in +252 -0
- data/ext/libmemcached-0.32/config/compile +143 -0
- data/ext/libmemcached-0.32/config/config.guess +1561 -0
- data/ext/libmemcached-0.32/config/config.rpath +666 -0
- data/ext/libmemcached-0.32/config/config.sub +1686 -0
- data/ext/libmemcached-0.32/config/depcomp +630 -0
- data/ext/libmemcached-0.32/config/install-sh +520 -0
- data/ext/libmemcached-0.32/config/ltmain.sh +8406 -0
- data/ext/libmemcached-0.32/config/missing +376 -0
- data/ext/libmemcached-0.32/configure +23048 -0
- data/ext/libmemcached-0.32/configure.ac +122 -0
- data/ext/libmemcached-0.32/docs/Makefile.am +415 -0
- data/ext/libmemcached-0.32/docs/Makefile.in +918 -0
- data/ext/libmemcached-0.32/docs/libmemcached.pod +123 -0
- data/ext/libmemcached-0.32/docs/libmemcached_examples.pod +115 -0
- data/ext/libmemcached-0.32/docs/libmemcachedutil.pod +40 -0
- data/ext/libmemcached-0.32/docs/memcached_analyze.pod +52 -0
- data/ext/libmemcached-0.32/docs/memcached_auto.pod +97 -0
- data/ext/libmemcached-0.32/docs/memcached_behavior.pod +224 -0
- data/ext/libmemcached-0.32/docs/memcached_callback.pod +123 -0
- data/ext/libmemcached-0.32/docs/memcached_create.pod +61 -0
- data/ext/libmemcached-0.32/docs/memcached_delete.pod +54 -0
- data/ext/libmemcached-0.32/docs/memcached_dump.pod +53 -0
- data/ext/libmemcached-0.32/docs/memcached_flush.pod +46 -0
- data/ext/libmemcached-0.32/docs/memcached_flush_buffers.pod +42 -0
- data/ext/libmemcached-0.32/docs/memcached_generate_hash_value.pod +57 -0
- data/ext/libmemcached-0.32/docs/memcached_get.pod +161 -0
- data/ext/libmemcached-0.32/docs/memcached_memory_allocators.pod +73 -0
- data/ext/libmemcached-0.32/docs/memcached_pool.pod +77 -0
- data/ext/libmemcached-0.32/docs/memcached_quit.pod +47 -0
- data/ext/libmemcached-0.32/docs/memcached_sasl.pod +63 -0
- data/ext/libmemcached-0.32/docs/memcached_server_st.pod +75 -0
- data/ext/libmemcached-0.32/docs/memcached_servers.pod +102 -0
- data/ext/libmemcached-0.32/docs/memcached_set.pod +187 -0
- data/ext/libmemcached-0.32/docs/memcached_stats.pod +82 -0
- data/ext/libmemcached-0.32/docs/memcached_strerror.pod +46 -0
- data/ext/libmemcached-0.32/docs/memcached_user_data.pod +49 -0
- data/ext/libmemcached-0.32/docs/memcached_verbosity.pod +41 -0
- data/ext/libmemcached-0.32/docs/memcached_version.pod +56 -0
- data/ext/libmemcached-0.32/docs/memcat.pod +37 -0
- data/ext/libmemcached-0.32/docs/memcp.pod +40 -0
- data/ext/libmemcached-0.32/docs/memdump.pod +31 -0
- data/ext/libmemcached-0.32/docs/memerror.pod +30 -0
- data/ext/libmemcached-0.32/docs/memflush.pod +35 -0
- data/ext/libmemcached-0.32/docs/memrm.pod +34 -0
- data/ext/libmemcached-0.32/docs/memslap.pod +33 -0
- data/ext/libmemcached-0.32/docs/memstat.pod +35 -0
- data/ext/libmemcached-0.32/libmemcached/Makefile.am +107 -0
- data/ext/libmemcached-0.32/libmemcached/Makefile.in +1050 -0
- data/ext/libmemcached-0.32/libmemcached/byteorder.c +31 -0
- data/ext/libmemcached-0.32/libmemcached/common.h +183 -0
- data/ext/libmemcached-0.32/libmemcached/crc.c +86 -0
- data/ext/libmemcached-0.32/libmemcached/hsieh_hash.c +68 -0
- data/ext/libmemcached-0.32/libmemcached/jenkins_hash.c +213 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached.ver +1 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_probes.d +28 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_probes.h +78 -0
- data/ext/libmemcached-0.32/libmemcached/md5.c +354 -0
- data/ext/libmemcached-0.32/libmemcached/memcached.c +152 -0
- data/ext/libmemcached-0.32/libmemcached/memcached.h +302 -0
- data/ext/libmemcached-0.32/libmemcached/memcached.hpp +799 -0
- data/ext/libmemcached-0.32/libmemcached/memcached/README.txt +7 -0
- data/ext/libmemcached-0.32/libmemcached/memcached/protocol_binary.h +366 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_allocators.c +72 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_analyze.c +100 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_auto.c +207 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_behavior.c +285 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_callback.c +175 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_configure.h.in +23 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_connect.c +361 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_constants.h +145 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_delete.c +0 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_do.c +34 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_dump.c +79 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_fetch.c +102 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_flush.c +89 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_flush_buffers.c +22 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_get.c +495 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_get.h +87 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_hash.c +252 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_hosts.c +510 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_internal.h +31 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_io.c +547 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_io.h +59 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_key.c +28 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_parse.c +74 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_pool.h +38 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_purge.c +76 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_quit.c +75 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_response.c +528 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_result.c +57 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_result.h +59 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_sasl.c +225 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_sasl.h +44 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_server.c +159 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_server.h +93 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_stats.c +454 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_storage.c +514 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_storage.h +107 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_strerror.c +92 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_string.c +138 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_string.h +53 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_types.h +44 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_util.h +15 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_verbosity.c +36 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_version.c +112 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_watchpoint.h +38 -0
- data/ext/libmemcached-0.32/libmemcached/murmur_hash.c +76 -0
- data/ext/libmemcached-0.32/libmemcached/visibility.h +51 -0
- data/ext/libmemcached-0.32/libmemcachedutil/Makefile.am +11 -0
- data/ext/libmemcached-0.32/libmemcachedutil/Makefile.in +602 -0
- data/ext/libmemcached-0.32/libmemcachedutil/libmemcachedutil.ver +1 -0
- data/ext/libmemcached-0.32/libmemcachedutil/memcached_pool.c +170 -0
- data/ext/libmemcached-0.32/m4/ac_cxx_compile_stdcxx_0x.m4 +103 -0
- data/ext/libmemcached-0.32/m4/ac_cxx_header_stdcxx_98.m4 +67 -0
- data/ext/libmemcached-0.32/m4/acx_pthread.m4 +276 -0
- data/ext/libmemcached-0.32/m4/byteorder.m4 +40 -0
- data/ext/libmemcached-0.32/m4/deprecated.m4 +17 -0
- data/ext/libmemcached-0.32/m4/enable_utillib.m4 +16 -0
- data/ext/libmemcached-0.32/m4/extensions.m4 +94 -0
- data/ext/libmemcached-0.32/m4/hsieh.m4 +18 -0
- data/ext/libmemcached-0.32/m4/lib-prefix.m4 +221 -0
- data/ext/libmemcached-0.32/m4/libtool.m4 +7360 -0
- data/ext/libmemcached-0.32/m4/ltoptions.m4 +368 -0
- data/ext/libmemcached-0.32/m4/ltsugar.m4 +123 -0
- data/ext/libmemcached-0.32/m4/ltversion.m4 +23 -0
- data/ext/libmemcached-0.32/m4/lt~obsolete.m4 +92 -0
- data/ext/libmemcached-0.32/m4/memcached.m4 +30 -0
- data/ext/libmemcached-0.32/m4/pandora_64bit.m4 +55 -0
- data/ext/libmemcached-0.32/m4/pandora_canonical.m4 +151 -0
- data/ext/libmemcached-0.32/m4/pandora_check_compiler_version.m4 +37 -0
- data/ext/libmemcached-0.32/m4/pandora_check_cxx_standard.m4 +16 -0
- data/ext/libmemcached-0.32/m4/pandora_enable_dtrace.m4 +41 -0
- data/ext/libmemcached-0.32/m4/pandora_ensure_gcc_version.m4 +36 -0
- data/ext/libmemcached-0.32/m4/pandora_have_better_malloc.m4 +54 -0
- data/ext/libmemcached-0.32/m4/pandora_have_sasl.m4 +133 -0
- data/ext/libmemcached-0.32/m4/pandora_header_assert.m4 +23 -0
- data/ext/libmemcached-0.32/m4/pandora_libtool.m4 +15 -0
- data/ext/libmemcached-0.32/m4/pandora_optimize.m4 +79 -0
- data/ext/libmemcached-0.32/m4/pandora_shared_ptr.m4 +56 -0
- data/ext/libmemcached-0.32/m4/pandora_vc_build.m4 +32 -0
- data/ext/libmemcached-0.32/m4/pandora_warnings.m4 +262 -0
- data/ext/libmemcached-0.32/m4/pod2man.m4 +7 -0
- data/ext/libmemcached-0.32/m4/protocol_binary.m4 +23 -0
- data/ext/libmemcached-0.32/m4/setsockopt.m4 +57 -0
- data/ext/libmemcached-0.32/m4/visibility.m4 +52 -0
- data/ext/libmemcached-0.32/support/Makefile.am +4 -0
- data/ext/libmemcached-0.32/support/Makefile.in +485 -0
- data/ext/libmemcached-0.32/support/libmemcached-fc.spec.in +105 -0
- data/ext/libmemcached-0.32/support/libmemcached.pc.in +10 -0
- data/ext/libmemcached-0.32/support/libmemcached.spec +105 -0
- data/ext/libmemcached-0.32/support/libmemcached.spec.in +105 -0
- data/ext/libmemcached-0.32/support/set_benchmark.sh +5 -0
- data/ext/libmemcached-0.32/tests/Makefile.am +105 -0
- data/ext/libmemcached-0.32/tests/Makefile.in +748 -0
- data/ext/libmemcached-0.32/tests/atomsmasher.c +245 -0
- data/ext/libmemcached-0.32/tests/function.c +4781 -0
- data/ext/libmemcached-0.32/tests/ketama_test_cases.h +108 -0
- data/ext/libmemcached-0.32/tests/output.cmp +7 -0
- data/ext/libmemcached-0.32/tests/output.res +7 -0
- data/ext/libmemcached-0.32/tests/output2.res +46 -0
- data/ext/libmemcached-0.32/tests/plus.cpp +293 -0
- data/ext/libmemcached-0.32/tests/r/memcat.res +19 -0
- data/ext/libmemcached-0.32/tests/r/memcp.res +27 -0
- data/ext/libmemcached-0.32/tests/r/memrm.res +19 -0
- data/ext/libmemcached-0.32/tests/r/memslap.res +33 -0
- data/ext/libmemcached-0.32/tests/r/memstat.res +33 -0
- data/ext/libmemcached-0.32/tests/server.c +118 -0
- data/ext/libmemcached-0.32/tests/server.h +25 -0
- data/ext/libmemcached-0.32/tests/start.c +16 -0
- data/ext/libmemcached-0.32/tests/t/memcat.test +4 -0
- data/ext/libmemcached-0.32/tests/t/memcp.test +3 -0
- data/ext/libmemcached-0.32/tests/t/memrm.test +3 -0
- data/ext/libmemcached-0.32/tests/t/memslap.test +5 -0
- data/ext/libmemcached-0.32/tests/t/memstat.test +3 -0
- data/ext/libmemcached-0.32/tests/test.c +137 -0
- data/ext/libmemcached-0.32/tests/test.h +46 -0
- data/ext/libmemcached-0.32/tests/udp.c +76 -0
- data/memcached.gemspec +4 -4
- data/test/unit/memcached_test.rb +30 -0
- metadata +213 -16
- data/ext/libmemcached-0.32.tar.gz +0 -0
- data/ext/libmemcached-1.patch +0 -270
- data/ext/libmemcached-10.patch +0 -12
- data/ext/libmemcached-2.patch +0 -116
- data/ext/libmemcached-3.patch +0 -8
- data/ext/libmemcached-4.patch +0 -40
- data/ext/libmemcached-5.patch +0 -832
- data/ext/libmemcached-6.patch +0 -20
- data/ext/libmemcached-7.patch +0 -2989
- data/ext/libmemcached-8.patch +0 -137
- data/ext/libmemcached-9.patch +0 -13
- data/ext/sasl.patch +0 -29283
@@ -0,0 +1,145 @@
|
|
1
|
+
/*
|
2
|
+
* Summary: Constants for libmemcached
|
3
|
+
*
|
4
|
+
* Copy: See Copyright for the status of this software.
|
5
|
+
*
|
6
|
+
* Author: Brian Aker
|
7
|
+
*/
|
8
|
+
|
9
|
+
#ifndef __MEMCACHED_CONSTANTS_H__
|
10
|
+
#define __MEMCACHED_CONSTANTS_H__
|
11
|
+
|
12
|
+
/* Public defines */
|
13
|
+
#define MEMCACHED_DEFAULT_PORT 11211
|
14
|
+
#define MEMCACHED_MAX_KEY 251 /* We add one to have it null terminated */
|
15
|
+
#define MEMCACHED_MAX_BUFFER 8196
|
16
|
+
#define MEMCACHED_MAX_HOST_LENGTH 64
|
17
|
+
#define MEMCACHED_MAX_HOST_SORT_LENGTH 86 /* Used for Ketama */
|
18
|
+
#define MEMCACHED_POINTS_PER_SERVER 100
|
19
|
+
#define MEMCACHED_POINTS_PER_SERVER_KETAMA 160
|
20
|
+
#define MEMCACHED_CONTINUUM_SIZE MEMCACHED_POINTS_PER_SERVER*100 /* This would then set max hosts to 100 */
|
21
|
+
#define MEMCACHED_STRIDE 4
|
22
|
+
#define MEMCACHED_DEFAULT_TIMEOUT 1000
|
23
|
+
#define MEMCACHED_CONTINUUM_ADDITION 10 /* How many extra slots we should build for in the continuum */
|
24
|
+
#define MEMCACHED_PREFIX_KEY_MAX_SIZE 128
|
25
|
+
#define MEMCACHED_EXPIRATION_NOT_ADD 0xffffffffU
|
26
|
+
|
27
|
+
typedef enum {
|
28
|
+
MEMCACHED_SUCCESS,
|
29
|
+
MEMCACHED_FAILURE,
|
30
|
+
MEMCACHED_HOST_LOOKUP_FAILURE,
|
31
|
+
MEMCACHED_CONNECTION_FAILURE,
|
32
|
+
MEMCACHED_CONNECTION_BIND_FAILURE,
|
33
|
+
MEMCACHED_WRITE_FAILURE,
|
34
|
+
MEMCACHED_READ_FAILURE,
|
35
|
+
MEMCACHED_UNKNOWN_READ_FAILURE,
|
36
|
+
MEMCACHED_PROTOCOL_ERROR,
|
37
|
+
MEMCACHED_CLIENT_ERROR,
|
38
|
+
MEMCACHED_SERVER_ERROR,
|
39
|
+
MEMCACHED_CONNECTION_SOCKET_CREATE_FAILURE,
|
40
|
+
MEMCACHED_DATA_EXISTS,
|
41
|
+
MEMCACHED_DATA_DOES_NOT_EXIST,
|
42
|
+
MEMCACHED_NOTSTORED,
|
43
|
+
MEMCACHED_STORED,
|
44
|
+
MEMCACHED_NOTFOUND,
|
45
|
+
MEMCACHED_MEMORY_ALLOCATION_FAILURE,
|
46
|
+
MEMCACHED_PARTIAL_READ,
|
47
|
+
MEMCACHED_SOME_ERRORS,
|
48
|
+
MEMCACHED_NO_SERVERS,
|
49
|
+
MEMCACHED_END,
|
50
|
+
MEMCACHED_DELETED,
|
51
|
+
MEMCACHED_VALUE,
|
52
|
+
MEMCACHED_STAT,
|
53
|
+
MEMCACHED_ITEM,
|
54
|
+
MEMCACHED_ERRNO,
|
55
|
+
MEMCACHED_FAIL_UNIX_SOCKET,
|
56
|
+
MEMCACHED_NOT_SUPPORTED,
|
57
|
+
MEMCACHED_NO_KEY_PROVIDED, /* Deprecated. Use MEMCACHED_BAD_KEY_PROVIDED! */
|
58
|
+
MEMCACHED_FETCH_NOTFINISHED,
|
59
|
+
MEMCACHED_TIMEOUT,
|
60
|
+
MEMCACHED_BUFFERED,
|
61
|
+
MEMCACHED_BAD_KEY_PROVIDED,
|
62
|
+
MEMCACHED_INVALID_HOST_PROTOCOL,
|
63
|
+
MEMCACHED_SERVER_MARKED_DEAD,
|
64
|
+
MEMCACHED_UNKNOWN_STAT_KEY,
|
65
|
+
MEMCACHED_AUTH_PROBLEM,
|
66
|
+
MEMCACHED_AUTH_FAILURE,
|
67
|
+
MEMCACHED_AUTH_CONTINUE,
|
68
|
+
MEMCACHED_MAXIMUM_RETURN /* Always add new error code before */
|
69
|
+
} memcached_return;
|
70
|
+
|
71
|
+
typedef enum {
|
72
|
+
MEMCACHED_DISTRIBUTION_MODULA,
|
73
|
+
MEMCACHED_DISTRIBUTION_CONSISTENT,
|
74
|
+
MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA,
|
75
|
+
MEMCACHED_DISTRIBUTION_RANDOM
|
76
|
+
} memcached_server_distribution;
|
77
|
+
|
78
|
+
typedef enum {
|
79
|
+
MEMCACHED_BEHAVIOR_NO_BLOCK,
|
80
|
+
MEMCACHED_BEHAVIOR_TCP_NODELAY,
|
81
|
+
MEMCACHED_BEHAVIOR_HASH,
|
82
|
+
MEMCACHED_BEHAVIOR_KETAMA,
|
83
|
+
MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE,
|
84
|
+
MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE,
|
85
|
+
MEMCACHED_BEHAVIOR_CACHE_LOOKUPS,
|
86
|
+
MEMCACHED_BEHAVIOR_SUPPORT_CAS,
|
87
|
+
MEMCACHED_BEHAVIOR_POLL_TIMEOUT,
|
88
|
+
MEMCACHED_BEHAVIOR_DISTRIBUTION,
|
89
|
+
MEMCACHED_BEHAVIOR_BUFFER_REQUESTS,
|
90
|
+
MEMCACHED_BEHAVIOR_USER_DATA,
|
91
|
+
MEMCACHED_BEHAVIOR_SORT_HOSTS,
|
92
|
+
MEMCACHED_BEHAVIOR_VERIFY_KEY,
|
93
|
+
MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT,
|
94
|
+
MEMCACHED_BEHAVIOR_RETRY_TIMEOUT,
|
95
|
+
MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED,
|
96
|
+
MEMCACHED_BEHAVIOR_KETAMA_HASH,
|
97
|
+
MEMCACHED_BEHAVIOR_BINARY_PROTOCOL,
|
98
|
+
MEMCACHED_BEHAVIOR_SND_TIMEOUT,
|
99
|
+
MEMCACHED_BEHAVIOR_RCV_TIMEOUT,
|
100
|
+
MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT,
|
101
|
+
MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK,
|
102
|
+
MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK,
|
103
|
+
MEMCACHED_BEHAVIOR_IO_KEY_PREFETCH,
|
104
|
+
MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY,
|
105
|
+
MEMCACHED_BEHAVIOR_NOREPLY,
|
106
|
+
MEMCACHED_BEHAVIOR_USE_UDP,
|
107
|
+
MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS
|
108
|
+
} memcached_behavior;
|
109
|
+
|
110
|
+
typedef enum {
|
111
|
+
MEMCACHED_CALLBACK_PREFIX_KEY = 0,
|
112
|
+
MEMCACHED_CALLBACK_USER_DATA = 1,
|
113
|
+
MEMCACHED_CALLBACK_CLEANUP_FUNCTION = 2,
|
114
|
+
MEMCACHED_CALLBACK_CLONE_FUNCTION = 3,
|
115
|
+
#ifdef MEMCACHED_ENABLE_DEPRECATED
|
116
|
+
MEMCACHED_CALLBACK_MALLOC_FUNCTION = 4,
|
117
|
+
MEMCACHED_CALLBACK_REALLOC_FUNCTION = 5,
|
118
|
+
MEMCACHED_CALLBACK_FREE_FUNCTION = 6,
|
119
|
+
#endif
|
120
|
+
MEMCACHED_CALLBACK_GET_FAILURE = 7,
|
121
|
+
MEMCACHED_CALLBACK_DELETE_TRIGGER = 8
|
122
|
+
} memcached_callback;
|
123
|
+
|
124
|
+
typedef enum {
|
125
|
+
MEMCACHED_HASH_DEFAULT= 0,
|
126
|
+
MEMCACHED_HASH_MD5,
|
127
|
+
MEMCACHED_HASH_CRC,
|
128
|
+
MEMCACHED_HASH_FNV1_64,
|
129
|
+
MEMCACHED_HASH_FNV1A_64,
|
130
|
+
MEMCACHED_HASH_FNV1_32,
|
131
|
+
MEMCACHED_HASH_FNV1A_32,
|
132
|
+
MEMCACHED_HASH_HSIEH,
|
133
|
+
MEMCACHED_HASH_MURMUR,
|
134
|
+
MEMCACHED_HASH_JENKINS,
|
135
|
+
MEMCACHED_HASH_NONE
|
136
|
+
} memcached_hash;
|
137
|
+
|
138
|
+
typedef enum {
|
139
|
+
MEMCACHED_CONNECTION_UNKNOWN,
|
140
|
+
MEMCACHED_CONNECTION_TCP,
|
141
|
+
MEMCACHED_CONNECTION_UDP,
|
142
|
+
MEMCACHED_CONNECTION_UNIX_SOCKET
|
143
|
+
} memcached_connection;
|
144
|
+
|
145
|
+
#endif /* __MEMCACHED_CONSTANTS_H__ */
|
File without changes
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#include "common.h"
|
2
|
+
|
3
|
+
memcached_return memcached_do(memcached_server_st *ptr, const void *command,
|
4
|
+
size_t command_length, uint8_t with_flush)
|
5
|
+
{
|
6
|
+
memcached_return rc;
|
7
|
+
ssize_t sent_length;
|
8
|
+
|
9
|
+
WATCHPOINT_ASSERT(command_length);
|
10
|
+
WATCHPOINT_ASSERT(command);
|
11
|
+
|
12
|
+
if ((rc= memcached_connect(ptr)) != MEMCACHED_SUCCESS)
|
13
|
+
{
|
14
|
+
WATCHPOINT_ERROR(rc);
|
15
|
+
return rc;
|
16
|
+
}
|
17
|
+
|
18
|
+
/*
|
19
|
+
** Since non buffering ops in UDP mode dont check to make sure they will fit
|
20
|
+
** before they start writing, if there is any data in buffer, clear it out,
|
21
|
+
** otherwise we might get a partial write.
|
22
|
+
**/
|
23
|
+
if (ptr->type == MEMCACHED_CONNECTION_UDP && with_flush && ptr->write_buffer_offset > UDP_DATAGRAM_HEADER_LENGTH)
|
24
|
+
memcached_io_write(ptr, NULL, 0, 1);
|
25
|
+
|
26
|
+
sent_length= memcached_io_write(ptr, command, command_length, (char) with_flush);
|
27
|
+
|
28
|
+
if (sent_length == -1 || (size_t)sent_length != command_length)
|
29
|
+
rc= MEMCACHED_WRITE_FAILURE;
|
30
|
+
else if ((ptr->root->flags & MEM_NOREPLY) == 0)
|
31
|
+
memcached_server_response_increment(ptr);
|
32
|
+
|
33
|
+
return rc;
|
34
|
+
}
|
@@ -0,0 +1,79 @@
|
|
1
|
+
/*
|
2
|
+
We use this to dump all keys.
|
3
|
+
|
4
|
+
At this point we only support a callback method. This could be optimized by first
|
5
|
+
calling items and finding active slabs. For the moment though we just loop through
|
6
|
+
all slabs on servers and "grab" the keys.
|
7
|
+
*/
|
8
|
+
|
9
|
+
#include "common.h"
|
10
|
+
static memcached_return ascii_dump(memcached_st *ptr, memcached_dump_func *callback, void *context, uint32_t number_of_callbacks)
|
11
|
+
{
|
12
|
+
memcached_return rc= 0;
|
13
|
+
char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE];
|
14
|
+
size_t send_length;
|
15
|
+
uint32_t server_key;
|
16
|
+
uint32_t x;
|
17
|
+
|
18
|
+
unlikely (ptr->number_of_hosts == 0)
|
19
|
+
return MEMCACHED_NO_SERVERS;
|
20
|
+
|
21
|
+
for (server_key= 0; server_key < ptr->number_of_hosts; server_key++)
|
22
|
+
{
|
23
|
+
/* 256 I BELIEVE is the upper limit of slabs */
|
24
|
+
for (x= 0; x < 256; x++)
|
25
|
+
{
|
26
|
+
send_length= (size_t) snprintf(buffer, MEMCACHED_DEFAULT_COMMAND_SIZE,
|
27
|
+
"stats cachedump %u 0 0\r\n", x);
|
28
|
+
|
29
|
+
rc= memcached_do(&ptr->hosts[server_key], buffer, send_length, 1);
|
30
|
+
|
31
|
+
unlikely (rc != MEMCACHED_SUCCESS)
|
32
|
+
goto error;
|
33
|
+
|
34
|
+
while (1)
|
35
|
+
{
|
36
|
+
uint32_t callback_counter;
|
37
|
+
rc= memcached_response(&ptr->hosts[server_key], buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, NULL);
|
38
|
+
|
39
|
+
if (rc == MEMCACHED_ITEM)
|
40
|
+
{
|
41
|
+
char *string_ptr, *end_ptr;
|
42
|
+
char *key;
|
43
|
+
|
44
|
+
string_ptr= buffer;
|
45
|
+
string_ptr+= 5; /* Move past ITEM */
|
46
|
+
for (end_ptr= string_ptr; isgraph(*end_ptr); end_ptr++);
|
47
|
+
key= string_ptr;
|
48
|
+
key[(size_t)(end_ptr-string_ptr)]= 0;
|
49
|
+
for (callback_counter= 0; callback_counter < number_of_callbacks; callback_counter++)
|
50
|
+
{
|
51
|
+
rc= (*callback[callback_counter])(ptr, key, (size_t)(end_ptr-string_ptr), context);
|
52
|
+
if (rc != MEMCACHED_SUCCESS)
|
53
|
+
break;
|
54
|
+
}
|
55
|
+
}
|
56
|
+
else if (rc == MEMCACHED_END)
|
57
|
+
break;
|
58
|
+
else
|
59
|
+
goto error;
|
60
|
+
}
|
61
|
+
}
|
62
|
+
}
|
63
|
+
|
64
|
+
error:
|
65
|
+
if (rc == MEMCACHED_END)
|
66
|
+
return MEMCACHED_SUCCESS;
|
67
|
+
else
|
68
|
+
return rc;
|
69
|
+
}
|
70
|
+
|
71
|
+
memcached_return memcached_dump(memcached_st *ptr, memcached_dump_func *callback, void *context, uint32_t number_of_callbacks)
|
72
|
+
{
|
73
|
+
/* No support for Binary protocol yet */
|
74
|
+
if (ptr->flags & MEM_BINARY_PROTOCOL)
|
75
|
+
return MEMCACHED_FAILURE;
|
76
|
+
|
77
|
+
return ascii_dump(ptr, callback, context, number_of_callbacks);
|
78
|
+
}
|
79
|
+
|
@@ -0,0 +1,102 @@
|
|
1
|
+
#include "common.h"
|
2
|
+
#include "memcached_io.h"
|
3
|
+
|
4
|
+
char *memcached_fetch(memcached_st *ptr, char *key, size_t *key_length,
|
5
|
+
size_t *value_length,
|
6
|
+
uint32_t *flags,
|
7
|
+
memcached_return *error)
|
8
|
+
{
|
9
|
+
memcached_result_st *result_buffer= &ptr->result;
|
10
|
+
|
11
|
+
unlikely (ptr->flags & MEM_USE_UDP)
|
12
|
+
{
|
13
|
+
*error= MEMCACHED_NOT_SUPPORTED;
|
14
|
+
return NULL;
|
15
|
+
}
|
16
|
+
|
17
|
+
result_buffer= memcached_fetch_result(ptr, result_buffer, error);
|
18
|
+
|
19
|
+
if (result_buffer == NULL || *error != MEMCACHED_SUCCESS)
|
20
|
+
{
|
21
|
+
WATCHPOINT_ASSERT(result_buffer == NULL);
|
22
|
+
*value_length= 0;
|
23
|
+
return NULL;
|
24
|
+
}
|
25
|
+
|
26
|
+
*value_length= memcached_string_length(&result_buffer->value);
|
27
|
+
|
28
|
+
if (key)
|
29
|
+
{
|
30
|
+
strncpy(key, result_buffer->key, result_buffer->key_length);
|
31
|
+
*key_length= result_buffer->key_length;
|
32
|
+
}
|
33
|
+
|
34
|
+
if (result_buffer->flags)
|
35
|
+
*flags= result_buffer->flags;
|
36
|
+
else
|
37
|
+
*flags= 0;
|
38
|
+
|
39
|
+
return memcached_string_c_copy(&result_buffer->value);
|
40
|
+
}
|
41
|
+
|
42
|
+
memcached_result_st *memcached_fetch_result(memcached_st *ptr,
|
43
|
+
memcached_result_st *result,
|
44
|
+
memcached_return *error)
|
45
|
+
{
|
46
|
+
memcached_server_st *server;
|
47
|
+
|
48
|
+
unlikely (ptr->flags & MEM_USE_UDP)
|
49
|
+
{
|
50
|
+
*error= MEMCACHED_NOT_SUPPORTED;
|
51
|
+
return NULL;
|
52
|
+
}
|
53
|
+
|
54
|
+
if (result == NULL)
|
55
|
+
if ((result= memcached_result_create(ptr, NULL)) == NULL)
|
56
|
+
return NULL;
|
57
|
+
|
58
|
+
while ((server = memcached_io_get_readable_server(ptr)) != NULL)
|
59
|
+
{
|
60
|
+
char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE];
|
61
|
+
*error= memcached_response(server, buffer, sizeof(buffer), result);
|
62
|
+
|
63
|
+
if (*error == MEMCACHED_SUCCESS)
|
64
|
+
return result;
|
65
|
+
else if (*error == MEMCACHED_END)
|
66
|
+
memcached_server_response_reset(server);
|
67
|
+
else
|
68
|
+
break;
|
69
|
+
}
|
70
|
+
|
71
|
+
/* We have completed reading data */
|
72
|
+
if (result->is_allocated)
|
73
|
+
memcached_result_free(result);
|
74
|
+
else
|
75
|
+
memcached_string_reset(&result->value);
|
76
|
+
|
77
|
+
return NULL;
|
78
|
+
}
|
79
|
+
|
80
|
+
memcached_return memcached_fetch_execute(memcached_st *ptr,
|
81
|
+
memcached_execute_function *callback,
|
82
|
+
void *context,
|
83
|
+
unsigned int number_of_callbacks)
|
84
|
+
{
|
85
|
+
memcached_result_st *result= &ptr->result;
|
86
|
+
memcached_return rc= MEMCACHED_FAILURE;
|
87
|
+
unsigned int x;
|
88
|
+
|
89
|
+
while ((result= memcached_fetch_result(ptr, result, &rc)) != NULL)
|
90
|
+
{
|
91
|
+
if (rc == MEMCACHED_SUCCESS)
|
92
|
+
{
|
93
|
+
for (x= 0; x < number_of_callbacks; x++)
|
94
|
+
{
|
95
|
+
rc= (*callback[x])(ptr, result, context);
|
96
|
+
if (rc != MEMCACHED_SUCCESS)
|
97
|
+
break;
|
98
|
+
}
|
99
|
+
}
|
100
|
+
}
|
101
|
+
return rc;
|
102
|
+
}
|
@@ -0,0 +1,89 @@
|
|
1
|
+
#include "common.h"
|
2
|
+
|
3
|
+
static memcached_return memcached_flush_binary(memcached_st *ptr,
|
4
|
+
time_t expiration);
|
5
|
+
static memcached_return memcached_flush_textual(memcached_st *ptr,
|
6
|
+
time_t expiration);
|
7
|
+
|
8
|
+
memcached_return memcached_flush(memcached_st *ptr, time_t expiration)
|
9
|
+
{
|
10
|
+
memcached_return rc;
|
11
|
+
|
12
|
+
LIBMEMCACHED_MEMCACHED_FLUSH_START();
|
13
|
+
if (ptr->flags & MEM_BINARY_PROTOCOL)
|
14
|
+
rc= memcached_flush_binary(ptr, expiration);
|
15
|
+
else
|
16
|
+
rc= memcached_flush_textual(ptr, expiration);
|
17
|
+
LIBMEMCACHED_MEMCACHED_FLUSH_END();
|
18
|
+
return rc;
|
19
|
+
}
|
20
|
+
|
21
|
+
static memcached_return memcached_flush_textual(memcached_st *ptr,
|
22
|
+
time_t expiration)
|
23
|
+
{
|
24
|
+
unsigned int x;
|
25
|
+
size_t send_length;
|
26
|
+
memcached_return rc;
|
27
|
+
char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE];
|
28
|
+
|
29
|
+
unlikely (ptr->number_of_hosts == 0)
|
30
|
+
return MEMCACHED_NO_SERVERS;
|
31
|
+
|
32
|
+
for (x= 0; x < ptr->number_of_hosts; x++)
|
33
|
+
{
|
34
|
+
bool no_reply= (ptr->flags & MEM_NOREPLY);
|
35
|
+
if (expiration)
|
36
|
+
send_length= (size_t) snprintf(buffer, MEMCACHED_DEFAULT_COMMAND_SIZE,
|
37
|
+
"flush_all %llu%s\r\n",
|
38
|
+
(unsigned long long)expiration, no_reply ? " noreply" : "");
|
39
|
+
else
|
40
|
+
send_length= (size_t) snprintf(buffer, MEMCACHED_DEFAULT_COMMAND_SIZE,
|
41
|
+
"flush_all%s\r\n", no_reply ? " noreply" : "");
|
42
|
+
|
43
|
+
rc= memcached_do(&ptr->hosts[x], buffer, send_length, 1);
|
44
|
+
|
45
|
+
if (rc == MEMCACHED_SUCCESS && !no_reply)
|
46
|
+
(void)memcached_response(&ptr->hosts[x], buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, NULL);
|
47
|
+
}
|
48
|
+
|
49
|
+
return MEMCACHED_SUCCESS;
|
50
|
+
}
|
51
|
+
|
52
|
+
static memcached_return memcached_flush_binary(memcached_st *ptr,
|
53
|
+
time_t expiration)
|
54
|
+
{
|
55
|
+
unsigned int x;
|
56
|
+
protocol_binary_request_flush request= {.bytes= {0}};
|
57
|
+
|
58
|
+
unlikely (ptr->number_of_hosts == 0)
|
59
|
+
return MEMCACHED_NO_SERVERS;
|
60
|
+
|
61
|
+
request.message.header.request.magic= (uint8_t)PROTOCOL_BINARY_REQ;
|
62
|
+
request.message.header.request.opcode= PROTOCOL_BINARY_CMD_FLUSH;
|
63
|
+
request.message.header.request.extlen= 4;
|
64
|
+
request.message.header.request.datatype= PROTOCOL_BINARY_RAW_BYTES;
|
65
|
+
request.message.header.request.bodylen= htonl(request.message.header.request.extlen);
|
66
|
+
request.message.body.expiration= htonl((uint32_t) expiration);
|
67
|
+
|
68
|
+
for (x= 0; x < ptr->number_of_hosts; x++)
|
69
|
+
{
|
70
|
+
if (ptr->flags & MEM_NOREPLY)
|
71
|
+
request.message.header.request.opcode= PROTOCOL_BINARY_CMD_FLUSHQ;
|
72
|
+
else
|
73
|
+
request.message.header.request.opcode= PROTOCOL_BINARY_CMD_FLUSH;
|
74
|
+
if (memcached_do(&ptr->hosts[x], request.bytes,
|
75
|
+
sizeof(request.bytes), 1) != MEMCACHED_SUCCESS)
|
76
|
+
{
|
77
|
+
memcached_io_reset(&ptr->hosts[x]);
|
78
|
+
return MEMCACHED_WRITE_FAILURE;
|
79
|
+
}
|
80
|
+
}
|
81
|
+
|
82
|
+
for (x= 0; x < ptr->number_of_hosts; x++)
|
83
|
+
{
|
84
|
+
if (memcached_server_response_count(&ptr->hosts[x]) > 0)
|
85
|
+
(void)memcached_response(&ptr->hosts[x], NULL, 0, NULL);
|
86
|
+
}
|
87
|
+
|
88
|
+
return MEMCACHED_SUCCESS;
|
89
|
+
}
|