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