123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- //
- // Copyright Oliver Kowalke 2013.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- // based on boost.thread
- #ifndef BOOST_fiber_errorS_H
- #define BOOST_fiber_errorS_H
- #include <future>
- #include <stdexcept>
- #include <string>
- #include <system_error>
- #include <boost/config.hpp>
- #include <boost/fiber/detail/config.hpp>
- #ifdef BOOST_HAS_ABI_HEADERS
- # include BOOST_ABI_PREFIX
- #endif
- namespace boost {
- namespace fibers {
- class fiber_error : public std::system_error {
- public:
- explicit fiber_error( std::error_code ec) :
- std::system_error{ ec } {
- }
- fiber_error( std::error_code ec, const char * what_arg) :
- std::system_error{ ec, what_arg } {
- }
- fiber_error( std::error_code ec, std::string const& what_arg) :
- std::system_error{ ec, what_arg } {
- }
- ~fiber_error() override = default;
- };
- class lock_error : public fiber_error {
- public:
- explicit lock_error( std::error_code ec) :
- fiber_error{ ec } {
- }
- lock_error( std::error_code ec, const char * what_arg) :
- fiber_error{ ec, what_arg } {
- }
- lock_error( std::error_code ec, std::string const& what_arg) :
- fiber_error{ ec, what_arg } {
- }
- };
- enum class future_errc {
- broken_promise = 1,
- future_already_retrieved,
- promise_already_satisfied,
- no_state
- };
- BOOST_FIBERS_DECL
- std::error_category const& future_category() noexcept;
- }}
- namespace std {
- template<>
- struct is_error_code_enum< boost::fibers::future_errc > : public true_type {
- };
- inline
- std::error_code make_error_code( boost::fibers::future_errc e) noexcept {
- return std::error_code{ static_cast< int >( e), boost::fibers::future_category() };
- }
- inline
- std::error_condition make_error_condition( boost::fibers::future_errc e) noexcept {
- return std::error_condition{ static_cast< int >( e), boost::fibers::future_category() };
- }
- }
- namespace boost {
- namespace fibers {
- class future_error : public fiber_error {
- public:
- explicit future_error( std::error_code ec) :
- fiber_error{ ec } {
- }
- };
- class future_uninitialized : public future_error {
- public:
- future_uninitialized() :
- future_error{ std::make_error_code( future_errc::no_state) } {
- }
- };
- class future_already_retrieved : public future_error {
- public:
- future_already_retrieved() :
- future_error{ std::make_error_code( future_errc::future_already_retrieved) } {
- }
- };
- class broken_promise : public future_error {
- public:
- broken_promise() :
- future_error{ std::make_error_code( future_errc::broken_promise) } {
- }
- };
- class promise_already_satisfied : public future_error {
- public:
- promise_already_satisfied() :
- future_error{ std::make_error_code( future_errc::promise_already_satisfied) } {
- }
- };
- class promise_uninitialized : public future_error {
- public:
- promise_uninitialized() :
- future_error{ std::make_error_code( future_errc::no_state) } {
- }
- };
- class packaged_task_uninitialized : public future_error {
- public:
- packaged_task_uninitialized() :
- future_error{ std::make_error_code( future_errc::no_state) } {
- }
- };
- }}
- #ifdef BOOST_HAS_ABI_HEADERS
- # include BOOST_ABI_SUFFIX
- #endif
- #endif // BOOST_fiber_errorS_H
|