2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
20#ifndef WEB_WEBSOCKET_SOCKETCONTEXT_H
21#define WEB_WEBSOCKET_SOCKETCONTEXT_H
23#include "web/http/SocketContextUpgrade.h"
24#include "web/websocket/SubProtocolContext.h"
26namespace core::socket {
27 class SocketConnection;
31 template <
typename RequestT,
typename ResponseT>
36 template <
typename SubProtocolT>
37 class SubProtocolFactory;
40#ifndef DOXYGEN_SHOULD_SKIP_THIS
42#include "log/Logger.h"
51#define CLOSE_SOCKET_TIMEOUT 10
53namespace web::websocket {
55 template <
typename SubProtocolT,
typename RequestT,
typename ResponseT>
68 using SubProtocol = SubProtocolT;
69 using Request = RequestT;
70 using Response = ResponseT;
82 web::http::SocketContextUpgradeFactory<Request, Response>* socketContextUpgradeFactory,
89 void sendMessage(uint8_t opCode,
const char* message, std::size_t messageLength)
override;
90 void sendMessageStart(uint8_t opCode,
const char* message, std::size_t messageLength)
override;
91 void sendMessageFrame(
const char* message, std::size_t messageLength)
override;
92 void sendMessageEnd(
const char* message, std::size_t messageLength)
override;
93 void sendPing(
const char* reason =
nullptr, std::size_t reasonLength = 0)
override;
94 void sendPong(
const char* reason =
nullptr, std::size_t reasonLength = 0)
override;
95 void sendClose(uint16_t statusCode = 1000,
const char* reason =
nullptr, std::size_t reasonLength = 0)
override;
96 void sendClose(
const char* message, std::size_t messageLength)
override;
void sendClose(uint16_t statusCode=1000, const char *reason=nullptr, std::size_t reasonLength=0) override
bool onSignal(int sig) override
void onDisconnected() override
void sendPing(const char *reason=nullptr, std::size_t reasonLength=0) override
~SocketContextUpgrade() override=default
void onMessageData(const char *chunk, uint64_t chunkLen) override
SocketContextUpgrade(const SocketContextUpgrade &)=delete
std::string pongCloseData
SocketContextUpgrade & operator=(const SocketContextUpgrade &)=delete
void sendMessage(uint8_t opCode, const char *message, std::size_t messageLength) override
SubProtocol * subProtocol
void onMessageEnd() override
void sendClose(const char *message, std::size_t messageLength) override
void sendMessageFrame(const char *message, std::size_t messageLength) override
void sendMessageEnd(const char *message, std::size_t messageLength) override
SocketContextUpgrade()=delete
std::size_t onReceivedFromPeer() override
SocketContextUpgrade(core::socket::stream::SocketConnection *socketConnection, web::http::SocketContextUpgradeFactory< Request, Response > *socketContextUpgradeFactory, Role role)
void sendPong(const char *reason=nullptr, std::size_t reasonLength=0) override
void sendMessageStart(uint8_t opCode, const char *message, std::size_t messageLength) override
void onMessageStart(int opCode) override
void onConnected() override
core::socket::stream::SocketConnection * getSocketConnection() override
void onMessageError(uint16_t errnum) override
~SocketContextUpgrade() override
web::websocket::SubProtocolFactory< SubProtocol > * subProtocolFactory
std::string loadSubProtocol(const std::string &subProtocolName)
SocketContextUpgrade(core::socket::stream::SocketConnection *socketConnection, web::http::SocketContextUpgradeFactory< web::http::client::Request, web::http::client::Response > *socketContextUpgradeFactory)
static SubProtocolFactorySelector * instance()