X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fserver.cc;h=e2837c7d03c84e2f43248db2bfa5892375564227;hb=b6719ab469b16022edd830cb90bc476b17fa6743;hp=27e51e96691784cab0c3281c358dd29367e54ac0;hpb=326e812b0ca940bf90aaadf69312a0316091d0cb;p=awesomized%2Flibmemcached diff --git a/libmemcached/server.cc b/libmemcached/server.cc index 27e51e96..e2837c7d 100644 --- a/libmemcached/server.cc +++ b/libmemcached/server.cc @@ -54,6 +54,8 @@ static inline void _server_init(memcached_server_st *self, Memcached *root, self->request_id= 0; self->server_failure_counter= 0; self->server_failure_counter_query_id= 0; + self->server_timeout_counter= 0; + self->server_timeout_counter_query_id= 0; self->weight= weight ? weight : 1; // 1 is the default weight value self->io_wait_count.read= 0; self->io_wait_count.write= 0; @@ -191,18 +193,18 @@ uint32_t memcached_server_count(const memcached_st *self) return self->number_of_hosts; } -const char *memcached_server_name(const memcached_server_instance_st self) +const char *memcached_server_name(const memcached_instance_st * self) { WATCHPOINT_ASSERT(self); if (self) { - return self->hostname; + return self->_hostname; } return NULL; } -in_port_t memcached_server_port(const memcached_server_instance_st self) +in_port_t memcached_server_port(const memcached_instance_st * self) { WATCHPOINT_ASSERT(self); if (self == NULL) @@ -213,7 +215,25 @@ in_port_t memcached_server_port(const memcached_server_instance_st self) return self->port(); } -uint32_t memcached_server_response_count(const memcached_server_instance_st self) +in_port_t memcached_server_srcport(const memcached_instance_st * self) +{ + WATCHPOINT_ASSERT(self); + if (self == NULL || self->fd == INVALID_SOCKET || (self->type != MEMCACHED_CONNECTION_TCP && self->type != MEMCACHED_CONNECTION_UDP)) + { + return 0; + } + + struct sockaddr_in sin; + socklen_t addrlen= sizeof(sin); + if (getsockname(self->fd, (struct sockaddr*)&sin, &addrlen) != -1) + { + return ntohs(sin.sin_port); + } + + return -1; +} + +uint32_t memcached_server_response_count(const memcached_instance_st * self) { WATCHPOINT_ASSERT(self); if (self == NULL) @@ -224,7 +244,7 @@ uint32_t memcached_server_response_count(const memcached_server_instance_st self return self->cursor_active_; } -const char *memcached_server_type(const memcached_server_instance_st ptr) +const char *memcached_server_type(const memcached_instance_st * ptr) { if (ptr) { @@ -244,7 +264,7 @@ const char *memcached_server_type(const memcached_server_instance_st ptr) return "UNKNOWN"; } -uint8_t memcached_server_major_version(const memcached_server_instance_st instance) +uint8_t memcached_server_major_version(const memcached_instance_st * instance) { if (instance) { @@ -254,7 +274,7 @@ uint8_t memcached_server_major_version(const memcached_server_instance_st instan return UINT8_MAX; } -uint8_t memcached_server_minor_version(const memcached_server_instance_st instance) +uint8_t memcached_server_minor_version(const memcached_instance_st * instance) { if (instance) { @@ -264,7 +284,7 @@ uint8_t memcached_server_minor_version(const memcached_server_instance_st instan return UINT8_MAX; } -uint8_t memcached_server_micro_version(const memcached_server_instance_st instance) +uint8_t memcached_server_micro_version(const memcached_instance_st * instance) { if (instance) {