X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fbehavior.c;h=91e33a0bd583c7faf1c8008c2e29641a3a4d1ae3;hb=55cf7c68679083cdd7351db3b888c6f8ddcebe09;hp=0df9603365d97e8b6156fd5c628cb411f5810507;hpb=abc87c2867661669e897142dbfd531e32a14981b;p=awesomized%2Flibmemcached diff --git a/libmemcached/behavior.c b/libmemcached/behavior.c index 0df96033..91e33a0b 100644 --- a/libmemcached/behavior.c +++ b/libmemcached/behavior.c @@ -51,11 +51,15 @@ memcached_return_t memcached_behavior_set(memcached_st *ptr, case MEMCACHED_BEHAVIOR_RCV_TIMEOUT: ptr->rcv_timeout= (int32_t)data; break; + + case MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS: + ptr->flags.auto_eject_hosts= set_flag(data); case MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT: ptr->server_failure_limit= (uint32_t)data; break; + case MEMCACHED_BEHAVIOR_BINARY_PROTOCOL: - memcached_quit(ptr); // We need t shutdown all of the connections to make sure we do the correct protocol + send_quit(ptr); // We need t shutdown all of the connections to make sure we do the correct protocol if (data) { ptr->flags.verify_key= false; @@ -67,11 +71,11 @@ memcached_return_t memcached_behavior_set(memcached_st *ptr, break; case MEMCACHED_BEHAVIOR_NO_BLOCK: ptr->flags.no_block= set_flag(data); - memcached_quit(ptr); + send_quit(ptr); break; case MEMCACHED_BEHAVIOR_BUFFER_REQUESTS: ptr->flags.buffer_requests= set_flag(data); - memcached_quit(ptr); + send_quit(ptr); break; case MEMCACHED_BEHAVIOR_USE_UDP: if (memcached_server_count(ptr)) @@ -86,11 +90,11 @@ memcached_return_t memcached_behavior_set(memcached_st *ptr, break; case MEMCACHED_BEHAVIOR_TCP_NODELAY: ptr->flags.tcp_nodelay= set_flag(data); - memcached_quit(ptr); + send_quit(ptr); break; case MEMCACHED_BEHAVIOR_TCP_KEEPALIVE: ptr->flags.tcp_keepalive= set_flag(data); - memcached_quit(ptr); + send_quit(ptr); break; case MEMCACHED_BEHAVIOR_DISTRIBUTION: return memcached_behavior_set_distribution(ptr, (memcached_server_distribution_t)data); @@ -115,13 +119,14 @@ memcached_return_t memcached_behavior_set(memcached_st *ptr, return memcached_behavior_set_key_hash(ptr, (memcached_hash_t)(data)); case MEMCACHED_BEHAVIOR_KETAMA_HASH: return memcached_behavior_set_distribution_hash(ptr, (memcached_hash_t)(data)); + case MEMCACHED_BEHAVIOR_CACHE_LOOKUPS: - ptr->flags.use_cache_lookups= set_flag(data); - memcached_quit(ptr); - break; + return memcached_set_error_string(ptr, MEMCACHED_DEPRECATED, + memcached_string_with_size("MEMCACHED_BEHAVIOR_CACHE_LOOKUPS has been deprecated.")); + case MEMCACHED_BEHAVIOR_VERIFY_KEY: if (ptr->flags.binary_protocol) - return memcached_set_error_string(ptr, MEMCACHED_FAILURE, + return memcached_set_error_string(ptr, MEMCACHED_INVALID_ARGUMENTS, memcached_string_with_size("MEMCACHED_BEHAVIOR_VERIFY_KEY if the binary protocol has been enabled.")); ptr->flags.verify_key= set_flag(data); break; @@ -143,18 +148,18 @@ memcached_return_t memcached_behavior_set(memcached_st *ptr, break; case MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE: ptr->send_size= (int32_t)data; - memcached_quit(ptr); + send_quit(ptr); break; case MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE: ptr->recv_size= (int32_t)data; - memcached_quit(ptr); + send_quit(ptr); break; case MEMCACHED_BEHAVIOR_TCP_KEEPIDLE: ptr->tcp_keepidle= (uint32_t)data; - memcached_quit(ptr); + send_quit(ptr); break; case MEMCACHED_BEHAVIOR_USER_DATA: - return memcached_set_error_string(ptr, MEMCACHED_FAILURE, + return memcached_set_error_string(ptr, MEMCACHED_DEPRECATED, memcached_string_with_size("MEMCACHED_BEHAVIOR_USER_DATA deprecated.")); case MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY: ptr->flags.hash_with_prefix_key= set_flag(data); @@ -171,12 +176,8 @@ memcached_return_t memcached_behavior_set(memcached_st *ptr, break; case MEMCACHED_BEHAVIOR_CORK: { -#ifdef HAVE_MSG_MORE - break; -#else - return memcached_set_error_string(ptr, MEMCACHED_NOT_SUPPORTED, - memcached_string_with_size("MEMCACHED_BEHAVIOR_CORK is not supported on this platform.")); -#endif + return memcached_set_error_string(ptr, MEMCACHED_DEPRECATED, + memcached_string_with_size("MEMCACHED_BEHAVIOR_CORK is now incorporated into the driver by default.")); } break; case MEMCACHED_BEHAVIOR_LOAD_FROM_FILE: @@ -215,8 +216,10 @@ uint64_t memcached_behavior_get(memcached_st *ptr, return ptr->flags.binary_protocol; case MEMCACHED_BEHAVIOR_SUPPORT_CAS: return ptr->flags.support_cas; + case MEMCACHED_BEHAVIOR_CACHE_LOOKUPS: - return ptr->flags.use_cache_lookups; + return true; + case MEMCACHED_BEHAVIOR_NO_BLOCK: return ptr->flags.no_block; case MEMCACHED_BEHAVIOR_BUFFER_REQUESTS: @@ -237,6 +240,7 @@ uint64_t memcached_behavior_get(memcached_st *ptr, return hashkit_get_function(&ptr->hashkit); case MEMCACHED_BEHAVIOR_KETAMA_HASH: return hashkit_get_function(&ptr->distribution_hashkit); + case MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS: case MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT: return ptr->server_failure_limit; case MEMCACHED_BEHAVIOR_SORT_HOSTS: @@ -325,8 +329,9 @@ uint64_t memcached_behavior_get(memcached_st *ptr, return (uint64_t) sock_size; } case MEMCACHED_BEHAVIOR_USER_DATA: - return memcached_set_error_string(ptr, MEMCACHED_FAILURE, - memcached_string_with_size("MEMCACHED_BEHAVIOR_USER_DATA deprecated.")); + memcached_set_error_string(ptr, MEMCACHED_DEPRECATED, + memcached_string_with_size("MEMCACHED_BEHAVIOR_USER_DATA deprecated.")); + return 0; case MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY: return ptr->flags.hash_with_prefix_key; case MEMCACHED_BEHAVIOR_NOREPLY: @@ -443,6 +448,7 @@ const char *libmemcached_string_behavior(const memcached_behavior_t flag) case MEMCACHED_BEHAVIOR_NOREPLY: return "MEMCACHED_BEHAVIOR_NOREPLY"; case MEMCACHED_BEHAVIOR_USE_UDP: return "MEMCACHED_BEHAVIOR_USE_UDP"; case MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS: return "MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS"; + case MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS: return "MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS"; case MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS: return "MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS"; case MEMCACHED_BEHAVIOR_RANDOMIZE_REPLICA_READ: return "MEMCACHED_BEHAVIOR_RANDOMIZE_REPLICA_READ"; case MEMCACHED_BEHAVIOR_CORK: return "MEMCACHED_BEHAVIOR_CORK";