LCOV - code coverage report
Current view: top level - src/detail/posix - signals.hpp (source / functions) Coverage Total Hit
Test: coverage_filtered.info Lines: 100.0 % 1 1
Test Date: 2026-02-04 19:19:32 Functions: 100.0 % 1 1

            Line data    Source code
       1              : //
       2              : // Copyright (c) 2026 Steve Gerbino
       3              : //
       4              : // Distributed under the Boost Software License, Version 1.0. (See accompanying
       5              : // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       6              : //
       7              : // Official repository: https://github.com/cppalliance/corosio
       8              : //
       9              : 
      10              : #ifndef BOOST_COROSIO_DETAIL_POSIX_SIGNALS_HPP
      11              : #define BOOST_COROSIO_DETAIL_POSIX_SIGNALS_HPP
      12              : 
      13              : #include <boost/corosio/detail/platform.hpp>
      14              : 
      15              : #if BOOST_COROSIO_POSIX
      16              : 
      17              : #include <boost/corosio/detail/config.hpp>
      18              : #include <boost/corosio/signal_set.hpp>
      19              : #include <boost/capy/ex/execution_context.hpp>
      20              : 
      21              : /*
      22              :     POSIX Signal Service
      23              :     ====================
      24              : 
      25              :     This header declares the abstract signal service interface. The concrete
      26              :     implementation (posix_signals_impl) is in signals.cpp.
      27              : 
      28              :     This follows the timer_service pattern:
      29              :     - posix_signals is an abstract base class (no scheduler dependency)
      30              :     - posix_signals_impl is the concrete implementation
      31              :     - get_signal_service(ctx, sched) creates the service with scheduler ref
      32              : 
      33              :     See signals.cpp for the full implementation overview.
      34              : */
      35              : 
      36              : namespace boost::corosio::detail {
      37              : 
      38              : struct scheduler;
      39              : 
      40              : //------------------------------------------------------------------------------
      41              : 
      42              : /** Abstract signal service for POSIX backends.
      43              : 
      44              :     This is the base class that defines the interface. The concrete
      45              :     implementation (posix_signals_impl) is created via get_signal_service()
      46              :     which passes the scheduler reference.
      47              : */
      48              : class posix_signals : public capy::execution_context::service
      49              : {
      50              : public:
      51              :     /** Create a new signal set implementation. */
      52              :     virtual signal_set::signal_set_impl& create_impl() = 0;
      53              : 
      54              : protected:
      55          309 :     posix_signals() = default;
      56              : };
      57              : 
      58              : //------------------------------------------------------------------------------
      59              : 
      60              : /** Get or create the signal service for the given context.
      61              : 
      62              :     This function is called by the concrete scheduler during initialization
      63              :     to create the signal service with a reference to itself.
      64              : 
      65              :     @param ctx Reference to the owning execution_context.
      66              :     @param sched Reference to the scheduler for posting completions.
      67              :     @return Reference to the signal service.
      68              : */
      69              : posix_signals&
      70              : get_signal_service(capy::execution_context& ctx, scheduler& sched);
      71              : 
      72              : } // namespace boost::corosio::detail
      73              : 
      74              : #endif // BOOST_COROSIO_POSIX
      75              : 
      76              : #endif // BOOST_COROSIO_DETAIL_POSIX_SIGNALS_HPP
        

Generated by: LCOV version 2.3