/* */ #ifndef _D_DNS_CACHE_H_ #define _D_DNS_CACHE_H_ #include "common.h" #include #include #include "A2STR.h" namespace aria2 { class DNSCache { public: virtual ~DNSCache() {} virtual const std::string& find(const std::string& hostname) const = 0; virtual void put(const std::string& hostname, const std::string& ipaddr) = 0; }; class SimpleDNSCache : public DNSCache { private: std::map _table; public: SimpleDNSCache() {} virtual ~SimpleDNSCache() {} virtual const std::string& find(const std::string& hostname) const { std::map::const_iterator i = _table.find(hostname); if(i == _table.end()) { return A2STR::NIL; } else { return (*i).second; } } virtual void put(const std::string& hostname, const std::string& ipaddr) { _table[hostname] = ipaddr; } }; class NullDNSCache : public DNSCache { public: virtual ~NullDNSCache() {} virtual const std::string& find(const std::string& hostname) { return A2STR::NIL; } virtual void put(const std::string& hostname, const std::string& ipaddr) {} }; } // namespace aria2 #endif // _D_DNS_CACHE_H_