forked from boostorg/beast
		
	* `basic_parser` now uses pure virtual member functions instead of the curiously recurring template pattern. Actions Required: * Change uses of the `basic_parser` type to omit the `Derived` template parameter * Classes derived from `basic_parser` no longer need to friend the base. * Virtual functions in the derived class may be marked `override`.
		
			
				
	
	
		
			257 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			257 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
//
 | 
						|
// Copyright (c) 2016-2019 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_ERROR_HPP
 | 
						|
#define BOOST_BEAST_WEBSOCKET_ERROR_HPP
 | 
						|
 | 
						|
#include <boost/beast/core/detail/config.hpp>
 | 
						|
#include <boost/beast/core/error.hpp>
 | 
						|
 | 
						|
namespace boost {
 | 
						|
namespace beast {
 | 
						|
namespace websocket {
 | 
						|
 | 
						|
/// Error codes returned from @ref beast::websocket::stream operations.
 | 
						|
enum class error
 | 
						|
{
 | 
						|
    /** The WebSocket stream was gracefully closed at both endpoints
 | 
						|
    */
 | 
						|
    closed = 1,
 | 
						|
 | 
						|
/*  The error codes error::failed and error::handshake_failed
 | 
						|
    are no longer in use. Please change your code to compare values
 | 
						|
    of type error_code against condition::handshake_failed
 | 
						|
    and condition::protocol_violation instead.
 | 
						|
            
 | 
						|
    Apologies for the inconvenience.
 | 
						|
 | 
						|
    - VFALCO
 | 
						|
*/
 | 
						|
#if ! BOOST_BEAST_DOXYGEN
 | 
						|
    unused1 = 2, // failed
 | 
						|
    unused2 = 3, // handshake_failed
 | 
						|
#endif
 | 
						|
 | 
						|
    /** The WebSocket operation caused a dynamic buffer overflow
 | 
						|
    */
 | 
						|
    buffer_overflow,
 | 
						|
 | 
						|
    /** The WebSocket stream produced an incomplete deflate block
 | 
						|
    */
 | 
						|
    partial_deflate_block,
 | 
						|
 | 
						|
    /** The WebSocket message  exceeded the locally configured limit
 | 
						|
    */
 | 
						|
    message_too_big,
 | 
						|
 | 
						|
    //
 | 
						|
    // Handshake failure errors
 | 
						|
    //
 | 
						|
    // These will compare equal to condition::handshake_failed
 | 
						|
    //
 | 
						|
 | 
						|
    /** The WebSocket handshake was not HTTP/1.1
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::handshake_failed
 | 
						|
    */
 | 
						|
    bad_http_version,
 | 
						|
 | 
						|
    /** The WebSocket handshake method was not GET
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::handshake_failed
 | 
						|
    */
 | 
						|
    bad_method,
 | 
						|
 | 
						|
    /** The WebSocket handshake Host field is missing
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::handshake_failed
 | 
						|
    */
 | 
						|
    no_host,
 | 
						|
 | 
						|
    /** The WebSocket handshake Connection field is missing
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::handshake_failed
 | 
						|
    */
 | 
						|
    no_connection,
 | 
						|
 | 
						|
    /** The WebSocket handshake Connection field is missing the upgrade token
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::handshake_failed
 | 
						|
    */
 | 
						|
    no_connection_upgrade,
 | 
						|
 | 
						|
    /** The WebSocket handshake Upgrade field is missing
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::handshake_failed
 | 
						|
    */
 | 
						|
    no_upgrade,
 | 
						|
 | 
						|
    /** The WebSocket handshake Upgrade field is missing the websocket token
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::handshake_failed
 | 
						|
    */
 | 
						|
    no_upgrade_websocket,
 | 
						|
 | 
						|
    /** The WebSocket handshake Sec-WebSocket-Key field is missing
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::handshake_failed
 | 
						|
    */
 | 
						|
    no_sec_key,
 | 
						|
 | 
						|
    /** The WebSocket handshake Sec-WebSocket-Key field is invalid
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::handshake_failed
 | 
						|
    */
 | 
						|
    bad_sec_key,
 | 
						|
 | 
						|
    /** The WebSocket handshake Sec-WebSocket-Version field is missing
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::handshake_failed
 | 
						|
    */
 | 
						|
    no_sec_version,
 | 
						|
 | 
						|
    /** The WebSocket handshake Sec-WebSocket-Version field is invalid
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::handshake_failed
 | 
						|
    */
 | 
						|
    bad_sec_version,
 | 
						|
 | 
						|
    /** The WebSocket handshake Sec-WebSocket-Accept field is missing
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::handshake_failed
 | 
						|
    */
 | 
						|
    no_sec_accept,
 | 
						|
 | 
						|
    /** The WebSocket handshake Sec-WebSocket-Accept field is invalid
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::handshake_failed
 | 
						|
    */
 | 
						|
    bad_sec_accept,
 | 
						|
 | 
						|
    /** The WebSocket handshake was declined by the remote peer
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::handshake_failed
 | 
						|
    */
 | 
						|
    upgrade_declined,
 | 
						|
 | 
						|
    //
 | 
						|
    // Protocol errors
 | 
						|
    //
 | 
						|
    // These will compare equal to condition::protocol_violation
 | 
						|
    //
 | 
						|
 | 
						|
    /** The WebSocket frame contained an illegal opcode
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::protocol_violation
 | 
						|
    */
 | 
						|
    bad_opcode,
 | 
						|
 | 
						|
    /** The WebSocket data frame was unexpected
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::protocol_violation
 | 
						|
    */
 | 
						|
    bad_data_frame,
 | 
						|
 | 
						|
    /** The WebSocket continuation frame was unexpected
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::protocol_violation
 | 
						|
    */
 | 
						|
    bad_continuation,
 | 
						|
 | 
						|
    /** The WebSocket frame contained illegal reserved bits
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::protocol_violation
 | 
						|
    */
 | 
						|
    bad_reserved_bits,
 | 
						|
 | 
						|
    /** The WebSocket control frame was fragmented
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::protocol_violation
 | 
						|
    */
 | 
						|
    bad_control_fragment,
 | 
						|
 | 
						|
    /** The WebSocket control frame size was invalid
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::protocol_violation
 | 
						|
    */
 | 
						|
    bad_control_size,
 | 
						|
 | 
						|
    /** The WebSocket frame was unmasked
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::protocol_violation
 | 
						|
    */
 | 
						|
    bad_unmasked_frame,
 | 
						|
 | 
						|
    /** The WebSocket frame was masked
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::protocol_violation
 | 
						|
    */
 | 
						|
    bad_masked_frame,
 | 
						|
 | 
						|
    /** The WebSocket frame size was not canonical
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::protocol_violation
 | 
						|
    */
 | 
						|
    bad_size,
 | 
						|
 | 
						|
    /** The WebSocket frame payload was not valid utf8
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::protocol_violation
 | 
						|
    */
 | 
						|
    bad_frame_payload,
 | 
						|
 | 
						|
    /** The WebSocket close frame reason code was invalid
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::protocol_violation
 | 
						|
    */
 | 
						|
    bad_close_code,
 | 
						|
 | 
						|
    /** The WebSocket close frame payload size was invalid
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::protocol_violation
 | 
						|
    */
 | 
						|
    bad_close_size,
 | 
						|
 | 
						|
    /** The WebSocket close frame payload was not valid utf8
 | 
						|
 | 
						|
        Error codes with this value will compare equal to @ref condition::protocol_violation
 | 
						|
    */
 | 
						|
    bad_close_payload
 | 
						|
};
 | 
						|
 | 
						|
/// Error conditions corresponding to sets of error codes.
 | 
						|
enum class condition
 | 
						|
{
 | 
						|
    /** The WebSocket handshake failed
 | 
						|
 | 
						|
        This condition indicates that the WebSocket handshake failed. If
 | 
						|
        the corresponding HTTP response indicates the keep-alive behavior,
 | 
						|
        then the handshake may be reattempted.
 | 
						|
    */
 | 
						|
    handshake_failed = 1,
 | 
						|
 | 
						|
    /** A WebSocket protocol violation occurred
 | 
						|
 | 
						|
        This condition indicates that the remote peer on the WebSocket
 | 
						|
        connection sent data which violated the protocol.
 | 
						|
    */
 | 
						|
    protocol_violation
 | 
						|
 };
 | 
						|
 | 
						|
} // websocket
 | 
						|
} // beast
 | 
						|
} // boost
 | 
						|
 | 
						|
#include <boost/beast/websocket/impl/error.hpp>
 | 
						|
#ifdef BOOST_BEAST_HEADER_ONLY
 | 
						|
#include <boost/beast/websocket/impl/error.ipp>
 | 
						|
#endif
 | 
						|
 | 
						|
#endif
 |