Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
MC: inline a function
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Thu, 14 May 2020 22:16:34 +0000 (00:16 +0200)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Mon, 25 May 2020 11:22:40 +0000 (13:22 +0200)
src/mc/ModelChecker.cpp
src/mc/ModelChecker.hpp

index 0f9601f..f4de7fe 100644 (file)
@@ -39,8 +39,23 @@ ModelChecker::ModelChecker(std::unique_ptr<RemoteSimulation> remote_simulation,
 
 void ModelChecker::start()
 {
-  checker_side_.start(
-      [](evutil_socket_t sig, short events, void* arg) { ((ModelChecker*)arg)->handle_events(sig, events); });
+  checker_side_.start([](evutil_socket_t sig, short events, void* arg) {
+    auto mc = static_cast<simgrid::mc::ModelChecker*>(arg);
+    if (events == EV_READ) {
+      char buffer[MC_MESSAGE_LENGTH];
+      ssize_t size = mc->checker_side_.get_channel().receive(buffer, sizeof(buffer), false);
+      if (size == -1 && errno != EAGAIN)
+        throw simgrid::xbt::errno_error();
+
+      if (not mc->handle_message(buffer, size))
+        mc->checker_side_.break_loop();
+    } else if (events == EV_SIGNAL) {
+      if (sig == SIGCHLD)
+        mc->handle_waitpid();
+    } else {
+      xbt_die("Unexpected event");
+    }
+  });
 
   XBT_DEBUG("Waiting for the model-checked process");
   int status;
@@ -233,26 +248,6 @@ void ModelChecker::exit(int status)
   ::exit(status);
 }
 
-void ModelChecker::handle_events(int sig, short events)
-{
-  if (events == EV_READ) {
-    char buffer[MC_MESSAGE_LENGTH];
-    ssize_t size = checker_side_.get_channel().receive(buffer, sizeof(buffer), false);
-    if (size == -1 && errno != EAGAIN)
-      throw simgrid::xbt::errno_error();
-
-    if (not handle_message(buffer, size))
-      checker_side_.break_loop();
-  }
-  else if (events == EV_SIGNAL) {
-    if (sig == SIGCHLD)
-      this->handle_waitpid();
-  }
-  else {
-    xbt_die("Unexpected event");
-  }
-}
-
 void ModelChecker::handle_waitpid()
 {
   XBT_DEBUG("Check for wait event");
index cf5c3c6..faca1fa 100644 (file)
@@ -48,7 +48,6 @@ public:
   void start();
   void shutdown();
   void resume(simgrid::mc::RemoteSimulation& get_remote_simulation);
-  void handle_events(int fd, short events);
   void wait_for_requests();
   void handle_simcall(Transition const& transition);