/* */ #ifndef _D_DNS_CACHE_H_ #define _D_DNS_CACHE_H_ #include "common.h" #include "SharedHandle.h" #include "SingletonHolder.h" #include "A2STR.h" #include #include namespace aria2 { class DNSCache { public: virtual ~DNSCache() {} virtual std::string find(const std::string& hostname) = 0; virtual void put(const std::string& hostname, const std::string& ipaddr) = 0; }; typedef SharedHandle DNSCacheHandle; typedef SingletonHolder DNSCacheSingletonHolder; class SimpleDNSCache : public DNSCache { private: std::map _table; public: SimpleDNSCache() {} virtual ~SimpleDNSCache() {} virtual std::string find(const std::string& hostname) { return _table[hostname]; } virtual void put(const std::string& hostname, const std::string& ipaddr) { _table[hostname] = ipaddr; } }; class NullDNSCache : public DNSCache { public: virtual ~NullDNSCache() {} virtual 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_