diff options
author | DongHun Kwak <dh0128.kwak@samsung.com> | 2019-12-05 15:11:01 +0900 |
---|---|---|
committer | DongHun Kwak <dh0128.kwak@samsung.com> | 2019-12-05 15:11:01 +0900 |
commit | 3fdc3e5ee96dca5b11d1694975a65200787eab86 (patch) | |
tree | 5c1733853892b8397d67706fa453a9bd978d2102 /boost/beast/websocket/impl/error.ipp | |
parent | 88e602c57797660ebe0f9e15dbd64c1ff16dead3 (diff) | |
download | boost-3fdc3e5ee96dca5b11d1694975a65200787eab86.tar.gz boost-3fdc3e5ee96dca5b11d1694975a65200787eab86.tar.bz2 boost-3fdc3e5ee96dca5b11d1694975a65200787eab86.zip |
Imported Upstream version 1.66.0upstream/1.66.0
Diffstat (limited to 'boost/beast/websocket/impl/error.ipp')
-rw-r--r-- | boost/beast/websocket/impl/error.ipp | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/boost/beast/websocket/impl/error.ipp b/boost/beast/websocket/impl/error.ipp new file mode 100644 index 0000000000..ed18829cfe --- /dev/null +++ b/boost/beast/websocket/impl/error.ipp @@ -0,0 +1,96 @@ +// +// Copyright (c) 2016-2017 Vinnie Falco (vinnie dot falco at gmail dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Official repository: https://github.com/boostorg/beast +// + +#ifndef BOOST_BEAST_WEBSOCKET_IMPL_ERROR_IPP +#define BOOST_BEAST_WEBSOCKET_IMPL_ERROR_IPP + +namespace boost { + +namespace system { +template<> +struct is_error_code_enum<beast::websocket::error> +{ + static bool const value = true; +}; +} // system + +namespace beast { +namespace websocket { +namespace detail { + +class websocket_error_category : public error_category +{ +public: + const char* + name() const noexcept override + { + return "boost.beast.websocket"; + } + + std::string + message(int ev) const override + { + switch(static_cast<error>(ev)) + { + default: + case error::failed: return "WebSocket connection failed due to a protocol violation"; + case error::closed: return "WebSocket connection closed normally"; + case error::handshake_failed: return "WebSocket upgrade handshake failed"; + case error::buffer_overflow: return "WebSocket dynamic buffer overflow"; + case error::partial_deflate_block: return "WebSocket partial deflate block"; + } + } + + error_condition + default_error_condition(int ev) const noexcept override + { + return error_condition(ev, *this); + } + + bool + equivalent(int ev, + error_condition const& condition + ) const noexcept override + { + return condition.value() == ev && + &condition.category() == this; + } + + bool + equivalent(error_code const& error, int ev) const noexcept override + { + return error.value() == ev && + &error.category() == this; + } +}; + +inline +error_category const& +get_error_category() +{ + static detail::websocket_error_category const cat{}; + return cat; +} + +} // detail + +inline +error_code +make_error_code(error e) +{ + return error_code( + static_cast<std::underlying_type<error>::type>(e), + detail::get_error_category()); +} + +} // websocket +} // beast +} // boost + +#endif |