#include "DNSCache.h" #include #include #include namespace DB { static Poco::Net::IPAddress resolveIPAddressImpl(const std::string & host) { return Poco::Net::DNS::resolveOne(host); } static Poco::Net::SocketAddress resolveSocketAddressImpl(const std::string & host_and_port) { return Poco::Net::SocketAddress(host_and_port); } struct DNSCache::Impl { /// TODO: Use only one cache for different formats SimpleCache cache_host; SimpleCache cache_host_and_port; }; DNSCache::DNSCache() : impl(std::make_unique()) {} Poco::Net::IPAddress DNSCache::resolveHost(const std::string & host) { return impl->cache_host(host); } Poco::Net::SocketAddress DNSCache::resolveHostAndPort(const std::string & host_and_port) { return impl->cache_host_and_port(host_and_port); } void DNSCache::dropCache() { impl->cache_host.dropCache(); impl->cache_host_and_port.dropCache(); } DNSCache::~DNSCache() = default; }