2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
20#ifndef WEB_WEBSOCKET_SUBPROTOCOLPLUGININTERFACE_H
21#define WEB_WEBSOCKET_SUBPROTOCOLPLUGININTERFACE_H
24 template <
typename SubProtocolT,
typename RequestT,
typename ResponseT>
29#ifndef DOXYGEN_SHOULD_SKIP_THIS
37 template <
typename SubProtocolT>
38 class SubProtocolFactory {
40 using SubProtocol = SubProtocolT;
42 SubProtocolFactory() =
delete;
44 SubProtocolFactory(
const std::string& name)
45 : subProtocolName(name) {
48 SubProtocolFactory(SubProtocolFactory&) =
delete;
49 SubProtocolFactory(SubProtocolFactory&&) =
delete;
51 SubProtocolFactory& operator=(SubProtocolFactory&) =
delete;
52 SubProtocolFactory& operator=(SubProtocolFactory&&) =
delete;
54 virtual ~SubProtocolFactory() =
default;
57 SubProtocol* subProtocol = create(subProtocolContext);
59 if (subProtocol !=
nullptr) {
70 virtual std::size_t deleteSubProtocol(SubProtocol* subProtocol) {
71 if (subProtocol !=
nullptr) {
80 const std::string& getName() {
81 return subProtocolName;
84 void setHandle(
void* handle) {
85 this->handle = handle;
93 std::size_t refCount = 0;
95 std::string subProtocolName;
97 void* handle =
nullptr;
Echo * create(web::websocket::SubProtocolContext *subProtocolContext) override
friend class web::websocket::SocketContextUpgrade
apps::websocket::subprotocol::echo::client::EchoFactory * echoClientSubProtocolFactory()