LCOV - code coverage report
Current view: top level - corosio/detail - dispatch_coro.hpp (source / functions) Coverage Total Hit
Test: coverage_remapped.info Lines: 100.0 % 4 4
Test Date: 2026-02-17 21:42:07 Functions: 100.0 % 1 1

           TLA  Line data    Source code
       1                 : //
       2                 : // Copyright (c) 2026 Vinnie Falco (vinnie.falco@gmail.com)
       3                 : // Copyright (c) 2026 Steve Gerbino
       4                 : //
       5                 : // Distributed under the Boost Software License, Version 1.0. (See accompanying
       6                 : // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       7                 : //
       8                 : // Official repository: https://github.com/cppalliance/corosio
       9                 : //
      10                 : 
      11                 : #ifndef BOOST_COROSIO_DETAIL_DISPATCH_CORO_HPP
      12                 : #define BOOST_COROSIO_DETAIL_DISPATCH_CORO_HPP
      13                 : 
      14                 : #include <boost/corosio/io_context.hpp>
      15                 : #include <boost/capy/ex/executor_ref.hpp>
      16                 : #include <boost/capy/detail/type_id.hpp>
      17                 : #include <coroutine>
      18                 : 
      19                 : namespace boost::corosio::detail {
      20                 : 
      21                 : /** Returns a handle for symmetric transfer on I/O completion.
      22                 : 
      23                 :     If the executor is io_context::executor_type, returns `h`
      24                 :     directly (fast path). Otherwise dispatches through the
      25                 :     executor, which returns `h` or `noop_coroutine()`.
      26                 : 
      27                 :     Callers in coroutine machinery should return the result
      28                 :     for symmetric transfer. Callers at the scheduler pump
      29                 :     level should call `.resume()` on the result.
      30                 : 
      31                 :     @param ex The executor to dispatch through.
      32                 :     @param h The coroutine handle to resume.
      33                 : 
      34                 :     @return A handle for symmetric transfer or `std::noop_coroutine()`.
      35                 : */
      36                 : inline std::coroutine_handle<>
      37 HIT      415733 : dispatch_coro(capy::executor_ref ex, std::coroutine_handle<> h)
      38                 : {
      39          415733 :     if (ex.target<io_context::executor_type>() != nullptr)
      40          415724 :         return h;
      41               9 :     return ex.dispatch(h);
      42                 : }
      43                 : 
      44                 : } // namespace boost::corosio::detail
      45                 : 
      46                 : #endif
        

Generated by: LCOV version 2.3