X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Finstance.cc;h=50d6388ef884587da588532f6df46ba3b8a6f17f;hb=2897ccfa82591bd17d02c344465c4a74e3b3dbae;hp=41f491e8ef2d0e01f8af73dff0227ca7ef73b9fc;hpb=79382f4948d4734711dda45e1ac397bf7149076c;p=awesomized%2Flibmemcached diff --git a/libmemcached/instance.cc b/libmemcached/instance.cc index 41f491e8..50d6388e 100644 --- a/libmemcached/instance.cc +++ b/libmemcached/instance.cc @@ -44,6 +44,9 @@ static inline void _server_init(org::libmemcached::Instance* self, memcached_st { self->options.is_shutting_down= false; self->options.is_dead= false; + self->options.ready= false; + self->_events= 0; + self->_revents= 0; self->cursor_active_= 0; self->port_= port; self->fd= INVALID_SOCKET; @@ -108,6 +111,27 @@ static org::libmemcached::Instance* _server_create(org::libmemcached::Instance* return self; } +void org::libmemcached::Instance::events(short arg) +{ + if ((_events | arg) == _events) + { + return; + } + + _events|= arg; +} + +void org::libmemcached::Instance::revents(short arg) +{ + if (arg) + { + options.ready= true; + } + + _revents= arg; + _events&= short(~arg); +} + org::libmemcached::Instance* __instance_create_with(memcached_st *memc, org::libmemcached::Instance* self, const memcached_string_t& hostname, @@ -136,11 +160,6 @@ org::libmemcached::Instance* __instance_create_with(memcached_st *memc, memcached_io_init_udp_header(self, 0); } - if (memc) - { - memcached_connect_try(self); - } - return self; } @@ -170,52 +189,31 @@ void __instance_free(org::libmemcached::Instance* self) void memcached_instance_free(org::libmemcached::Instance* self) { - if (self == NULL) + if (self) { - return; + __instance_free(self); } - - __instance_free(self); } -/* - If we do not have a valid object to clone from, we toss an error. -*/ -memcached_server_st *memcached_instance_2_server(org::libmemcached::Instance* source) -{ - /* We just do a normal create if source is missing */ - if (source == NULL) - { - return NULL; - } - - memcached_string_t hostname= { memcached_string_make_from_cstr(source->hostname) }; - return __server_create_with(source->root, NULL, - hostname, - source->port(), source->weight, - source->type); - -} - -memcached_return_t memcached_server_cursor(const memcached_st *ptr, +memcached_return_t memcached_server_cursor(const memcached_st* memc, const memcached_server_fn *callback, void *context, uint32_t number_of_callbacks) { memcached_return_t rc; - if (memcached_failed(rc= initialize_const_query(ptr))) + if (memcached_failed(rc= initialize_const_query(memc))) { return rc; } size_t errors= 0; - for (uint32_t x= 0; x < memcached_instance_list_count(ptr); x++) + for (uint32_t x= 0; x < memcached_instance_list_count(memc); x++) { - org::libmemcached::Instance* instance= memcached_instance_by_position(ptr, x); + org::libmemcached::Instance* instance= memcached_instance_by_position(memc, x); for (uint32_t y= 0; y < number_of_callbacks; y++) { - memcached_return_t ret= (*callback[y])(ptr, instance, context); + memcached_return_t ret= (*callback[y])(memc, instance, context); if (memcached_failed(ret)) { @@ -228,7 +226,7 @@ memcached_return_t memcached_server_cursor(const memcached_st *ptr, return errors ? MEMCACHED_SOME_ERRORS : MEMCACHED_SUCCESS; } -memcached_return_t memcached_server_execute(memcached_st *ptr, +memcached_return_t memcached_server_execute(memcached_st *memc, memcached_server_execute_fn callback, void *context) { @@ -238,11 +236,11 @@ memcached_return_t memcached_server_execute(memcached_st *ptr, } bool some_errors= false;; - for (uint32_t x= 0; x < memcached_instance_list_count(ptr); x++) + for (uint32_t x= 0; x < memcached_instance_list_count(memc); x++) { - org::libmemcached::Instance* instance= memcached_instance_fetch(ptr, x); + org::libmemcached::Instance* instance= memcached_instance_fetch(memc, x); - memcached_return_t rc= (*callback)(ptr, instance, context); + memcached_return_t rc= (*callback)(memc, instance, context); if (rc == MEMCACHED_INVALID_ARGUMENTS) { return rc; @@ -257,7 +255,7 @@ memcached_return_t memcached_server_execute(memcached_st *ptr, return MEMCACHED_SUCCESS; } -memcached_server_instance_st memcached_server_by_key(memcached_st *ptr, +memcached_server_instance_st memcached_server_by_key(memcached_st *memc, const char *key, size_t key_length, memcached_return_t *error) @@ -270,20 +268,20 @@ memcached_server_instance_st memcached_server_by_key(memcached_st *ptr, memcached_return_t rc; - if (memcached_failed(rc= initialize_const_query(ptr))) + if (memcached_failed(rc= initialize_const_query(memc))) { *error= rc; return NULL; } - if (memcached_failed((memcached_key_test(*ptr, (const char **)&key, &key_length, 1)))) + if (memcached_failed((memcached_key_test(*memc, (const char **)&key, &key_length, 1)))) { - *error= memcached_last_error(ptr); + *error= memcached_last_error(memc); return NULL; } - uint32_t server_key= memcached_generate_hash(ptr, key, key_length); - return memcached_instance_by_position(ptr, server_key); + uint32_t server_key= memcached_generate_hash(memc, key, key_length); + return memcached_instance_by_position(memc, server_key); } /* @@ -341,26 +339,6 @@ memcached_server_instance_st memcached_server_get_last_disconnect(const memcache return (memcached_server_instance_st)self->last_disconnected_server; } -const char *memcached_instance_name(const memcached_server_instance_st self) -{ - WATCHPOINT_ASSERT(self); - if (self == NULL) - return NULL; - - return self->hostname; -} - -in_port_t memcached_instance_port(const memcached_server_instance_st self) -{ - WATCHPOINT_ASSERT(self); - if (self == NULL) - { - return 0; - } - - return self->port(); -} - void memcached_instance_next_retry(memcached_server_instance_st self, const time_t absolute_time) { WATCHPOINT_ASSERT(self); @@ -369,14 +347,3 @@ void memcached_instance_next_retry(memcached_server_instance_st self, const time ((org::libmemcached::Instance*)self)->next_retry= absolute_time; } } - -uint32_t memcached_instance_response_count(const org::libmemcached::Instance* self) -{ - WATCHPOINT_ASSERT(self); - if (self == NULL) - { - return 0; - } - - return self->cursor_active_; -}