From 392c33f9c790418e1f5196d7dbbda5776b50d983 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Thu, 24 Jun 2021 09:48:15 +0200 Subject: [PATCH] Use std::unique_ptr and remove explicit destructor. --- src/mc/remote/CheckerSide.cpp | 27 ++++++++++----------------- src/mc/remote/CheckerSide.hpp | 8 ++++---- 2 files changed, 14 insertions(+), 21 deletions(-) diff --git a/src/mc/remote/CheckerSide.cpp b/src/mc/remote/CheckerSide.cpp index ce1dfc8c8c..086afecdd8 100644 --- a/src/mc/remote/CheckerSide.cpp +++ b/src/mc/remote/CheckerSide.cpp @@ -10,35 +10,28 @@ namespace simgrid { namespace 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_); -} - 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_, get_channel().get_socket(), EV_READ | EV_PERSIST, handler, mc); - event_add(socket_event_, nullptr); + 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, mc); - event_add(signal_event_, nullptr); + auto* signal_event = event_new(base, SIGCHLD, EV_SIGNAL | EV_PERSIST, handler, mc); + event_add(signal_event, nullptr); + signal_event_.reset(signal_event); } void CheckerSide::dispatch() { - event_base_dispatch(base_); + event_base_dispatch(base_.get()); } void CheckerSide::break_loop() { - event_base_loopbreak(base_); + event_base_loopbreak(base_.get()); } } // namespace mc diff --git a/src/mc/remote/CheckerSide.hpp b/src/mc/remote/CheckerSide.hpp index ff844b5a24..a720a9c54c 100644 --- a/src/mc/remote/CheckerSide.hpp +++ b/src/mc/remote/CheckerSide.hpp @@ -11,20 +11,20 @@ #include #include +#include namespace simgrid { namespace mc { class CheckerSide { - struct event_base* base_ = nullptr; - struct event* socket_event_ = nullptr; - struct event* signal_event_ = nullptr; + std::unique_ptr base_{nullptr, &event_base_free}; + std::unique_ptr socket_event_{nullptr, &event_free}; + std::unique_ptr signal_event_{nullptr, &event_free}; Channel channel_; public: explicit CheckerSide(int sockfd) : channel_(sockfd) {} - ~CheckerSide(); // No copy: CheckerSide(CheckerSide const&) = delete; -- 2.20.1