10Duke Enterprise C++ Client
Loading...
Searching...
No Matches
AbstractHTTPServer.h
1#ifndef TENDUKE_HTTP_SERVER_ABSTRACTHTTPSERVER_H
2#define TENDUKE_HTTP_SERVER_ABSTRACTHTTPSERVER_H
3
4#include "./HTTPServer.h"
5#include "./HTTPRequest.h"
6#include "./HTTPResponse.h"
7#include "./HTTPRequestHandler.h"
8#include "net/URLCodec.h"
9#include "osa/Socket.h"
10
11#include <atomic>
12#include <map>
13#include <string>
14
15namespace tenduke { namespace http { namespace server {
16
21{
22public:
29 std::unique_ptr<tenduke::osa::Socket> socket,
30 const std::shared_ptr<const ::tenduke::net::URLCodec> &urlCodec
31 );
32
38 void registerRoute(
39 const std::string &route,
40 const std::shared_ptr<tenduke::http::server::HTTPRequestHandler> &handler
41 );
42
43// tenduke::http::server::HTTPServer interface
44public:
45 ~AbstractHTTPServer() override;
46
47 std::uint16_t getPort() override;
48 void start() override;
49 void stop() override;
50
51protected:
57 HTTPRequest parseRequest(const std::shared_ptr<tenduke::osa::Socket> &requestSocket) const;
58
64 void handleRequest(
67 ) const;
68
69protected:
71 std::atomic_bool running;
73 std::map<std::string, std::shared_ptr<tenduke::http::server::HTTPRequestHandler>> routes;
74
75private:
76 std::unique_ptr<tenduke::osa::Socket> socket;
77 const std::shared_ptr<const ::tenduke::net::URLCodec> urlCodec;
78};
79
80}}}
81
82#endif //TENDUKE_HTTP_SERVER_ABSTRACTHTTPSERVER_H
HTTPRequest parseRequest(const std::shared_ptr< tenduke::osa::Socket > &requestSocket) const
Parses HTTP request from socket.
Definition AbstractHTTPServer.cpp:71
void handleRequest(tenduke::http::server::HTTPRequest request, tenduke::http::server::HTTPResponse response) const
Handles HTTP request.
Definition AbstractHTTPServer.cpp:124
void stop() override
Stops the server.
Definition AbstractHTTPServer.cpp:64
std::uint16_t getPort() override
Returns the port where this simple server is listening.
Definition AbstractHTTPServer.cpp:156
std::atomic_bool running
Flag to indicate if the server is running.
Definition AbstractHTTPServer.h:71
void start() override
Starts the server.
Definition AbstractHTTPServer.cpp:32
void registerRoute(const std::string &route, const std::shared_ptr< tenduke::http::server::HTTPRequestHandler > &handler)
Register a route.
Definition AbstractHTTPServer.cpp:162
std::map< std::string, std::shared_ptr< tenduke::http::server::HTTPRequestHandler > > routes
Routes.
Definition AbstractHTTPServer.h:73
AbstractHTTPServer(std::unique_ptr< tenduke::osa::Socket > socket, const std::shared_ptr< const ::tenduke::net::URLCodec > &urlCodec)
Constructs new instance.
Definition AbstractHTTPServer.cpp:19
A HTTP-request parsed by HTTP server.
Definition HTTPRequest.h:17
HTTP-response to be returned by a HTTP server.
Definition HTTPResponse.h:15
Interface for simple HTTPServer.
Definition HTTPServer.h:17
Simple HTTP-server.
Definition AbstractHTTPServer.h:15
HTTP-related services.
Definition BadRequest.h:6
Root for classes, functions and globals of 10Duke C++ Client.
Definition APIRequest.h:4