Browse Source

Add elapsed time when verbose (which is my default for now).

Update usage statement.


git-svn-id: svn://bind10.isc.org/svn/bind10/branches/f2f200910@182 e5f2f494-b856-4b98-b285-d166d9295462
Jeremy C. Reed 15 years ago
parent
commit
df0d726038
1 changed files with 21 additions and 2 deletions
  1. 21 2
      src/bin/host/host.cc

+ 21 - 2
src/bin/host/host.cc

@@ -15,6 +15,7 @@ char* dns_type = NULL;    // not set, so A, AAAA, MX
 char* server = "127.0.0.1";
 char* server = "127.0.0.1";
 int   verbose = 1;       // later make this an option and default to 0
 int   verbose = 1;       // later make this an option and default to 0
 int   first_time = 1;
 int   first_time = 1;
+struct timeval before_time, after_time;
 
 
 int
 int
 host_lookup(char* name, char* type)
 host_lookup(char* name, char* type)
@@ -65,6 +66,10 @@ host_lookup(char* name, char* type)
         return (1);
         return (1);
     }
     }
 
 
+    if (verbose) {
+        gettimeofday(&before_time, NULL);
+    }
+
     msg.getBuffer().sendTo(s, *res->ai_addr, res->ai_addrlen);
     msg.getBuffer().sendTo(s, *res->ai_addr, res->ai_addrlen);
 
 
     Message rmsg;
     Message rmsg;
@@ -77,6 +82,11 @@ host_lookup(char* name, char* type)
     if (rmsg.getBuffer().recvFrom(s, sa, &sa_len) > 0) {
     if (rmsg.getBuffer().recvFrom(s, sa, &sa_len) > 0) {
         try {
         try {
             rmsg.fromWire();
             rmsg.fromWire();
+
+            if (verbose) {
+                gettimeofday(&after_time, NULL);
+            }
+
             // HEADER and QUESTION SECTION:
             // HEADER and QUESTION SECTION:
             std::cout << rmsg.toText() << std::endl;
             std::cout << rmsg.toText() << std::endl;
 // ;; ANSWER SECTION:
 // ;; ANSWER SECTION:
@@ -84,9 +94,18 @@ host_lookup(char* name, char* type)
 // SECTION_AUTHORITY
 // SECTION_AUTHORITY
 // SECTION_ADDITIONAL
 // SECTION_ADDITIONAL
 
 
+            if (before_time.tv_usec > after_time.tv_usec) {
+                after_time.tv_usec += 1000000;
+                --after_time.tv_sec;
+            }
+
+            int elapsed_time =
+                (after_time.tv_sec - before_time.tv_sec)
+                + ((after_time.tv_usec - before_time.tv_usec))/1000;
+
             std::cout << "\nReceived " <<
             std::cout << "\nReceived " <<
                 boost::lexical_cast<string>(rmsg.getBuffer().getSize()) <<
                 boost::lexical_cast<string>(rmsg.getBuffer().getSize()) <<
-                " bytes\n";
+                " bytes in " << elapsed_time << " ms\n";
 // TODO: " bytes from 127.0.0.1#53 in 0 ms
 // TODO: " bytes from 127.0.0.1#53 in 0 ms
         } catch (...) {
         } catch (...) {
             std::cerr << "parse failed" << std::endl;
             std::cerr << "parse failed" << std::endl;
@@ -102,7 +121,7 @@ main(int argc, char* argv[])
 {
 {
 
 
     if (argc < 2) {
     if (argc < 2) {
-        cout << "Usage: host _hostname_\n";
+        cout << "Usage: host hostname [server]\n";
     }
     }
     else {
     else {