6#ifndef PT_HTTP_WEBSOCKETSERVICE_H
7#define PT_HTTP_WEBSOCKETSERVICE_H
9#include <Pt/Http/Api.h>
10#include <Pt/Http/Service.h>
11#include <Pt/Http/WebSocketSession.h>
12#include <Pt/Allocator.h>
13#include <Pt/Connectable.h>
108 friend class WebSocketResponder;
192 friend class WebSocketServlet;
196 std::size_t sessionCount()
const;
198 void registerServlet(WebSocketServlet& servlet);
200 void unregisterServlet(WebSocketServlet& servlet);
202 WebSocketServlet* _servlet;
203 std::size_t _maxSockets;
204 std::size_t _idleTimeout;
205 std::size_t _maxMessageSize;
212template <
typename S,
typename Alloc = Allocator>
231 void* memory = _alloc.allocate(
sizeof(S));
232 return new(memory) S(servlet, loop, stream);
238 _alloc.deallocate(session,
sizeof(S));
Connectable()
Default constructor.
virtual WebSocketSession * onGetSession(WebSocketServlet &servlet, System::EventLoop &loop, Stream &stream)
Creates the session for stream.
Definition WebSocketService.h:227
virtual void onReleaseSession(WebSocketSession *session)
Destroys a session created by onGetSession().
Definition WebSocketService.h:235
BasicWebSocketService()
Default constructor.
Definition WebSocketService.h:218
~BasicWebSocketService()
Destructor.
Definition WebSocketService.h:223
HTTP request message.
Definition Request.h:65
Handles one HTTP request and writes the reply.
Definition Responder.h:109
Service()
Default Constructor.
One HTTP stream on a connection.
Definition Stream.h:90
std::size_t idleTimeout() const
Returns the idle timeout in milliseconds.
virtual void onReleaseResponder(Responder *responder)
Destroys the handshake responder.
virtual Responder * onGetResponder(const Request &)
Creates the handshake responder.
void setMaxSockets(std::size_t n)
Sets the maximum number of live sessions.
virtual void onReleaseSession(WebSocketSession *session)=0
Destroys a session created by onGetSession().
void setMaxMessageSize(std::size_t n)
Sets the maximum data message size in bytes.
WebSocketService()
Default constructor.
void setIdleTimeout(std::size_t ms)
Sets the idle timeout in milliseconds.
virtual void onUpgrade(Stream &stream) final
Accepts or declines the upgraded stream.
std::size_t maxMessageSize() const
Returns the maximum data message size in bytes.
~WebSocketService()
Destructor.
std::size_t maxSockets() const
Returns the maximum number of live sessions.
virtual WebSocketSession * onGetSession(WebSocketServlet &servlet, System::EventLoop &loop, Stream &stream)=0
Creates the session for stream.
Release scope of the sessions one WebSocket service creates.
Definition WebSocketServlet.h:66
Server facade of one accepted WebSocket stream.
Definition WebSocketSession.h:126
~WebSocketSession()
Closes the stream.
Event loop of a thread or process.
Definition EventLoop.h:83
HTTP clients and servers.
System programming
Definition Connection.h:26
Core module.
Definition Allocator.h:33