#include "host/pinger.h" // for IoserviceItem
#include "dns/hostaddress.h"
+#include "dns/timetolive.h"
typedef std::vector<HostAddress> HostAddressVec;
typedef std::map<std::string, HostAddressVec> ip_map_type;
-typedef std::map<std::string, std::string> cname_map_type;
+typedef std::pair<std::string, TimeToLive> Cname;
+typedef std::map<std::string, Cname> cname_map_type;
+
class DnsCache
{
// accessed from ResolverBase subclasses
void update(const std::string &hostname, const HostAddressVec &new_data);
- void update(const std::string &hostname, const std::string &cname);
- void update_ttl(const std::string &hostname, const uint32_t ttl);
- HostAddressVec& get_ips(const std::string &hostname);
- std::string& get_cname(const std::string &hostname);
- HostAddressVec& get_ips_recursive(const std::string &hostname);
+ void update(const std::string &hostname, const Cname &cname);
+ void update(const std::string &hostname, const uint32_t ttl);
+ HostAddressVec get_ips(const std::string &hostname,
+ const bool check_up_to_date=false);
+ std::string get_cname(const std::string &hostname,
+ const bool check_up_to_date=false);
+ HostAddressVec get_ips_recursive(const std::string &hostname,
+ const bool check_up_to_date=false);
// variables
private: