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>
133 friend class WebSocketSession;
134 friend class WebSocketServlet;
151 {
return _protocols; }
173 {
return _maxSockets; }
192 {
return _idleTimeout; }
203 { _idleTimeout = ms; }
212 {
return _pingInterval; }
223 { _pingInterval = ms; }
232 {
return _pingTimeout; }
242 { _pingTimeout = ms; }
251 {
return _closeTimeout; }
261 { _closeTimeout = ms; }
269 {
return _maxMessageSize; }
279 { _maxMessageSize = n; }
287 {
return _servlet != 0; }
297 {
return _socketCount; }
334 const Reply& reply)
final;
347 const Reply& reply) = 0;
358 void attach(WebSocketServlet& servlet);
360 void detach(WebSocketServlet& servlet);
362 WebSocketServlet* servlet()
374 std::size_t _socketCount;
375 std::size_t _maxSockets;
376 std::size_t _idleTimeout;
377 std::size_t _pingInterval;
378 std::size_t _pingTimeout;
379 std::size_t _closeTimeout;
380 std::size_t _maxMessageSize;
381 std::vector<std::string> _protocols;
388template <
typename S,
typename Alloc = Allocator>
407 void* memory = _alloc.allocate(
sizeof(S));
408 return new(memory) S(*
this, stream, reply);
414 _alloc.deallocate(session,
sizeof(S));
Connectable()
Default constructor.
virtual WebSocketSession * onGetSession(Stream &stream, const Request &, const Reply &reply)
Creates the session for stream.
Definition WebSocketService.h:403
virtual void onReleaseSession(WebSocketSession *session)
Destroys a session created by onGetSession().
Definition WebSocketService.h:411
BasicWebSocketService()
Default constructor.
Definition WebSocketService.h:394
~BasicWebSocketService()
Destructor.
Definition WebSocketService.h:399
HTTP reply message.
Definition Reply.h:64
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:92
std::size_t idleTimeout() const
Returns the idle timeout in milliseconds.
Definition WebSocketService.h:191
std::size_t pingTimeout() const
Returns the ping timeout in milliseconds.
Definition WebSocketService.h:231
virtual void onReleaseResponder(Responder *responder)
Destroys the handshake responder.
void releaseSession(WebSocketSession *session)
Releases a session created by getSession().
bool hasServlet() const
True when a servlet is attached.
Definition WebSocketService.h:286
void setPingInterval(std::size_t ms)
Sets the ping interval in milliseconds.
Definition WebSocketService.h:222
virtual void onUpgrade(Stream &stream, const Request &request, const Reply &reply) final
Accepts or declines the upgraded stream.
virtual Responder * onGetResponder(const Request &)
Creates the handshake responder.
void setMaxSockets(std::size_t n)
Sets the maximum number of live sessions.
Definition WebSocketService.h:182
std::size_t socketCount() const
Returns the number of counted sessions.
Definition WebSocketService.h:296
void setCloseTimeout(std::size_t ms)
Sets the close timeout in milliseconds.
Definition WebSocketService.h:260
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.
Definition WebSocketService.h:278
WebSocketService()
Default constructor.
void setIdleTimeout(std::size_t ms)
Sets the idle timeout in milliseconds.
Definition WebSocketService.h:202
const std::vector< std::string > & protocols() const
Returns accepted Sec-WebSocket-Protocol names in preference order.
Definition WebSocketService.h:150
std::size_t maxMessageSize() const
Returns the maximum data message size in bytes.
Definition WebSocketService.h:268
std::size_t pingInterval() const
Returns the ping interval in milliseconds.
Definition WebSocketService.h:211
void addProtocol(const std::string &name)
Adds one accepted Sec-WebSocket-Protocol name.
void setPingTimeout(std::size_t ms)
Sets the ping timeout in milliseconds.
Definition WebSocketService.h:241
~WebSocketService()
Destructor.
std::size_t maxSockets() const
Returns the maximum number of live sessions.
Definition WebSocketService.h:172
std::size_t closeTimeout() const
Returns the close timeout in milliseconds.
Definition WebSocketService.h:250
virtual WebSocketSession * onGetSession(Stream &stream, const Request &request, const Reply &reply)=0
Creates the session for stream.
WebSocketSession * getSession(Stream &stream, const Request &request, const Reply &reply)
Creates a session and counts a non-null result.
void clearProtocols()
Drops every accepted protocol name.
Owner of the sessions one WebSocket service creates.
Definition WebSocketServlet.h:72
Server facade of one accepted WebSocket stream.
Definition WebSocketSession.h:157
~WebSocketSession()
Closes the stream.
HTTP clients and servers.
Core module.
Definition Allocator.h:33