.. _program_listing_file_BackendLibfabric_SyncSignalWrapper.cpp: Program Listing for File SyncSignalWrapper.cpp ============================================== |exhale_lsh| :ref:`Return to documentation for file ` (``BackendLibfabric/SyncSignalWrapper.cpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #include "SyncSignalWrapper.hpp" netio3::libfabric::SyncSignalWrapper::SyncSignalWrapper(BaseEventLoop* event_loop, std::function cb, bool use_semaphore) : m_event_loop{event_loop}, m_signal{std::make_unique( m_event_loop->create_signal([cb](int) { cb(); }, use_semaphore, [this](int) { on_unregistered(); }))} {} netio3::libfabric::SyncSignalWrapper::~SyncSignalWrapper() { m_signal.reset(); if (m_event_loop->is_running()) { m_unregistered.wait(false); } } void netio3::libfabric::SyncSignalWrapper::fire() const { m_signal->fire(); } void netio3::libfabric::SyncSignalWrapper::on_unregistered() { m_unregistered = true; m_unregistered.notify_one(); }