diff options
Diffstat (limited to 'src/simulator.cc')
| -rw-r--r-- | src/simulator.cc | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/simulator.cc b/src/simulator.cc index 78d83d0..d6c8882 100644 --- a/src/simulator.cc +++ b/src/simulator.cc @@ -18,6 +18,11 @@ #define CLOCK (simgrid::s4u::Engine::get_clock()) #define CNAME (selfName.c_str()) #define FOR(t) (t<uptime?t:uptime) +#define ADD_EVENT(HINT) \ + { \ + XBT_INFO("%s add a new hint at %f for a duration of %f",CNAME,HINT->hint,HINT->duration); \ + i.AddEvent(HINT->hint, HINT->duration); \ + } #define TRACK_UPTIME(instruction) \ { \ double uptimeTrack=CLOCK; \ @@ -44,6 +49,7 @@ simgrid::s4u::Mailbox *m_ded= simgrid::s4u::Mailbox::by_name(hint_forward->DedicatedMailbox); \ MODE_TX(); \ SEND(m_ded->put(hint_forward,0,uptime)); \ + XBT_INFO("%s forward a hint successfully",CNAME); \ } \ catch(...){ \ XBT_INFO("%s fail to forward a hint",CNAME); \ @@ -134,6 +140,7 @@ static void obs_node(std::vector<std::string> args) { Payload *hint_forward=NULL; // Contains the hint to forward bool is_sender=i.is_sender; // This variable might change if all receiver have received the data bool isObserver=false; + double timeDataRcv=-1; while(i.ShouldContinue()){ // Start by sleeping XBT_INFO("%s is sleeping",CNAME); @@ -166,6 +173,7 @@ static void obs_node(std::vector<std::string> args) { simgrid::s4u::Mailbox *m_ded= simgrid::s4u::Mailbox::by_name(p->DedicatedMailbox); MODE_TX(); SEND(m_ded->put(p,p->DataSize,uptime)); // Send the actual hint + MODE_ON(); XBT_INFO("%s sent a hint successfully",CNAME); } catch(...){} @@ -209,6 +217,7 @@ static void obs_node(std::vector<std::string> args) { catch(...){} } sendhint_mode=!sendhint_mode; // Switch back and forth between sending hint and data + MODE_ON(); } // ---------- RECEIVER ---------- else if(!isObserver){ @@ -235,7 +244,7 @@ static void obs_node(std::vector<std::string> args) { MODE_ON(); XBT_INFO("%s received a forwarded hint successfully",CNAME); if(CLOCK < p->hint){ - i.AddEvent(p->hint, p->duration); + ADD_EVENT(p); hint_forward=new Payload(*p); hint_added++; } @@ -250,7 +259,7 @@ static void obs_node(std::vector<std::string> args) { XBT_INFO("%s received a hint successfully",CNAME); hint_forward=new Payload(*p); // Enable hint forwarding if(CLOCK < p->hint){ - i.AddEvent(p->hint, p->duration); + ADD_EVENT(p); hint_forward=new Payload(*p); hint_added++; } @@ -268,6 +277,7 @@ static void obs_node(std::vector<std::string> args) { p=m_ded->get<Payload>(uptime); // Fetch data until sended or uptime expire // If we reach here, data has been received successfully XBT_INFO("%s received data successfully",CNAME); + timeDataRcv=CLOCK; if(p->HasHint){ XBT_INFO("%s received a hint along with data successfully",CNAME); hint_forward=new Payload(*p); // Enable hint forwarding @@ -337,5 +347,5 @@ static void obs_node(std::vector<std::string> args) { } // Done MODE_OFF() - XBT_INFO("Observation node %s finished [LOG2PARSE](node:%s|isSender:%d|nSend:%d|nWakeUp:%d|nDataRcv:%d|nSendFail:%d|nRcvFail:%d|totalUptime:%f|seed:%d|hint_added:%d)",CNAME,CNAME,i.is_sender,nSend,nWakeUp,nDataRcv,nSendFail,nRcvFail,totalUptime,i.seed,hint_added); + XBT_INFO("Observation node %s finished [LOG2PARSE](node:%s|isSender:%d|nSend:%d|nWakeUp:%d|nDataRcv:%d|nSendFail:%d|nRcvFail:%d|totalUptime:%f|seed:%d|hint_added:%d|timeDataRcv:%f)",CNAME,CNAME,i.is_sender,nSend,nWakeUp,nDataRcv,nSendFail,nRcvFail,totalUptime,i.seed,hint_added,timeDataRcv); }
\ No newline at end of file |
