.. _program_listing_file_EventLoop_EventSignalHandle.cpp: Program Listing for File EventSignalHandle.cpp ============================================== |exhale_lsh| :ref:`Return to documentation for file ` (``EventLoop/EventSignalHandle.cpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #include "netio3-backend/EventLoop/EventSignalHandle.hpp" #include #include #include #include "netio3-backend/EventLoop/BaseEventLoop.hpp" #include "netio3-backend/EventLoop/Utility.hpp" netio3::EventSignalHandle::EventSignalHandle(const int fd, const std::shared_ptr& evloop) : m_fd{std::make_shared(fd)}, m_evloop{evloop} {} netio3::EventSignalHandle::~EventSignalHandle() { if (m_fd.use_count() > 1) { return; } if (auto spt = m_evloop.lock()) { spt->remove_signal(*this); } } void netio3::EventSignalHandle::fire() const { const auto buf = std::uint64_t{1}; const auto ret = write(*m_fd, &buf, sizeof(buf)); constexpr static auto NBYTES = 8; if (ret != NBYTES) { ers::error(FailedFireSignal(ERS_HERE, *m_fd, ret, utility::error_message(errno))); } }