From b027ac07ec137ed3aeec11d03b2bdc17fd405399 Mon Sep 17 00:00:00 2001 From: bastien ollier Date: Tue, 3 Oct 2023 14:53:53 +0200 Subject: [PATCH] add main loop --- src/main.cpp | 56 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index cf74864..63c034d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -11,6 +11,9 @@ #include #include "host.hpp" +#include "rpc/server.h" +#include "rpc/this_handler.h" +#include namespace fs = std::filesystem; @@ -31,47 +34,60 @@ sk::runner_backend detect_backend() { return sk::runner_backend::BubbleWrap; } -#include "rpc/server.h" +void mainLoop(std::queue& programLists){ + while(true){ + ///auto now = std::chrono::system_clock::now(); + //std::time_t now_time = std::chrono::system_clock::to_time_t(now); + //std::cout< int main() { std::vector listsHosts = sk::config::loadHostsFromToml("../conf.toml"); std::priority_queue hosts(listsHosts.begin(), listsHosts.end()); + std::queue programLists; + if (hosts.empty()) { std::cerr << "Pas de host" << std::endl; + exit(1); } - /*queue.push(sk::program{"echo $(( 1 + 2 ))", "ghcr.io/moshell-lang/moshell:master"}); - - sk::runner runner(detect_backend()); - while (!queue.empty()) { - const sk::program ¤t = queue.front(); - sk::run_result res = runner.run_blocking(current); - std::cout << "out: " << res.out << "\n"; - std::cout << "err: " << res.err << "\n"; - queue.pop(); - }*/ + //std::thread threadMainLoop(mainLoop,programLists); + //threadMainLoop.join(); + std::thread workerThread(mainLoop, std::ref(programLists)); + rpc::server srv(9000); - rpc::server srv(8080); + srv.bind("add", [&hosts, &programLists](const std::string &prog, const std::string &image) { + programLists.push(sk::program{prog, image}); - srv.bind("add", [](const std::string& prog, const std::string& image) { - std::cout<<"log"< queue; - queue.push(sk::program{prog, image}); + /*const sk::program ¤tProgram = programLists.front(); + const sk::host ¤tHost = hosts.top(); sk::runner runner(detect_backend()); - const sk::program ¤t = queue.front(); - sk::run_result res = runner.run_blocking(current); + + sk::run_result res = runner.run_blocking(currentProgram); std::cout << "out: " << res.out << "\n"; std::cout << "err: " << res.err << "\n"; - queue.pop(); + programLists.pop(); + + if (res.err != "") { + rpc::this_handler().respond_error(res.err); + } return res.out; }); srv.run(); - return 0; }