]>
Commit | Line | Data |
---|---|---|
7c673cae | 1 | // |
92f5a8d4 | 2 | // Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com) |
7c673cae FG |
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 | // | |
b32b8144 FG |
7 | // Official repository: https://github.com/boostorg/beast |
8 | // | |
7c673cae | 9 | |
b32b8144 FG |
10 | #ifndef BOOST_BEAST_HTTP_IMPL_ERROR_IPP |
11 | #define BOOST_BEAST_HTTP_IMPL_ERROR_IPP | |
7c673cae | 12 | |
92f5a8d4 | 13 | #include <boost/beast/http/error.hpp> |
7c673cae FG |
14 | #include <type_traits> |
15 | ||
16 | namespace boost { | |
7c673cae FG |
17 | namespace beast { |
18 | namespace http { | |
19 | namespace detail { | |
20 | ||
21 | class http_error_category : public error_category | |
22 | { | |
23 | public: | |
24 | const char* | |
25 | name() const noexcept override | |
26 | { | |
b32b8144 | 27 | return "beast.http"; |
7c673cae FG |
28 | } |
29 | ||
30 | std::string | |
31 | message(int ev) const override | |
32 | { | |
33 | switch(static_cast<error>(ev)) | |
34 | { | |
7c673cae FG |
35 | case error::end_of_stream: return "end of stream"; |
36 | case error::partial_message: return "partial message"; | |
b32b8144 FG |
37 | case error::need_more: return "need more"; |
38 | case error::unexpected_body: return "unexpected body"; | |
39 | case error::need_buffer: return "need buffer"; | |
40 | case error::end_of_chunk: return "end of chunk"; | |
7c673cae | 41 | case error::buffer_overflow: return "buffer overflow"; |
b32b8144 FG |
42 | case error::header_limit: return "header limit exceeded"; |
43 | case error::body_limit: return "body limit exceeded"; | |
44 | case error::bad_alloc: return "bad alloc"; | |
7c673cae FG |
45 | case error::bad_line_ending: return "bad line ending"; |
46 | case error::bad_method: return "bad method"; | |
b32b8144 | 47 | case error::bad_target: return "bad target"; |
7c673cae FG |
48 | case error::bad_version: return "bad version"; |
49 | case error::bad_status: return "bad status"; | |
50 | case error::bad_reason: return "bad reason"; | |
51 | case error::bad_field: return "bad field"; | |
52 | case error::bad_value: return "bad value"; | |
53 | case error::bad_content_length: return "bad Content-Length"; | |
54 | case error::bad_transfer_encoding: return "bad Transfer-Encoding"; | |
55 | case error::bad_chunk: return "bad chunk"; | |
b32b8144 FG |
56 | case error::bad_chunk_extension: return "bad chunk extension"; |
57 | case error::bad_obs_fold: return "bad obs-fold"; | |
92f5a8d4 | 58 | case error::stale_parser: return "stale parser"; |
b32b8144 FG |
59 | |
60 | default: | |
61 | return "beast.http error"; | |
7c673cae FG |
62 | } |
63 | } | |
64 | ||
65 | error_condition | |
66 | default_error_condition( | |
67 | int ev) const noexcept override | |
68 | { | |
69 | return error_condition{ev, *this}; | |
70 | } | |
71 | ||
72 | bool | |
73 | equivalent(int ev, | |
74 | error_condition const& condition | |
75 | ) const noexcept override | |
76 | { | |
77 | return condition.value() == ev && | |
78 | &condition.category() == this; | |
79 | } | |
80 | ||
81 | bool | |
82 | equivalent(error_code const& error, | |
83 | int ev) const noexcept override | |
84 | { | |
85 | return error.value() == ev && | |
86 | &error.category() == this; | |
87 | } | |
88 | }; | |
89 | ||
7c673cae FG |
90 | } // detail |
91 | ||
7c673cae FG |
92 | error_code |
93 | make_error_code(error ev) | |
94 | { | |
92f5a8d4 TL |
95 | static detail::http_error_category const cat{}; |
96 | return error_code{static_cast< | |
97 | std::underlying_type<error>::type>(ev), cat}; | |
7c673cae FG |
98 | } |
99 | ||
100 | } // http | |
101 | } // beast | |
b32b8144 | 102 | } // boost |
7c673cae FG |
103 | |
104 | #endif |