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/NonCopyable.h>
10#include <vector>
11#include <cstddef>
12
13namespace Pt {
14
15namespace Http {
16
17class Request;
18class Reply;
19class Stream;
22
71class PT_HTTP_API WebSocketServlet : private NonCopyable
72{
73 friend class WebSocketService;
74
75 public:
81 explicit WebSocketServlet(WebSocketService& service);
82
86
89 WebSocketService& service()
90 { return *_service; }
91
94 const WebSocketService& service() const
95 { return *_service; }
96
99 std::size_t size() const
100 { return _sessions.size(); }
101
102 private:
103 void accept(Stream& stream, const Request& request, const Reply& reply);
104
105 void close(WebSocketSession& session);
106
107 private:
108 WebSocketService* _service;
109 std::vector<WebSocketSession*> _sessions;
110};
111
112} // namespace Http
113
114} // namespace Pt
115
116#endif
HTTP reply message.
Definition Reply.h:64
HTTP request message.
Definition Request.h:65
One HTTP stream on a connection.
Definition Stream.h:92
Mapped service and factory for WebSocket sessions.
Definition WebSocketService.h:132
const WebSocketService & service() const
Returns the service this servlet was constructed with.
Definition WebSocketServlet.h:94
WebSocketService & service()
Returns the service this servlet was constructed with.
Definition WebSocketServlet.h:89
~WebSocketServlet()
Detaches this servlet and releases its remaining sessions.
WebSocketServlet(WebSocketService &service)
Attaches this servlet to service.
std::size_t size() const
Returns the number of live sessions.
Definition WebSocketServlet.h:99
Server facade of one accepted WebSocket stream.
Definition WebSocketSession.h:157
NonCopyable()
Default constructor.
Definition NonCopyable.h:63
HTTP clients and servers.
Core module.
Definition Allocator.h:33