Wire Sysio Wire Sysion 1.0.0
Loading...
Searching...
No Matches
connection.hpp
Go to the documentation of this file.
1/*
2 * Copyright (c) 2014, Peter Thorson. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are met:
6 * * Redistributions of source code must retain the above copyright
7 * notice, this list of conditions and the following disclaimer.
8 * * Redistributions in binary form must reproduce the above copyright
9 * notice, this list of conditions and the following disclaimer in the
10 * documentation and/or other materials provided with the distribution.
11 * * Neither the name of the WebSocket++ Project nor the
12 * names of its contributors may be used to endorse or promote products
13 * derived from this software without specific prior written permission.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY
19 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 *
26 */
27
28#ifndef WEBSOCKETPP_TRANSPORT_BASE_CON_HPP
29#define WEBSOCKETPP_TRANSPORT_BASE_CON_HPP
30
35
36#include <string>
37
38namespace websocketpp {
40
114namespace transport {
115
117typedef lib::function<void(lib::error_code const &)> init_handler;
118
120typedef lib::function<void(lib::error_code const &,size_t)> read_handler;
121
123typedef lib::function<void(lib::error_code const &)> write_handler;
124
126typedef lib::function<void(lib::error_code const &)> timer_handler;
127
129typedef lib::function<void(lib::error_code const &)> shutdown_handler;
130
132typedef lib::function<void()> interrupt_handler;
133
135typedef lib::function<void()> dispatch_handler;
136
138struct buffer {
139 buffer(char const * b, size_t l) : buf(b),len(l) {}
140
141 char const * buf;
142 size_t len;
143};
144
146namespace error {
182
183class category : public lib::error_category {
184 public:
186
187 char const * name() const _WEBSOCKETPP_NOEXCEPT_TOKEN_ {
188 return "websocketpp.transport";
189 }
190
191 std::string message(int value) const {
192 switch(value) {
193 case general:
194 return "Generic transport policy error";
195 case pass_through:
196 return "Underlying Transport Error";
198 return "async_read_at_least call requested more bytes than buffer can store";
200 return "The operation was aborted";
202 return "The operation is not supported by this transport";
203 case eof:
204 return "End of File";
205 case tls_short_read:
206 return "TLS Short Read";
207 case timeout:
208 return "Timer Expired";
210 return "A transport action was requested after shutdown";
211 case tls_error:
212 return "Generic TLS related error";
213 default:
214 return "Unknown";
215 }
216 }
217};
218
219inline lib::error_category const & get_category() {
220 static category instance;
221 return instance;
222}
223
224inline lib::error_code make_error_code(error::value e) {
225 return lib::error_code(static_cast<int>(e), get_category());
226}
227
228} // namespace error
229} // namespace transport
230} // namespace websocketpp
232template<> struct is_error_code_enum<websocketpp::transport::error::value>
233{
234 static bool const value = true;
235};
237
238#endif // WEBSOCKETPP_TRANSPORT_BASE_CON_HPP
char const * name() const _WEBSOCKETPP_NOEXCEPT_TOKEN_
std::string message(int value) const
#define _WEBSOCKETPP_NOEXCEPT_TOKEN_
Definition cpp11.hpp:113
lib::error_code make_error_code(error::value e)
@ pass_through
underlying transport pass through
@ operation_not_supported
Operation not supported.
@ operation_aborted
Operation aborted.
@ invalid_num_bytes
async_read_at_least call requested more bytes than buffer can store
@ action_after_shutdown
read or write after shutdown
@ tls_short_read
TLS short read.
@ double_read
async_read called while another async_read was in progress
lib::error_category const & get_category()
lib::function< void(lib::error_code const &, size_t)> read_handler
The type and signature of the callback passed to the read method.
lib::function< void()> dispatch_handler
The type and signature of the callback passed to the dispatch method.
lib::function< void()> interrupt_handler
The type and signature of the callback passed to the interrupt method.
lib::function< void(lib::error_code const &)> timer_handler
The type and signature of the callback passed to the read method.
lib::function< void(lib::error_code const &)> write_handler
The type and signature of the callback passed to the write method.
lib::function< void(lib::error_code const &)> init_handler
The type and signature of the callback passed to the init hook.
lib::function< void(lib::error_code const &)> shutdown_handler
The type and signature of the callback passed to the shutdown method.
Namespace for the WebSocket++ project.
Definition base64.hpp:41
#define value
Definition pkcs11.h:157
A simple utility buffer class.
buffer(char const *b, size_t l)
#define _WEBSOCKETPP_ERROR_CODE_ENUM_NS_END_
#define _WEBSOCKETPP_ERROR_CODE_ENUM_NS_START_
int l