Chris@102: // (C) Copyright 2008-10 Anthony Williams Chris@102: // (C) Copyright 2011-2015 Vicente J. Botet Escriba Chris@102: // Chris@102: // Distributed under the Boost Software License, Version 1.0. (See Chris@102: // accompanying file LICENSE_1_0.txt or copy at Chris@102: // http://www.boost.org/LICENSE_1_0.txt) Chris@102: Chris@102: #ifndef BOOST_THREAD_FUTURES_FUTURE_ERROR_HPP Chris@102: #define BOOST_THREAD_FUTURES_FUTURE_ERROR_HPP Chris@102: Chris@102: #include Chris@102: Chris@102: #include Chris@102: #include Chris@102: Chris@102: #include Chris@102: Chris@102: namespace boost Chris@102: { Chris@102: class BOOST_SYMBOL_VISIBLE future_error Chris@102: : public std::logic_error Chris@102: { Chris@102: system::error_code ec_; Chris@102: public: Chris@102: future_error(system::error_code ec) Chris@102: : logic_error(ec.message()), Chris@102: ec_(ec) Chris@102: { Chris@102: } Chris@102: Chris@102: const system::error_code& code() const BOOST_NOEXCEPT Chris@102: { Chris@102: return ec_; Chris@102: } Chris@102: }; Chris@102: Chris@102: class BOOST_SYMBOL_VISIBLE future_uninitialized: Chris@102: public future_error Chris@102: { Chris@102: public: Chris@102: future_uninitialized() : Chris@102: future_error(system::make_error_code(future_errc::no_state)) Chris@102: {} Chris@102: }; Chris@102: class BOOST_SYMBOL_VISIBLE broken_promise: Chris@102: public future_error Chris@102: { Chris@102: public: Chris@102: broken_promise(): Chris@102: future_error(system::make_error_code(future_errc::broken_promise)) Chris@102: {} Chris@102: }; Chris@102: class BOOST_SYMBOL_VISIBLE future_already_retrieved: Chris@102: public future_error Chris@102: { Chris@102: public: Chris@102: future_already_retrieved(): Chris@102: future_error(system::make_error_code(future_errc::future_already_retrieved)) Chris@102: {} Chris@102: }; Chris@102: class BOOST_SYMBOL_VISIBLE promise_already_satisfied: Chris@102: public future_error Chris@102: { Chris@102: public: Chris@102: promise_already_satisfied(): Chris@102: future_error(system::make_error_code(future_errc::promise_already_satisfied)) Chris@102: {} Chris@102: }; Chris@102: Chris@102: class BOOST_SYMBOL_VISIBLE task_already_started: Chris@102: public future_error Chris@102: { Chris@102: public: Chris@102: task_already_started(): Chris@102: future_error(system::make_error_code(future_errc::promise_already_satisfied)) Chris@102: {} Chris@102: }; Chris@102: Chris@102: class BOOST_SYMBOL_VISIBLE task_moved: Chris@102: public future_error Chris@102: { Chris@102: public: Chris@102: task_moved(): Chris@102: future_error(system::make_error_code(future_errc::no_state)) Chris@102: {} Chris@102: }; Chris@102: Chris@102: class promise_moved: Chris@102: public future_error Chris@102: { Chris@102: public: Chris@102: promise_moved(): Chris@102: future_error(system::make_error_code(future_errc::no_state)) Chris@102: {} Chris@102: }; Chris@102: } Chris@102: Chris@102: #endif // header