Adds webserver for serving UI elements

This commit is contained in:
Sven Luethi committed 2021-04-03 12:59:39 +02:00
1 parent c3ababbf12
commit f1da4e06f5
9 files changed
+7641 -4

No files matched your search

+3 -1
View File
@@ -26,7 +26,7 @@ int main(int args, char **argv) {
{
ConfigManager cfg(logger, arguments);
EventBus eventBus(logger);
UI::Server uiServer(logger, eventBus);
UI::Server uiServer(logger, eventBus);
Resolver::Server resolver(logger, eventBus);
/*
@@ -57,6 +57,8 @@ int main(int args, char **argv) {
//resolver.run();
logger.info.ln ("PLAINS successfully started.");
// Run something on main thread...
std::this_thread::sleep_for(std::chrono::seconds(15));
//std::cin.get();
logger.info.ln ("Shutting down PLAINS. Good Bye!");
}
catch (Exception& e) {
+1 -1
View File
@@ -3,4 +3,4 @@ add_library(UI OBJECT Server.cpp)
target_include_directories(UI PUBLIC include)
target_link_libraries(UI PRIVATE Core DNS PUBLIC Asio)
target_link_libraries(UI PRIVATE Core DNS PUBLIC Asio HTTPLib)
+26
View File
@@ -10,14 +10,40 @@ Server::Server(Logger& logger, EventBus& eventBus)
_eventBus(eventBus)
{
_logger.debug.ln ("Starting UI Webserver...");
_server = new httplib::Server;
//Set static file directory
auto ret = _server->set_mount_point("/", "./static/ui");
if (!ret) {
_logger.fatal.ln ("UI static file directory static/ui not found!");
}
//Redirecto / to index.htm
_server->Get("/", [this](const auto& req, auto& res) {
res.set_redirect("/index.htm");
});
_server->set_logger([this](const auto& req, const auto& res) {
//your_logger(req, res);
_logger.debug.ln ("UI Log message from Webserver. Implement passthrough!");
});
_thread = thread(&Server::run, this);
_logger.debug.ln ("UI Webserver started");
}
Server::~Server() {
_logger.debug.ln ("Stopping UI Webserver...");
_server->stop();
_thread.join();
delete _server;
_logger.debug.ln ("UI Webserver stopped");
}
void Server::run() {
_logger.info.ln ("UI Running Webserver on Port 8080");
_server->listen("0.0.0.0", 8080);
}
+6
View File
@@ -1,7 +1,9 @@
#ifndef UI_SERVER_HPP
#define UI_SERVER_HPP
#include <thread>
#include "asio.hpp"
#include "Core.hpp"
#include "httplib.h"
namespace Plains {
namespace UI {
@@ -9,6 +11,7 @@ namespace UI {
using Core::EventBus;
using Core::Logger;
using Core::Exception;
using std::thread;
class Server
@@ -18,6 +21,9 @@ class Server
Logger& _logger;
asio::io_context _ioContext;
asio::ip::tcp::endpoint _sender_endpoint;
httplib::Server* _server;
thread _thread;
void run();
public:
Server(Logger& logger, EventBus& eventBus);