Processor for Hybi Draft version 00. More...
#include <hybi00.hpp>
Public Types | |
typedef processor< config > | base |
typedef config::request_type | request_type |
typedef config::response_type | response_type |
typedef config::message_type | message_type |
typedef message_type::ptr | message_ptr |
typedef config::con_msg_manager_type::ptr | msg_manager_ptr |
Public Types inherited from websocketpp::processor::processor< config > | |
typedef processor< config > | type |
typedef config::request_type | request_type |
typedef config::response_type | response_type |
typedef config::message_type::ptr | message_ptr |
typedef std::pair< lib::error_code, std::string > | err_str_pair |
Public Member Functions | |
hybi00 (bool secure, bool p_is_server, msg_manager_ptr manager) | |
int | get_version () const |
Get the protocol version of this processor. More... | |
lib::error_code | validate_handshake (request_type const &r) const |
validate a WebSocket handshake request for this version More... | |
lib::error_code | process_handshake (request_type const &req, std::string const &subprotocol, response_type &res) const |
Calculate the appropriate response for this websocket request. More... | |
lib::error_code | client_handshake_request (request_type &, uri_ptr, std::vector< std::string > const &) const |
Fill in a set of request headers for a client connection request. More... | |
lib::error_code | validate_server_handshake_response (request_type const &, response_type &) const |
Validate the server's response to an outgoing handshake request. More... | |
std::string | get_raw (response_type const &res) const |
Given a completed response, get the raw bytes to put on the wire. More... | |
std::string const & | get_origin (request_type const &r) const |
Return the value of the header containing the CORS origin. More... | |
lib::error_code | extract_subprotocols (request_type const &req, std::vector< std::string > &subprotocol_list) |
Extracts requested subprotocols from a handshake request. More... | |
uri_ptr | get_uri (request_type const &request) const |
Extracts client uri from a handshake request. More... | |
std::string | get_key3 () const |
Get hybi00 handshake key3. More... | |
size_t | consume (uint8_t *buf, size_t len, lib::error_code &ec) |
Process new websocket connection bytes. More... | |
bool | ready () const |
Checks if there is a message ready. More... | |
bool | get_error () const |
Tests whether the processor is in a fatal error state. More... | |
message_ptr | get_message () |
Retrieves the most recently processed message. More... | |
virtual lib::error_code | prepare_data_frame (message_ptr in, message_ptr out) |
Prepare a message for writing. More... | |
lib::error_code | prepare_ping (std::string const &, message_ptr) const |
Prepare a ping frame. More... | |
lib::error_code | prepare_pong (std::string const &, message_ptr) const |
Prepare a pong frame. More... | |
lib::error_code | prepare_close (close::status::value, std::string const &, message_ptr out) const |
Prepare a close frame. More... | |
Public Member Functions inherited from websocketpp::processor::processor< config > | |
processor (bool secure, bool p_is_server) | |
virtual | ~processor () |
size_t | get_max_message_size () const |
Get maximum message size. More... | |
void | set_max_message_size (size_t new_value) |
Set maximum message size. More... | |
virtual bool | has_permessage_compress () const |
Returns whether or not the permessage_compress extension is implemented. More... | |
virtual err_str_pair | negotiate_extensions (request_type const &) |
Initializes extensions based on the Sec-WebSocket-Extensions header. More... | |
virtual err_str_pair | negotiate_extensions (response_type const &) |
Initializes extensions based on the Sec-WebSocket-Extensions header. More... | |
virtual size_t | get_bytes_needed () const |
Retrieves the number of bytes presently needed by the processor This value may be used as a hint to the transport layer as to how many bytes to wait for before running consume again. More... | |
Additional Inherited Members | |
Protected Attributes inherited from websocketpp::processor::processor< config > | |
bool const | m_secure |
bool const | m_server |
size_t | m_max_message_size |
Processor for Hybi Draft version 00.
There are many differences between Hybi 00 and Hybi 13
Definition at line 54 of file hybi00.hpp.
typedef processor<config> websocketpp::processor::hybi00< config >::base |
Definition at line 56 of file hybi00.hpp.
typedef config::request_type websocketpp::processor::hybi00< config >::request_type |
Definition at line 58 of file hybi00.hpp.
typedef config::response_type websocketpp::processor::hybi00< config >::response_type |
Definition at line 59 of file hybi00.hpp.
typedef config::message_type websocketpp::processor::hybi00< config >::message_type |
Definition at line 61 of file hybi00.hpp.
typedef message_type::ptr websocketpp::processor::hybi00< config >::message_ptr |
Definition at line 62 of file hybi00.hpp.
typedef config::con_msg_manager_type::ptr websocketpp::processor::hybi00< config >::msg_manager_ptr |
Definition at line 64 of file hybi00.hpp.
|
inlineexplicit |
Definition at line 66 of file hybi00.hpp.
|
inlinevirtual |
Get the protocol version of this processor.
Implements websocketpp::processor::processor< config >.
Definition at line 73 of file hybi00.hpp.
Referenced by BOOST_AUTO_TEST_CASE().
|
inlinevirtual |
validate a WebSocket handshake request for this version
request | The WebSocket handshake request to validate. is_websocket_handshake(request) must be true and get_websocket_version(request) must equal this->get_version(). |
Implements websocketpp::processor::processor< config >.
Definition at line 77 of file hybi00.hpp.
Referenced by BOOST_AUTO_TEST_CASE().
|
inlinevirtual |
Calculate the appropriate response for this websocket request.
req | The request to process |
subprotocol | The subprotocol in use |
res | The response to store the processed response in |
Implements websocketpp::processor::processor< config >.
Definition at line 100 of file hybi00.hpp.
Referenced by BOOST_AUTO_TEST_CASE().
|
inlinevirtual |
Fill in a set of request headers for a client connection request.
The Hybi 00 processor only implements incoming connections so this will always return an error.
[out] | req | Set of headers to fill in |
[in] | uri | The uri being connected to |
[in] | subprotocols | The list of subprotocols to request |
Implements websocketpp::processor::processor< config >.
Definition at line 158 of file hybi00.hpp.
Referenced by BOOST_AUTO_TEST_CASE().
|
inlinevirtual |
Validate the server's response to an outgoing handshake request.
The Hybi 00 processor only implements incoming connections so this will always return an error.
req | The original request sent |
res | The reponse to generate |
Implements websocketpp::processor::processor< config >.
Definition at line 173 of file hybi00.hpp.
Referenced by BOOST_AUTO_TEST_CASE().
|
inlinevirtual |
Given a completed response, get the raw bytes to put on the wire.
Implements websocketpp::processor::processor< config >.
Definition at line 179 of file hybi00.hpp.
|
inlinevirtual |
Return the value of the header containing the CORS origin.
Implements websocketpp::processor::processor< config >.
Definition at line 185 of file hybi00.hpp.
|
inlinevirtual |
Extracts requested subprotocols from a handshake request.
hybi00 does support subprotocols https://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-00#section-1.9
[in] | req | The request to extract from |
[out] | subprotocol_list | A reference to a vector of strings to store the results in. |
Implements websocketpp::processor::processor< config >.
Definition at line 198 of file hybi00.hpp.
Referenced by BOOST_AUTO_TEST_CASE().
|
inlinevirtual |
Extracts client uri from a handshake request.
Implements websocketpp::processor::processor< config >.
Definition at line 217 of file hybi00.hpp.
Referenced by BOOST_AUTO_TEST_CASE(), and websocketpp::processor::hybi00< stub_config >::process_handshake().
|
inline |
Get hybi00 handshake key3.
It might be able to be removed
Definition at line 247 of file hybi00.hpp.
|
inlinevirtual |
Process new websocket connection bytes.
Implements websocketpp::processor::processor< config >.
Definition at line 252 of file hybi00.hpp.
Referenced by BOOST_AUTO_TEST_CASE().
|
inlinevirtual |
Checks if there is a message ready.
Checks if the most recent consume operation processed enough bytes to complete a new WebSocket message. The message can be retrieved by calling get_message() which will reset the internal state to not-ready and allow consume to read more bytes.
Implements websocketpp::processor::processor< config >.
Definition at line 309 of file hybi00.hpp.
Referenced by BOOST_AUTO_TEST_CASE().
|
inlinevirtual |
Tests whether the processor is in a fatal error state.
Implements websocketpp::processor::processor< config >.
Definition at line 313 of file hybi00.hpp.
|
inlinevirtual |
Retrieves the most recently processed message.
Retrieves a shared pointer to the recently completed message if there is one. If ready() returns true then there is a message available. Retrieving the message with get_message will reset the state of ready. As such, each new message may be retrieved only once. Calling get_message when there is no message available will result in a null pointer being returned.
Implements websocketpp::processor::processor< config >.
Definition at line 317 of file hybi00.hpp.
Referenced by BOOST_AUTO_TEST_CASE().
|
inlinevirtual |
Prepare a message for writing.
Performs validation, masking, compression, etc. will return an error if there was an error, otherwise msg will be ready to be written
Implements websocketpp::processor::processor< config >.
Definition at line 329 of file hybi00.hpp.
Referenced by BOOST_AUTO_TEST_CASE().
|
inlinevirtual |
Prepare a ping frame.
Hybi 00 doesn't support pings so this will always return an error
in | The string to use for the ping payload |
out | The message buffer to prepare the ping in. |
Implements websocketpp::processor::processor< config >.
Definition at line 373 of file hybi00.hpp.
|
inlinevirtual |
Prepare a pong frame.
Hybi 00 doesn't support pongs so this will always return an error
in | The string to use for the pong payload |
out | The message buffer to prepare the pong in. |
Implements websocketpp::processor::processor< config >.
Definition at line 386 of file hybi00.hpp.
|
inlinevirtual |
Prepare a close frame.
Hybi 00 doesn't support the close code or reason so these parameters are ignored.
code | The close code to send |
reason | The reason string to send |
out | The message buffer to prepare the fame in |
Implements websocketpp::processor::processor< config >.
Definition at line 401 of file hybi00.hpp.