X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Finstance.hpp;h=d0a772b926c03fcf5a53668a5f8335442d69e0e6;hb=51413212545b0e50b0f79f13994a792402814614;hp=bab2f9ea9f776ae2f358dc45237725d5d754f24f;hpb=4e01ca8c1c23089e7740ff9ba6ad018d17491731;p=awesomized%2Flibmemcached diff --git a/libmemcached/instance.hpp b/libmemcached/instance.hpp index bab2f9ea..d0a772b9 100644 --- a/libmemcached/instance.hpp +++ b/libmemcached/instance.hpp @@ -2,7 +2,7 @@ * * Libmemcached library * - * Copyright (C) 2012 Data Differential, http://datadifferential.com/ + * Copyright (C) 2012-2013 Data Differential, http://datadifferential.com/ * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -56,6 +56,8 @@ # define MEMCACHED_NI_MAXSERV 32 #endif +#include "libmemcached/string.hpp" + namespace org { namespace libmemcached { @@ -119,6 +121,25 @@ struct Instance { return _revents; } + const char* hostname() + { + return _hostname; + } + + void hostname(const memcached_string_t& hostname_) + { + if (hostname_.size) + { + memcpy(_hostname, hostname_.c_str, hostname_.size); + _hostname[hostname_.size]= 0; + } + else + { + memcpy(_hostname, memcached_literal_param("localhost")); + _hostname[memcached_literal_param_size("localhost")]= 0; + } + } + void events(short); void revents(short); @@ -154,7 +175,17 @@ struct Instance { struct memcached_error_t *error_messages; char read_buffer[MEMCACHED_MAX_BUFFER]; char write_buffer[MEMCACHED_MAX_BUFFER]; - char hostname[MEMCACHED_NI_MAXHOST]; + char _hostname[MEMCACHED_NI_MAXHOST]; + + void clear_addrinfo() + { + if (address_info) + { + freeaddrinfo(address_info); + address_info= NULL; + address_info_next= NULL; + } + } }; } // namespace libmemcached @@ -162,7 +193,7 @@ struct Instance { org::libmemcached::Instance* __instance_create_with(memcached_st *memc, org::libmemcached::Instance* self, - const memcached_string_t& hostname, + const memcached_string_t& _hostname, const in_port_t port, uint32_t weight, const memcached_connection_t type);