28 #ifndef WEBSOCKETPP_ENDPOINT_IMPL_HPP
29 #define WEBSOCKETPP_ENDPOINT_IMPL_HPP
33 template <
typename connection,
typename config>
34 typename endpoint<connection,config>::connection_ptr
35 endpoint<connection,config>::create_connection() {
45 connection_ptr con(
new connection_type(m_is_server,m_user_agent,m_alog,
48 connection_weak_ptr w(con);
57 con->set_open_handler(m_open_handler);
58 con->set_close_handler(m_close_handler);
59 con->set_fail_handler(m_fail_handler);
60 con->set_ping_handler(m_ping_handler);
61 con->set_pong_handler(m_pong_handler);
62 con->set_pong_timeout_handler(m_pong_timeout_handler);
63 con->set_interrupt_handler(m_interrupt_handler);
64 con->set_http_handler(m_http_handler);
65 con->set_validate_handler(m_validate_handler);
66 con->set_message_handler(m_message_handler);
68 if (m_open_handshake_timeout_dur != config::timeout_open_handshake) {
69 con->set_open_handshake_timeout(m_open_handshake_timeout_dur);
71 if (m_close_handshake_timeout_dur != config::timeout_close_handshake) {
72 con->set_close_handshake_timeout(m_close_handshake_timeout_dur);
74 if (m_pong_timeout_dur != config::timeout_pong) {
75 con->set_pong_timeout(m_pong_timeout_dur);
77 if (m_max_message_size != config::max_message_size) {
78 con->set_max_message_size(m_max_message_size);
83 ec = transport_type::init(con);
86 return connection_ptr();
92 template <
typename connection,
typename config>
100 ec = con->interrupt();
103 template <
typename connection,
typename config>
107 if (ec) {
throw ec; }
110 template <
typename connection,
typename config>
116 ec = con->pause_reading();
119 template <
typename connection,
typename config>
122 pause_reading(hdl,ec);
123 if (ec) {
throw ec; }
126 template <
typename connection,
typename config>
132 ec = con->resume_reading();
135 template <
typename connection,
typename config>
138 resume_reading(hdl,ec);
139 if (ec) {
throw ec; }
144 template <
typename connection,
typename config>
146 frame::opcode::value op, lib::error_code & ec)
151 ec = con->send(payload,op);
154 template <
typename connection,
typename config>
156 frame::opcode::value op)
159 send(hdl,payload,op,ec);
160 if (ec) {
throw ec; }
163 template <
typename connection,
typename config>
165 size_t len, frame::opcode::value op, lib::error_code & ec)
167 connection_ptr con = get_con_from_hdl(hdl,ec);
169 ec = con->send(payload,len,op);
172 template <
typename connection,
typename config>
174 size_t len, frame::opcode::value op)
177 send(hdl,payload,len,op,ec);
178 if (ec) {
throw ec; }
181 template <
typename connection,
typename config>
183 lib::error_code & ec)
185 connection_ptr con = get_con_from_hdl(hdl,ec);
190 template <
typename connection,
typename config>
194 if (ec) {
throw ec; }
197 template <
typename connection,
typename config>
199 const code, std::string
const & reason,
200 lib::error_code & ec)
202 connection_ptr con = get_con_from_hdl(hdl,ec);
204 con->close(code,reason,ec);
207 template <
typename connection,
typename config>
209 const code, std::string
const & reason)
212 close(hdl,code,reason,ec);
213 if (ec) {
throw ec; }
216 template <
typename connection,
typename config>
218 payload, lib::error_code & ec)
222 con->ping(payload,ec);
225 template <
typename connection,
typename config>
229 ping(hdl,payload,ec);
230 if (ec) {
throw ec; }
233 template <
typename connection,
typename config>
235 lib::error_code & ec)
239 con->pong(payload,ec);
242 template <
typename connection,
typename config>
246 pong(hdl,payload,ec);
247 if (ec) {
throw ec; }
252 #endif // WEBSOCKETPP_ENDPOINT_IMPL_HPP
uint16_t value
The type of a close code value.
void ping(connection_hdl hdl, std::string const &payload, lib::error_code &ec)
Send a ping to a specific connection.
void interrupt(connection_hdl hdl, lib::error_code &ec)
lib::weak_ptr< void > connection_hdl
A handle to uniquely identify a connection.
void pause_reading(connection_hdl hdl, lib::error_code &ec)
Pause reading of new data (exception free)
static level const devel
Development messages (warning: very chatty)
void resume_reading(connection_hdl hdl, lib::error_code &ec)
Resume reading of new data (exception free)
connection_type::ptr connection_ptr
Shared pointer to connection_type.
void pong(connection_hdl hdl, std::string const &payload, lib::error_code &ec)
Send a pong to a specific connection.
Namespace for the WebSocket++ project.
void send(connection_hdl hdl, std::string const &payload, frame::opcode::value op, lib::error_code &ec)
Create a message and add it to the outgoing send queue (exception free)