Merge in bug fix for lp:779837
[awesomized/libmemcached] / libmemcached / constants.h
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
39 #pragma once
40
41 /* Public defines */
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
57
58 enum memcached_server_distribution_t {
59 MEMCACHED_DISTRIBUTION_MODULA,
60 MEMCACHED_DISTRIBUTION_CONSISTENT,
61 MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA,
62 MEMCACHED_DISTRIBUTION_RANDOM,
63 MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA_SPY,
64 MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED,
65 MEMCACHED_DISTRIBUTION_VIRTUAL_BUCKET,
66 MEMCACHED_DISTRIBUTION_CONSISTENT_MAX
67 };
68
69 #ifndef __cplusplus
70 typedef enum memcached_server_distribution_t memcached_server_distribution_t;
71 #endif
72
73 enum memcached_behavior_t {
74 MEMCACHED_BEHAVIOR_NO_BLOCK,
75 MEMCACHED_BEHAVIOR_TCP_NODELAY,
76 MEMCACHED_BEHAVIOR_HASH,
77 MEMCACHED_BEHAVIOR_KETAMA,
78 MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE,
79 MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE,
80 MEMCACHED_BEHAVIOR_CACHE_LOOKUPS,
81 MEMCACHED_BEHAVIOR_SUPPORT_CAS,
82 MEMCACHED_BEHAVIOR_POLL_TIMEOUT,
83 MEMCACHED_BEHAVIOR_DISTRIBUTION,
84 MEMCACHED_BEHAVIOR_BUFFER_REQUESTS,
85 MEMCACHED_BEHAVIOR_USER_DATA,
86 MEMCACHED_BEHAVIOR_SORT_HOSTS,
87 MEMCACHED_BEHAVIOR_VERIFY_KEY,
88 MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT,
89 MEMCACHED_BEHAVIOR_RETRY_TIMEOUT,
90 MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED,
91 MEMCACHED_BEHAVIOR_KETAMA_HASH,
92 MEMCACHED_BEHAVIOR_BINARY_PROTOCOL,
93 MEMCACHED_BEHAVIOR_SND_TIMEOUT,
94 MEMCACHED_BEHAVIOR_RCV_TIMEOUT,
95 MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT,
96 MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK,
97 MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK,
98 MEMCACHED_BEHAVIOR_IO_KEY_PREFETCH,
99 MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY,
100 MEMCACHED_BEHAVIOR_NOREPLY,
101 MEMCACHED_BEHAVIOR_USE_UDP,
102 MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS,
103 MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS,
104 MEMCACHED_BEHAVIOR_RANDOMIZE_REPLICA_READ,
105 MEMCACHED_BEHAVIOR_CORK,
106 MEMCACHED_BEHAVIOR_TCP_KEEPALIVE,
107 MEMCACHED_BEHAVIOR_TCP_KEEPIDLE,
108 MEMCACHED_BEHAVIOR_LOAD_FROM_FILE,
109 MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS,
110 MEMCACHED_BEHAVIOR_MAX
111 };
112
113 #ifndef __cplusplus
114 typedef enum memcached_behavior_t memcached_behavior_t;
115 #endif
116
117 enum memcached_callback_t {
118 MEMCACHED_CALLBACK_PREFIX_KEY = 0,
119 MEMCACHED_CALLBACK_USER_DATA = 1,
120 MEMCACHED_CALLBACK_CLEANUP_FUNCTION = 2,
121 MEMCACHED_CALLBACK_CLONE_FUNCTION = 3,
122 #ifdef MEMCACHED_ENABLE_DEPRECATED
123 MEMCACHED_CALLBACK_MALLOC_FUNCTION = 4,
124 MEMCACHED_CALLBACK_REALLOC_FUNCTION = 5,
125 MEMCACHED_CALLBACK_FREE_FUNCTION = 6,
126 #endif
127 MEMCACHED_CALLBACK_GET_FAILURE = 7,
128 MEMCACHED_CALLBACK_DELETE_TRIGGER = 8,
129 MEMCACHED_CALLBACK_MAX
130 };
131
132 #ifndef __cplusplus
133 typedef enum memcached_callback_t memcached_callback_t;
134 #endif
135
136 enum memcached_hash_t {
137 MEMCACHED_HASH_DEFAULT= 0,
138 MEMCACHED_HASH_MD5,
139 MEMCACHED_HASH_CRC,
140 MEMCACHED_HASH_FNV1_64,
141 MEMCACHED_HASH_FNV1A_64,
142 MEMCACHED_HASH_FNV1_32,
143 MEMCACHED_HASH_FNV1A_32,
144 MEMCACHED_HASH_HSIEH,
145 MEMCACHED_HASH_MURMUR,
146 MEMCACHED_HASH_JENKINS,
147 MEMCACHED_HASH_CUSTOM,
148 MEMCACHED_HASH_MAX
149 };
150
151 #ifndef __cplusplus
152 typedef enum memcached_hash_t memcached_hash_t;
153 #endif
154
155 enum memcached_connection_t {
156 MEMCACHED_CONNECTION_UNKNOWN,
157 MEMCACHED_CONNECTION_TCP,
158 MEMCACHED_CONNECTION_UDP,
159 MEMCACHED_CONNECTION_UNIX_SOCKET,
160 MEMCACHED_CONNECTION_MAX
161 };
162
163 #ifndef __cplusplus
164 typedef enum memcached_connection_t memcached_connection_t;
165 #endif