aboutsummaryrefslogtreecommitdiff
path: root/src/simulator.cc
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2021-05-14 10:25:51 +0200
committerLoic Guegan <manzerbredes@mailbox.org>2021-05-14 10:25:51 +0200
commitc757315893fdf5d951d4cad12775ee60a2de141f (patch)
treeea3b2833c8752802ed599e369f3986ee45e3f258 /src/simulator.cc
parent9365501740d04d7b8251ef73046f013f5bcf9f76 (diff)
Debug network model
Diffstat (limited to 'src/simulator.cc')
-rw-r--r--src/simulator.cc25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/simulator.cc b/src/simulator.cc
index d27de1b..9322a2b 100644
--- a/src/simulator.cc
+++ b/src/simulator.cc
@@ -24,7 +24,14 @@
uptimeTrack=CLOCK-uptimeTrack; \
uptime-=uptimeTrack; \
uptime=uptime > 0 ? uptime : 0; \
- }
+ }
+/// @brief Note that we need to simulate latency our self since we need to send instantaneous messages
+#define SEND(instruction) \
+ { \
+ simgrid::s4u::this_actor::sleep_for(i.latency); \
+ instruction; \
+ }
+
/// @brief Required by SimGrid
XBT_LOG_NEW_DEFAULT_CATEGORY(simulator, "[DAO] Loosely Coupled DSS");
@@ -123,25 +130,26 @@ static void obs_node(std::vector<std::string> args) {
p->duration=i.GetNextDuration();
p->hint=i.GetNextTS();
}
- MODE_ON();
try {
// First we send and instantaneous message
// This allow first to detect if their is a receiver
// (to not cause deadlock for the extended mode) and second
// to inform the receiver if he should get a hint first
+ MODE_TX();
TRACK_UPTIME(m->put(p,0,uptime));
simgrid::s4u::Mailbox *m_ded= simgrid::s4u::Mailbox::by_name(p->DedicatedMailbox);
// First send hint if it is required
- MODE_TX();
if(p->HasHint){
- TRACK_UPTIME(m_ded->put(p,i.hint_size,uptime));
+ TRACK_UPTIME(SEND(m_ded->put(p,i.hint_size,uptime)));
XBT_INFO("%s sent a hint successfully",CNAME);
}
// Then try sending the data
- if(i.extended)
- m_ded->put(p,i.data_size);
- else
- m_ded->put(p,i.data_size,uptime);
+ if(i.extended){
+ SEND(m_ded->put(p,i.data_size));
+ }
+ else{
+ SEND(m_ded->put(p,i.data_size,uptime));
+ }
// If we reach here, data has been sent successfully
XBT_INFO("%s sent data successfully",CNAME);
nSend++;
@@ -157,7 +165,6 @@ static void obs_node(std::vector<std::string> args) {
Payload *p; // Received data
Payload *hint; // To Save the received hint
bool hintReceived=false; // In case of error during data rx this will be use to check if we could use the *hint Payload object
- MODE_ON();
try {
// Get the instantaneous message
TRACK_UPTIME(p=m->get<Payload>(uptime));