Wire Sysio Wire Sysion 1.0.0
Loading...
Searching...
No Matches
endpoint.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_IOSTREAM_HPP
29#define WEBSOCKETPP_TRANSPORT_IOSTREAM_HPP
30
33
34#include <websocketpp/uri.hpp>
36
38
39#include <ostream>
40
41namespace websocketpp {
42namespace transport {
43namespace iostream {
44
45template <typename config>
46class endpoint {
47public:
49 typedef endpoint type;
51 typedef lib::shared_ptr<type> ptr;
52
54 typedef typename config::concurrency_type concurrency_type;
56 typedef typename config::elog_type elog_type;
58 typedef typename config::alog_type alog_type;
59
66
67 // generate and manage our own io_service
68 explicit endpoint() : m_output_stream(NULL), m_is_secure(false)
69 {
70 //std::cout << "transport::iostream::endpoint constructor" << std::endl;
71 }
72
74
80 void register_ostream(std::ostream * o) {
81 m_alog->write(log::alevel::devel,"register_ostream");
82 m_output_stream = o;
83 }
84
86
102 void set_secure(bool value) {
103 m_is_secure = value;
104 }
105
107
116 bool is_secure() const {
117 return m_is_secure;
118 }
119
121
135 m_write_handler = h;
136 }
137
139
155 m_shutdown_handler = h;
156 }
157protected:
159
172 m_elog = e;
173 m_alog = a;
174 }
175
177
184 cb(lib::error_code());
185 }
186
188
197 lib::error_code init(transport_con_ptr tcon) {
198 tcon->register_ostream(m_output_stream);
199 if (m_shutdown_handler) {
200 tcon->set_shutdown_handler(m_shutdown_handler);
201 }
202 if (m_write_handler) {
203 tcon->set_write_handler(m_write_handler);
204 }
205 return lib::error_code();
206 }
207private:
208 std::ostream * m_output_stream;
209 shutdown_handler m_shutdown_handler;
210 write_handler m_write_handler;
211
212 elog_type * m_elog;
213 alog_type * m_alog;
214 bool m_is_secure;
215};
216
217
218} // namespace iostream
219} // namespace transport
220} // namespace websocketpp
221
222#endif // WEBSOCKETPP_TRANSPORT_IOSTREAM_HPP
lib::shared_ptr< type > ptr
Type of a shared pointer to this connection transport component.
void init_logging(alog_type *a, elog_type *e)
Initialize logging.
Definition endpoint.hpp:171
transport_con_type::ptr transport_con_ptr
Definition endpoint.hpp:65
void set_write_handler(write_handler h)
Sets the write handler.
Definition endpoint.hpp:134
config::concurrency_type concurrency_type
Type of this endpoint's concurrency policy.
Definition endpoint.hpp:54
void set_shutdown_handler(shutdown_handler h)
Sets the shutdown handler.
Definition endpoint.hpp:154
bool is_secure() const
Tests whether or not the underlying transport is secure.
Definition endpoint.hpp:116
void async_connect(transport_con_ptr, uri_ptr, connect_handler cb)
Initiate a new connection.
Definition endpoint.hpp:183
config::alog_type alog_type
Type of this endpoint's access logging policy.
Definition endpoint.hpp:58
lib::error_code init(transport_con_ptr tcon)
Initialize a connection.
Definition endpoint.hpp:197
endpoint type
Type of this endpoint transport component.
Definition endpoint.hpp:49
iostream::connection< config > transport_con_type
Definition endpoint.hpp:62
void register_ostream(std::ostream *o)
Register a default output stream.
Definition endpoint.hpp:80
void set_secure(bool value)
Set whether or not endpoint can create secure connections.
Definition endpoint.hpp:102
config::elog_type elog_type
Type of this endpoint's error logging policy.
Definition endpoint.hpp:56
lib::shared_ptr< type > ptr
Type of a pointer to this endpoint transport component.
Definition endpoint.hpp:51
lib::function< lib::error_code(connection_hdl)> shutdown_handler
Definition base.hpp:61
lib::function< lib::error_code(connection_hdl, char const *, size_t)> write_handler
The type and signature of the callback used by iostream transport to write.
Definition base.hpp:48
lib::function< void(lib::error_code const &)> connect_handler
The type and signature of the callback passed to the connect method.
Definition endpoint.hpp:72
Namespace for the WebSocket++ project.
Definition base64.hpp:41
lib::shared_ptr< uri > uri_ptr
Pointer to a URI.
Definition uri.hpp:351
#define value
Definition pkcs11.h:157
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition pointer.h:1181
static level const devel
Development messages (warning: very chatty)
Definition levels.hpp:141