Line data Source code
1 : // (C) Copyright 2008-10 Anthony Williams 2 : // (C) Copyright 2011-2015 Vicente J. Botet Escriba 3 : // 4 : // Distributed under the Boost Software License, Version 1.0. (See 5 : // accompanying file LICENSE_1_0.txt or copy at 6 : // http://www.boost.org/LICENSE_1_0.txt) 7 : 8 : #ifndef BOOST_THREAD_FUTURES_FUTURE_ERROR_HPP 9 : #define BOOST_THREAD_FUTURES_FUTURE_ERROR_HPP 10 : 11 : #include <boost/thread/detail/config.hpp> 12 : 13 : #include <boost/thread/futures/future_error_code.hpp> 14 : #include <boost/system/error_code.hpp> 15 : 16 : #include <stdexcept> 17 : 18 : namespace boost 19 : { 20 0 : class BOOST_SYMBOL_VISIBLE future_error 21 : : public std::logic_error 22 : { 23 : system::error_code ec_; 24 : public: 25 : future_error(system::error_code ec) 26 : : logic_error(ec.message()), 27 : ec_(ec) 28 : { 29 : } 30 : 31 : const system::error_code& code() const BOOST_NOEXCEPT 32 : { 33 : return ec_; 34 : } 35 : }; 36 : 37 : class BOOST_SYMBOL_VISIBLE future_uninitialized: 38 : public future_error 39 : { 40 : public: 41 : future_uninitialized() : 42 : future_error(system::make_error_code(future_errc::no_state)) 43 : {} 44 : }; 45 0 : class BOOST_SYMBOL_VISIBLE broken_promise: 46 : public future_error 47 : { 48 : public: 49 : broken_promise(): 50 : future_error(system::make_error_code(future_errc::broken_promise)) 51 : {} 52 : }; 53 0 : class BOOST_SYMBOL_VISIBLE future_already_retrieved: 54 : public future_error 55 : { 56 : public: 57 : future_already_retrieved(): 58 : future_error(system::make_error_code(future_errc::future_already_retrieved)) 59 : {} 60 : }; 61 0 : class BOOST_SYMBOL_VISIBLE promise_already_satisfied: 62 : public future_error 63 : { 64 : public: 65 : promise_already_satisfied(): 66 : future_error(system::make_error_code(future_errc::promise_already_satisfied)) 67 : {} 68 : }; 69 : 70 : class BOOST_SYMBOL_VISIBLE task_already_started: 71 : public future_error 72 : { 73 : public: 74 : task_already_started(): 75 : future_error(system::make_error_code(future_errc::promise_already_satisfied)) 76 : {} 77 : }; 78 : 79 : class BOOST_SYMBOL_VISIBLE task_moved: 80 : public future_error 81 : { 82 : public: 83 : task_moved(): 84 : future_error(system::make_error_code(future_errc::no_state)) 85 : {} 86 : }; 87 : 88 0 : class promise_moved: 89 : public future_error 90 : { 91 : public: 92 : promise_moved(): 93 : future_error(system::make_error_code(future_errc::no_state)) 94 : {} 95 : }; 96 : } 97 : 98 : #endif // header