Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Update copyright lines for 2022.
[simgrid.git] / src / mc / remote / CheckerSide.cpp
index b6732f6..353e050 100644 (file)
@@ -1,39 +1,38 @@
-/* Copyright (c) 2007-2020. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2007-2022. The SimGrid Team. All rights reserved.          */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "src/mc/remote/CheckerSide.hpp"
-#include <signal.h>
+#include <csignal>
 #include <sys/wait.h>
 
-simgrid::mc::CheckerSide::~CheckerSide()
-{
-  if (socket_event_ != nullptr)
-    event_free(socket_event_);
-  if (signal_event_ != nullptr)
-    event_free(signal_event_);
-  if (base_ != nullptr)
-    event_base_free(base_);
-}
+namespace simgrid {
+namespace mc {
 
-void simgrid::mc::CheckerSide::start(int socket, void (*handler)(int, short, void*))
+void CheckerSide::start(void (*handler)(int, short, void*), ModelChecker* mc)
 {
-  base_ = event_base_new();
+  auto* base = event_base_new();
+  base_.reset(base);
 
-  socket_event_ = event_new(base_, socket, EV_READ | EV_PERSIST, handler, this);
-  event_add(socket_event_, NULL);
+  auto* socket_event = event_new(base, get_channel().get_socket(), EV_READ | EV_PERSIST, handler, mc);
+  event_add(socket_event, nullptr);
+  socket_event_.reset(socket_event);
 
-  signal_event_ = event_new(base_, SIGCHLD, EV_SIGNAL | EV_PERSIST, handler, this);
-  event_add(signal_event_, NULL);
+  auto* signal_event = event_new(base, SIGCHLD, EV_SIGNAL | EV_PERSIST, handler, mc);
+  event_add(signal_event, nullptr);
+  signal_event_.reset(signal_event);
 }
 
-void simgrid::mc::CheckerSide::dispatch()
+void CheckerSide::dispatch() const
 {
-  event_base_dispatch(base_);
+  event_base_dispatch(base_.get());
 }
 
-void simgrid::mc::CheckerSide::break_loop()
+void CheckerSide::break_loop() const
 {
-  event_base_loopbreak(base_);
+  event_base_loopbreak(base_.get());
 }
+
+} // namespace mc
+} // namespace simgrid