2 // Copyright (c) 2013-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
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)
8 #ifndef BEAST_HTTP_IMPL_ERROR_IPP
9 #define BEAST_HTTP_IMPL_ERROR_IPP
11 #include <type_traits>
16 struct is_error_code_enum<beast::http::error>
18 static bool const value = true;
27 class http_error_category : public error_category
31 name() const noexcept override
37 message(int ev) const override
39 switch(static_cast<error>(ev))
42 case error::end_of_stream: return "end of stream";
43 case error::partial_message: return "partial message";
44 case error::buffer_overflow: return "buffer overflow";
45 case error::bad_line_ending: return "bad line ending";
46 case error::bad_method: return "bad method";
47 case error::bad_path: return "bad path";
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";
60 default_error_condition(
61 int ev) const noexcept override
63 return error_condition{ev, *this};
68 error_condition const& condition
69 ) const noexcept override
71 return condition.value() == ev &&
72 &condition.category() == this;
76 equivalent(error_code const& error,
77 int ev) const noexcept override
79 return error.value() == ev &&
80 &error.category() == this;
86 get_http_error_category()
88 static http_error_category const cat{};
96 make_error_code(error ev)
99 static_cast<std::underlying_type<error>::type>(ev),
100 detail::get_http_error_category()};