include/boost/capy/detail/quitter_stopped.hpp
100.0% Lines (3 / 3)
100.0% Functions (1 / 1)
Functions (1)
Function
Calls
Lines
Blocks
boost::capy::detail::quitter_stopped::quitter_stopped()
:35
29x
100.0%
100.0%
| Line | TLA | Hits | Source Code |
|---|---|---|---|
| 1 | // | ||
| 2 | // Copyright (c) 2026 Michael Vandeberg | ||
| 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/capy | ||
| 8 | // | ||
| 9 | |||
| 10 | #ifndef BOOST_CAPY_DETAIL_QUITTER_STOPPED_HPP | ||
| 11 | #define BOOST_CAPY_DETAIL_QUITTER_STOPPED_HPP | ||
| 12 | |||
| 13 | #include <boost/capy/detail/config.hpp> | ||
| 14 | #include <boost/capy/error.hpp> | ||
| 15 | |||
| 16 | #include <system_error> | ||
| 17 | |||
| 18 | /* What a stopped quitter<T> throws when T cannot hold canceled (void, | ||
| 19 | or a plain T). It is a std::system_error with canceled, so callers | ||
| 20 | catch it as one. Its own type lets run_async's default_handler drop | ||
| 21 | a quitter's stop that escapes a task, while it still terminates on | ||
| 22 | any other exception, a real ECANCELED included. A handler that | ||
| 23 | catches it and throws a std::system_error copy loses the type. | ||
| 24 | The type is visible so that catch still matches a stop thrown from | ||
| 25 | another shared library in a hidden-visibility build. */ | ||
| 26 | |||
| 27 | namespace boost { | ||
| 28 | namespace capy { | ||
| 29 | namespace detail { | ||
| 30 | |||
| 31 | struct BOOST_CAPY_SYMBOL_VISIBLE | ||
| 32 | quitter_stopped | ||
| 33 | : std::system_error | ||
| 34 | { | ||
| 35 | 29x | quitter_stopped() | |
| 36 | 29x | : std::system_error(make_error_code(error::canceled)) | |
| 37 | { | ||
| 38 | 29x | } | |
| 39 | }; | ||
| 40 | |||
| 41 | } // namespace detail | ||
| 42 | } // namespace capy | ||
| 43 | } // namespace boost | ||
| 44 | |||
| 45 | #endif | ||
| 46 |