Started event handling

This commit is contained in:
Pax1601
2023-02-25 18:03:31 +01:00
parent abf5f40020
commit 93b1ac8f81
21 changed files with 140 additions and 310 deletions

View File

@@ -12,10 +12,13 @@ class Server
{
public:
Server(lua_State* L);
~Server();
void start(lua_State* L);
void stop(lua_State* L);
private:
std::thread* serverThread;
json::value answer;
void handle_options(http_request request);
void handle_get(http_request request);

View File

@@ -24,6 +24,8 @@ extern "C" DllExport int coreDeinit(lua_State* L)
log("Olympus coreDeinit called successfully");
server->stop(L);
delete unitsManager;
delete server;
delete scheduler;
@@ -42,6 +44,8 @@ extern "C" DllExport int coreInit(lua_State* L)
registerLuaFunctions(L);
server->start(L);
initialized = true;
return(0);
}

View File

@@ -26,15 +26,25 @@ void handle_eptr(std::exception_ptr eptr)
}
Server::Server(lua_State* L):
serverThread(nullptr),
runListener(true)
{
LogInfo(L, "Starting RESTServer");
}
void Server::start(lua_State* L)
{
log("Starting RESTServer");
serverThread = new thread(&Server::task, this);
}
Server::~Server()
void Server::stop(lua_State* L)
{
log("Stopping RESTServer");
runListener = false;
if (serverThread != nullptr)
serverThread->join();
}
void Server::handle_options(http_request request)
@@ -59,18 +69,18 @@ void Server::handle_get(http_request request)
response.headers().add(U("Access-Control-Allow-Methods"), U("GET, POST, PUT, OPTIONS"));
response.headers().add(U("Access-Control-Allow-Headers"), U("Content-Type"));
auto answer = json::value::object();
std::exception_ptr eptr;
try {
unitsManager->updateAnswer(answer);
/* Get the logs from the logger */
auto logs = json::value::object();
logsToJSON(logs); // By reference, for thread safety
answer[L"airbases"] = airbasesData;
answer[L"bullseye"] = bullseyeData;
answer[L"logs"] = json::value::object();
int i = 0;
for (auto log : getLogs())
answer[L"logs"][to_wstring(i++)] = json::value::string(to_wstring(log));
answer[L"logs"] = logs;
response.set_body(answer);
}
catch (...) {
@@ -156,7 +166,10 @@ void Server::task()
while (runListener);
listener.close();
listener.close()
.then([&listener]() {log("RESTServer stopping connections"); })
.wait();
log("RESTServer stopped listening");
}
catch (exception const& e)