Bug 1278: Ipv4ClickRouting::HandleScheduleFromClick should stay integer for delay calculation to be accurate
authorBjörn Lichtblau
Thu, 13 Oct 2011 21:55:21 +0200
changeset 7558 0d04b625ea54
parent 7557 81ca9a7671bb
child 7559 26d96687bb3b
Bug 1278: Ipv4ClickRouting::HandleScheduleFromClick should stay integer for delay calculation to be accurate
src/click/model/ipv4-click-routing.cc
--- a/src/click/model/ipv4-click-routing.cc	Thu Oct 06 18:03:59 2011 +0100
+++ b/src/click/model/ipv4-click-routing.cc	Thu Oct 13 21:55:21 2011 +0200
@@ -261,6 +261,8 @@
 {
   m_simNode->curtime.tv_sec = Simulator::Now ().GetSeconds ();
   m_simNode->curtime.tv_usec = Simulator::Now ().GetMicroSeconds () % 1000000;
+  NS_LOG_DEBUG ("RunClickEvent at " << m_simNode->curtime.tv_sec << " " << 
+                                       m_simNode->curtime.tv_usec << " " << Simulator::Now ());
   simclick_click_run (m_simNode);
 }
 
@@ -269,10 +271,10 @@
 {
   NS_LOG_DEBUG ("HandleScheduleFromClick at " << when->tv_sec << " " << when->tv_usec << " " << Simulator::Now ());
 
-  double simtime = when->tv_sec + (when->tv_usec / 1.0e6);
-  double simdelay = simtime - Simulator::Now ().GetMicroSeconds () / 1.0e6;
+  Time simtime  = Time::FromInteger(when->tv_sec, Time::S) + Time::FromInteger(when->tv_usec, Time::US);
+  Time simdelay = simtime - Simulator::Now();
 
-  Simulator::Schedule (Seconds (simdelay), &Ipv4ClickRouting::RunClickEvent, this);
+  Simulator::Schedule (simdelay, &Ipv4ClickRouting::RunClickEvent, this);
 }
 
 void
@@ -640,7 +642,7 @@
         clickInstance->HandleScheduleFromClick (when);
 
         retval = 0;
-        NS_LOG_DEBUG (clickInstance->GetNodeName () << " SIMCLICK_SCHEDULE: " << when->tv_sec << "s and " << when->tv_usec << "usecs later.");
+        NS_LOG_DEBUG (clickInstance->GetNodeName () << " SIMCLICK_SCHEDULE at " << when->tv_sec << "s and " << when->tv_usec << "usecs.");
 
         break;
       }