finished self-implementation of DNS resolver recursion; will now remove all that!
[pingcheck] / src / dns / dnscache.h
index c3879ae..c213777 100644 (file)
 
 #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
 {
@@ -45,11 +48,14 @@ public:
 
     // 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: