Code improvement:
authorGuilherme Maciel Ferreira <guilherme.maciel.ferreira@gmail.com>
Sun, 26 Feb 2012 22:36:29 +0000 (19:36 -0300)
committerGuilherme Maciel Ferreira <guilherme.maciel.ferreira@gmail.com>
Sun, 26 Feb 2012 22:36:29 +0000 (19:36 -0300)
- using STL rotate algorithm;
- and parameterized the fill_answers_list() method.

src/dns/dnsresolver.cpp
src/dns/dnsresolver.h

index 40b1477..40aaaae 100644 (file)
@@ -19,6 +19,7 @@ on this file might be covered by the GNU General Public License.
 */
 #include "dns/dnsresolver.h"
 
+#include <algorithm>
 #include <iostream>
 
 #include <boost/assert.hpp>
@@ -38,6 +39,7 @@ using boost::net::dns::a_resource;
 using boost::net::dns::resource_base_t;
 using boost::net::dns::message;
 using boost::net::dns::rr_list_t;
+using boost::net::dns::type_t;
 using boost::shared_ptr;
 using I2n::Logger::GlobalLogger;
 
@@ -84,12 +86,11 @@ bool DnsResolver::resolve()
         return true;
     }
 
-    GlobalLogger.info() << "Resolved IP(s) for host : "
-            << HostDnsAddress << endl;
+    GlobalLogger.info() << "Resolved IP(s) for host : " << HostDnsAddress << endl;
 
     try
     {
-        rr_list_t answers_list = fill_answers_list( HostDnsAddress, NameServer);
+        rr_list_t answers_list = fill_answers_list( HostDnsAddress, NameServer, boost::net::dns::type_a );
 
         size_t resolved_ip_count = answers_list.size();
         if ( resolved_ip_count < 1 )
@@ -142,10 +143,10 @@ string DnsResolver::get_next_ip()
     size_t list_size_before = ResolvedHostAddressList.size();
 
     HostAddress host_address = ResolvedHostAddressList.front();
-    ResolvedHostAddressList.pop_front();
     string destination_ip = host_address.get_ip();
     uint32_t ttl = host_address.get_ttl().get_updated_value();
-    ResolvedHostAddressList.push_back( host_address );
+
+    rotate( ResolvedHostAddressList.begin(), ++ResolvedHostAddressList.begin(), ResolvedHostAddressList.end() );
 
     size_t list_size_after = ResolvedHostAddressList.size();
 
@@ -178,11 +179,11 @@ bool DnsResolver::expired_resolved_ip() const
 }
 
 /**
- * @brief Check if hostname is already an IPv4 address. Will insert it into
+ * @brief Check if hostname is already an IP address. Will insert it into
  * #ResolvedHostAddressList.
  *
  * @param host_dns_address
- * @return bool True if already an ip, false if not
+ * @return bool @c true if the address is already an IP, @c false if not.
  **/
 bool DnsResolver::handle_ip_address()
 {
@@ -219,7 +220,8 @@ bool DnsResolver::handle_ip_address()
 
 rr_list_t DnsResolver::fill_answers_list(
         const string &host_dns_address,
-        const string &name_server
+        const string &name_server,
+        const type_t message_type
 ) const
 {
     BOOST_ASSERT( !host_dns_address.empty() );
@@ -228,8 +230,10 @@ rr_list_t DnsResolver::fill_answers_list(
     address nameServer( address::from_string( name_server ) );
     boost::net::dns::resolve resolver;
     resolver.addServer( nameServer );
-    message dns_message( host_dns_address, boost::net::dns::type_a );
+
+    message dns_message( host_dns_address, message_type );
     message& dns_packet = resolver.query( dns_message );
+
     // Note: perform a copy of each element from one vector to the other, do not reference
     return *dns_packet.answers();
 }
index 95a2eaf..b24cb2c 100644 (file)
@@ -52,7 +52,8 @@ private:
 
     boost::net::dns::rr_list_t fill_answers_list(
             const std::string &host_dns_address,
-            const std::string &name_server
+            const std::string &name_server,
+            const boost::net::dns::type_t message_type
     ) const;
     void fill_resolved_ip_list(
             const boost::net::dns::rr_list_t& answers_list,