2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
42#include "core/socket/stream/SocketConnection.h"
43#include "web/websocket/SubProtocol.h"
44#include "web/websocket/SubProtocolContext.h"
46#ifndef DOXYGEN_SHOULD_SKIP_THIS
48#include "log/Logger.h"
58 template <
typename SocketContextUpgrade>
60 const std::string& name,
65 if (pingInterval > 0) {
67 [
this, maxFlyingPings](
const std::function<
void()>& stop) {
73 <<
this->name <<
"': MaxFlyingPings exceeded - closing";
85 template <
typename SocketContextUpgrade>
90 template <
typename SocketContextUpgrade>
95 template <
typename SocketContextUpgrade>
100 template <
typename SocketContextUpgrade>
105 template <
typename SocketContextUpgrade>
110 template <
typename SocketContextUpgrade>
115 template <
typename SocketContextUpgrade>
117 sendMessageFrame(message.data(), message.length());
120 template <
typename SocketContextUpgrade>
125 template <
typename SocketContextUpgrade>
127 sendMessageEnd(message.data(), message.length());
130 template <
typename SocketContextUpgrade>
137 template <
typename SocketContextUpgrade>
138 void SubProtocol<SocketContextUpgrade>::
sendClose(uint16_t statusCode,
const char* reason, std::size_t reasonLength) {
142 template <
typename SocketContextUpgrade>
149 template <
typename SocketContextUpgrade>
159 template <
typename SocketContextUpgrade>
166 template <
typename SocketContextUpgrade>
171 template <
typename SocketContextUpgrade>
176 template <
typename SocketContextUpgrade>
181 template <
typename SocketContextUpgrade>
186 template <
typename SocketContextUpgrade>
191 template <
typename SocketContextUpgrade>
const std::string & getConnectionName() const
virtual void sendMessage(uint8_t opCode, const char *message, std::size_t messageLength)=0
virtual void sendPing(const char *reason=nullptr, std::size_t reasonLength=0)=0
virtual std::size_t getPayloadTotalSent() const =0
virtual void sendMessageFrame(const char *message, std::size_t messageLength)=0
virtual std::string getOnlineSince() const =0
virtual std::size_t getPayloadTotalRead() const =0
virtual void sendMessageEnd(const char *message, std::size_t messageLength)=0
virtual void sendClose(uint16_t statusCode=1000, const char *reason=nullptr, std::size_t reasonLength=0)=0
virtual void sendMessageStart(uint8_t opCode, const char *message, std::size_t messageLength)=0
virtual core::socket::stream::SocketConnection * getSocketConnection() const =0
virtual std::string getOnlineDuration() const =0
void sendMessage(const char *message, std::size_t messageLength) const
void sendMessageStart(const std::string &message) const
std::size_t getPayloadTotalSent() const
void sendMessageEnd(const char *message, std::size_t messageLength) const
core::socket::stream::SocketConnection * getSocketConnection() const
SubProtocol(SubProtocolContext *subProtocolContext, const std::string &name, int pingInterval=60, int maxFlyingPings=3)
void sendPing(const char *reason=nullptr, std::size_t reasonLength=0) const
std::string getOnlineSince() const
virtual void onDisconnected()=0
std::size_t getPayloadTotalRead() const
void sendMessage(const std::string &message) const
SubProtocolContext * subProtocolContext
void sendMessageFrame(const std::string &message) const
const std::string & getName()
void sendMessageStart(const char *message, std::size_t messageLength) const
void sendClose(uint16_t statusCode=1000, const char *reason=nullptr, std::size_t reasonLength=0)
void sendMessageFrame(const char *message, std::size_t messageLength) const
virtual void onPongReceived()
virtual void onConnected()=0
void sendMessageEnd(const std::string &message) const
std::string getOnlineDuration() const
core::timer::Timer pingTimer