WebSocketServlet.h
1/* Copyright (C) 2026 by Marc Boris Duerner
2 SPDX-License-Identifier: LGPL-2.1-or-later WITH mif-exception
3*/
4
5#ifndef PT_HTTP_WEBSOCKETSERVLET_H
6#define PT_HTTP_WEBSOCKETSERVLET_H
7
8#include <Pt/Http/Api.h>
9#include <Pt/Connectable.h>
10#include <Pt/NonCopyable.h>
11#include <vector>
12#include <cstddef>
13
14namespace Pt {
15
16namespace Http {
17
18class Stream;
21
64class PT_HTTP_API WebSocketServlet : public Connectable
65 , private NonCopyable
66{
67 friend class WebSocketService;
68 friend class WebSocketSession;
69
70 public:
73 explicit WebSocketServlet(WebSocketService& service);
74
78
81 WebSocketService& service()
82 { return *_service; }
83
86 const WebSocketService& service() const
87 { return *_service; }
88
91 std::size_t size() const
92 { return _sessions.size(); }
93
94 private:
95 void onUpgrade(Stream& stream);
96
97 void onSessionClosed(WebSocketSession& session);
98
99 void releaseSession(WebSocketSession* session);
100
101 WebSocketService* _service;
102 std::vector<WebSocketSession*> _sessions;
103};
104
105} // namespace Http
106
107} // namespace Pt
108
109#endif
Connectable()
Default constructor.
One HTTP stream on a connection.
Definition Stream.h:90
Factory and endpoint policy for WebSocket sessions.
Definition WebSocketService.h:107
const WebSocketService & service() const
Returns the service this servlet was constructed with.
Definition WebSocketServlet.h:86
WebSocketService & service()
Returns the service this servlet was constructed with.
Definition WebSocketServlet.h:81
~WebSocketServlet()
Releases every session this servlet still holds.
WebSocketServlet(WebSocketService &service)
Registers this servlet with service.
std::size_t size() const
Returns the number of sessions this servlet holds.
Definition WebSocketServlet.h:91
Server facade of one accepted WebSocket stream.
Definition WebSocketSession.h:126
NonCopyable()
Default constructor.
Definition NonCopyable.h:63
HTTP clients and servers.
Core module.
Definition Allocator.h:33