]> git.proxmox.com Git - ceph.git/blame - 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
CommitLineData
7c673cae
FG
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
11namespace boost {
12namespace system {
13template<>
14struct is_error_code_enum<beast::websocket::error>
15{
16 static bool const value = true;
17};
18} // system
19} // boost
20
21namespace beast {
22namespace websocket {
23namespace detail {
24
25class websocket_error_category : public error_category
26{
27public:
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
78inline
79error_category const&
80get_error_category()
81{
82 static detail::websocket_error_category const cat{};
83 return cat;
84}
85
86} // detail
87
88inline
89error_code
90make_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