CppServer  1.0.0.0
C++ Server Library
web_server.h
Go to the documentation of this file.
1 
9 #ifndef CPPSERVER_ASIO_WEB_SERVER_H
10 #define CPPSERVER_ASIO_WEB_SERVER_H
11 
12 #include "asio.h"
13 #include "service.h"
14 #include "web.h"
15 
16 namespace CppServer {
17 namespace Asio {
18 
20 
28 class WebServer : public std::enable_shared_from_this<WebServer>
29 {
30 public:
32 
36  explicit WebServer(std::shared_ptr<Service> service, int port);
38 
43  explicit WebServer(std::shared_ptr<Service> service, const std::string& address, int port);
44  WebServer(const WebServer&) = delete;
45  WebServer(WebServer&&) = default;
46  virtual ~WebServer() = default;
47 
48  WebServer& operator=(const WebServer&) = delete;
49  WebServer& operator=(WebServer&&) = default;
50 
52  std::shared_ptr<Service>& service() noexcept { return _service; }
54  std::shared_ptr<restbed::Service>& server() noexcept { return _server; }
56  std::shared_ptr<restbed::Settings>& settings() noexcept { return _settings; }
57 
59  bool IsStarted() const noexcept { return _started; }
60 
62 
65  bool Start();
67 
70  bool Stop();
72 
75  bool Restart();
76 
77 protected:
79  virtual void onStarted() {}
81  virtual void onStopped() {}
82 
83 private:
84  // Asio service
85  std::shared_ptr<Service> _service;
86  // Restbed server & settings
87  std::shared_ptr<restbed::Service> _server;
88  std::shared_ptr<restbed::Settings> _settings;
89  std::atomic<bool> _started;
90 };
91 
94 } // namespace Asio
95 } // namespace CppServer
96 
97 #endif // CPPSERVER_ASIO_WEB_SERVER_H
std::shared_ptr< Service > & service() noexcept
Get the Asio service.
Definition: web_server.h:52
virtual ~WebServer()=default
HTTP Web server.
Definition: web_server.h:28
C++ Server project definitions.
Definition: asio.h:24
virtual void onStarted()
Handle server started notification.
Definition: web_server.h:79
Web C++ Library definition.
WebServer(std::shared_ptr< Service > service, int port)
Initialize HTTP Web server with a given Asio service and port number.
Definition: web_server.cpp:14
std::shared_ptr< restbed::Settings > & settings() noexcept
Get the Restbed settings.
Definition: web_server.h:56
bool IsStarted() const noexcept
Is the server started?
Definition: web_server.h:59
bool Restart()
Restart the server.
Definition: web_server.cpp:95
virtual void onStopped()
Handle server stopped notification.
Definition: web_server.h:81
Asio service definition.
std::shared_ptr< restbed::Service > & server() noexcept
Get the Restbed server.
Definition: web_server.h:54
bool Start()
Start the server.
Definition: web_server.cpp:49
Asio C++ Library definition.
WebServer & operator=(const WebServer &)=delete
bool Stop()
Stop the server.
Definition: web_server.cpp:72