1 /* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
5 * Copyright (C) 2011 Data Differential, http://datadifferential.com/
6 * Copyright (C) 2006-2009 Brian Aker All rights reserved.
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions are
12 * * Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
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
20 * * The names of its contributors may not be used to endorse or
21 * promote products derived from this software without specific prior
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.
42 #define MEMCACHED_DEFAULT_PORT 11211
43 #define MEMCACHED_MAX_KEY 251 /* We add one to have it null terminated */
44 #define MEMCACHED_MAX_BUFFER 8196
45 #define MEMCACHED_MAX_HOST_SORT_LENGTH 86 /* Used for Ketama */
46 #define MEMCACHED_POINTS_PER_SERVER 100
47 #define MEMCACHED_POINTS_PER_SERVER_KETAMA 160
48 #define MEMCACHED_CONTINUUM_SIZE MEMCACHED_POINTS_PER_SERVER*100 /* This would then set max hosts to 100 */
49 #define MEMCACHED_STRIDE 4
50 #define MEMCACHED_DEFAULT_TIMEOUT 5000
51 #define MEMCACHED_DEFAULT_CONNECT_TIMEOUT 4000
52 #define MEMCACHED_CONTINUUM_ADDITION 10 /* How many extra slots we should build for in the continuum */
53 #define MEMCACHED_PREFIX_KEY_MAX_SIZE 128
54 #define MEMCACHED_EXPIRATION_NOT_ADD 0xffffffffU
55 #define MEMCACHED_VERSION_STRING_LENGTH 24
56 #define MEMCACHED_MAXIMUM_INTEGER_DISPLAY_LENGTH 20
57 #define MEMCACHED_SERVER_FAILURE_LIMIT 5
58 #define MEMCACHED_SERVER_FAILURE_RETRY_TIMEOUT 2
61 enum memcached_server_distribution_t
{
62 MEMCACHED_DISTRIBUTION_MODULA
,
63 MEMCACHED_DISTRIBUTION_CONSISTENT
,
64 MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA
,
65 MEMCACHED_DISTRIBUTION_RANDOM
,
66 MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA_SPY
,
67 MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED
,
68 MEMCACHED_DISTRIBUTION_VIRTUAL_BUCKET
,
69 MEMCACHED_DISTRIBUTION_CONSISTENT_MAX
73 typedef enum memcached_server_distribution_t memcached_server_distribution_t
;
76 enum memcached_behavior_t
{
77 MEMCACHED_BEHAVIOR_NO_BLOCK
,
78 MEMCACHED_BEHAVIOR_TCP_NODELAY
,
79 MEMCACHED_BEHAVIOR_HASH
,
80 MEMCACHED_BEHAVIOR_KETAMA
,
81 MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE
,
82 MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE
,
83 MEMCACHED_BEHAVIOR_CACHE_LOOKUPS
,
84 MEMCACHED_BEHAVIOR_SUPPORT_CAS
,
85 MEMCACHED_BEHAVIOR_POLL_TIMEOUT
,
86 MEMCACHED_BEHAVIOR_DISTRIBUTION
,
87 MEMCACHED_BEHAVIOR_BUFFER_REQUESTS
,
88 MEMCACHED_BEHAVIOR_USER_DATA
,
89 MEMCACHED_BEHAVIOR_SORT_HOSTS
,
90 MEMCACHED_BEHAVIOR_VERIFY_KEY
,
91 MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT
,
92 MEMCACHED_BEHAVIOR_RETRY_TIMEOUT
,
93 MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED
,
94 MEMCACHED_BEHAVIOR_KETAMA_HASH
,
95 MEMCACHED_BEHAVIOR_BINARY_PROTOCOL
,
96 MEMCACHED_BEHAVIOR_SND_TIMEOUT
,
97 MEMCACHED_BEHAVIOR_RCV_TIMEOUT
,
98 MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT
,
99 MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK
,
100 MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK
,
101 MEMCACHED_BEHAVIOR_IO_KEY_PREFETCH
,
102 MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY
,
103 MEMCACHED_BEHAVIOR_NOREPLY
,
104 MEMCACHED_BEHAVIOR_USE_UDP
,
105 MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS
,
106 MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS
,
107 MEMCACHED_BEHAVIOR_RANDOMIZE_REPLICA_READ
,
108 MEMCACHED_BEHAVIOR_CORK
,
109 MEMCACHED_BEHAVIOR_TCP_KEEPALIVE
,
110 MEMCACHED_BEHAVIOR_TCP_KEEPIDLE
,
111 MEMCACHED_BEHAVIOR_LOAD_FROM_FILE
,
112 MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS
,
113 MEMCACHED_BEHAVIOR_MAX
117 typedef enum memcached_behavior_t memcached_behavior_t
;
120 enum memcached_callback_t
{
121 MEMCACHED_CALLBACK_PREFIX_KEY
= 0,
122 MEMCACHED_CALLBACK_USER_DATA
= 1,
123 MEMCACHED_CALLBACK_CLEANUP_FUNCTION
= 2,
124 MEMCACHED_CALLBACK_CLONE_FUNCTION
= 3,
125 MEMCACHED_CALLBACK_GET_FAILURE
= 7,
126 MEMCACHED_CALLBACK_DELETE_TRIGGER
= 8,
127 MEMCACHED_CALLBACK_MAX
,
128 MEMCACHED_CALLBACK_NAMESPACE
= MEMCACHED_CALLBACK_PREFIX_KEY
132 typedef enum memcached_callback_t memcached_callback_t
;
135 enum memcached_hash_t
{
136 MEMCACHED_HASH_DEFAULT
= 0,
139 MEMCACHED_HASH_FNV1_64
,
140 MEMCACHED_HASH_FNV1A_64
,
141 MEMCACHED_HASH_FNV1_32
,
142 MEMCACHED_HASH_FNV1A_32
,
143 MEMCACHED_HASH_HSIEH
,
144 MEMCACHED_HASH_MURMUR
,
145 MEMCACHED_HASH_JENKINS
,
146 MEMCACHED_HASH_CUSTOM
,
151 typedef enum memcached_hash_t memcached_hash_t
;
154 enum memcached_connection_t
{
155 MEMCACHED_CONNECTION_TCP
,
156 MEMCACHED_CONNECTION_UDP
,
157 MEMCACHED_CONNECTION_UNIX_SOCKET
161 MEMCACHED_CONNECTION_UNKNOWN
= 0,
162 MEMCACHED_CONNECTION_MAX
= 0
166 typedef enum memcached_connection_t memcached_connection_t
;