Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Define CommImpl::test().
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Mon, 12 Apr 2021 08:36:00 +0000 (10:36 +0200)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Mon, 12 Apr 2021 08:39:34 +0000 (10:39 +0200)
src/kernel/activity/ActivityImpl.hpp
src/kernel/activity/CommImpl.cpp
src/kernel/activity/CommImpl.hpp

index 755eb2d..68fe1ef 100644 (file)
@@ -46,7 +46,7 @@ public:
   const std::string& get_name() const { return name_; }
   const char* get_cname() const { return name_.c_str(); }
 
-  bool test();
+  virtual bool test();
   void wait_for(actor::ActorImpl* issuer, double timeout);
   virtual ActivityImpl& set_timeout(double) { THROW_UNIMPLEMENTED; }
 
index 95f7c05..3e80008 100644 (file)
@@ -223,17 +223,9 @@ void simcall_HANDLER_comm_wait(smx_simcall_t simcall, simgrid::kernel::activity:
   }
 }
 
-bool simcall_HANDLER_comm_test(smx_simcall_t simcall, simgrid::kernel::activity::CommImpl* comm)
+bool simcall_HANDLER_comm_test(smx_simcall_t, simgrid::kernel::activity::CommImpl* comm)
 {
-  if ((MC_is_active() || MC_record_replay_is_active()) && comm->src_actor_ && comm->dst_actor_)
-    comm->state_ = simgrid::kernel::activity::State::DONE;
-
-  bool res = comm->state_ != simgrid::kernel::activity::State::WAITING &&
-             comm->state_ != simgrid::kernel::activity::State::RUNNING;
-
-  if (res)
-    comm->finish();
-  return res;
+  return comm->test();
 }
 
 void simcall_HANDLER_comm_testany(smx_simcall_t simcall, simgrid::kernel::activity::CommImpl* comms[], size_t count)
@@ -491,6 +483,13 @@ void CommImpl::copy_data()
   copied_ = true;
 }
 
+bool CommImpl::test()
+{
+  if ((MC_is_active() || MC_record_replay_is_active()) && src_actor_ && dst_actor_)
+    state_ = State::DONE;
+  return ActivityImpl::test();
+}
+
 void CommImpl::suspend()
 {
   /* FIXME: shall we suspend also the timeout synchro? */
index 2f8d42a..f0f8115 100644 (file)
@@ -50,6 +50,8 @@ public:
 
   void copy_data();
 
+  bool test() override;
+
   CommImpl* start();
   void suspend() override;
   void resume() override;