]> git.proxmox.com Git - ceph.git/blob - ceph/src/Beast/include/beast/websocket/impl/error.ipp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / Beast / include / beast / websocket / impl / error.ipp
1 //
2 // Copyright (c) 2013-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
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 //
7
8 #ifndef BEAST_WEBSOCKET_IMPL_ERROR_IPP
9 #define BEAST_WEBSOCKET_IMPL_ERROR_IPP
10
11 namespace boost {
12 namespace system {
13 template<>
14 struct is_error_code_enum<beast::websocket::error>
15 {
16 static bool const value = true;
17 };
18 } // system
19 } // boost
20
21 namespace beast {
22 namespace websocket {
23 namespace detail {
24
25 class websocket_error_category : public error_category
26 {
27 public:
28 const char*
29 name() const noexcept override
30 {
31 return "websocket";
32 }
33
34 std::string
35 message(int ev) const override
36 {
37 switch(static_cast<error>(ev))
38 {
39 case error::closed: return "WebSocket connection closed normally";
40 case error::failed: return "WebSocket connection failed due to a protocol violation";
41 case error::handshake_failed: return "WebSocket Upgrade handshake failed";
42 case error::keep_alive: return "WebSocket Upgrade handshake failed but connection is still open";
43
44 case error::response_malformed: return "malformed HTTP response";
45 case error::response_failed: return "upgrade request failed";
46 case error::response_denied: return "upgrade request denied";
47 case error::request_malformed: return "malformed HTTP request";
48 case error::request_invalid: return "upgrade request invalid";
49 case error::request_denied: return "upgrade request denied";
50 default:
51 return "websocket error";
52 }
53 }
54
55 error_condition
56 default_error_condition(int ev) const noexcept override
57 {
58 return error_condition(ev, *this);
59 }
60
61 bool
62 equivalent(int ev,
63 error_condition const& condition
64 ) const noexcept override
65 {
66 return condition.value() == ev &&
67 &condition.category() == this;
68 }
69
70 bool
71 equivalent(error_code const& error, int ev) const noexcept override
72 {
73 return error.value() == ev &&
74 &error.category() == this;
75 }
76 };
77
78 inline
79 error_category const&
80 get_error_category()
81 {
82 static detail::websocket_error_category const cat{};
83 return cat;
84 }
85
86 } // detail
87
88 inline
89 error_code
90 make_error_code(error e)
91 {
92 return error_code(
93 static_cast<std::underlying_type<error>::type>(e),
94 detail::get_error_category());
95 }
96
97 } // websocket
98 } // beast
99
100 #endif