add config class
continuous-integration/drone/push Build is passing Details

pull/2/head
Bastien OLLIER 2 years ago
parent 8c814590f9
commit ffaaf13d19

@ -13,7 +13,7 @@ FetchContent_Declare(
FetchContent_MakeAvailable(tomlplusplus)
file(GLOB nameFile "src/*.cpp")
add_executable(planificador src/host.cpp src/runner.cpp src/main.cpp)
add_executable(planificador src/host.cpp src/runner.cpp src/config.cpp src/main.cpp )
target_compile_features(planificador PUBLIC cxx_std_17)
include_directories(${tomlplusplus_SOURCE_DIR}/include)

@ -0,0 +1,12 @@
[serveurs]
[serveurs.serveur1]
ip = '100.000.000.000'
nbContainerMax = 10
[serveurs.serveur2]
ip = '200.000.000.000'
nbContainerMax = 20
[serveurs.serveur3]
ip = '300.000.000.000'
nbContainerMax = 30

@ -0,0 +1,32 @@
#include "config.hpp"
std::vector<sk::host> sk::config::loadHostsFromToml(const fs::path& confFile) {
std::vector<sk::host> hosts;
auto config = toml::parse_file( confFile.string() );
toml::table *server_section = config.get_as<toml::table>("serveurs");
if (server_section == nullptr) {
return hosts;
}
// Parcourir les serveurs
for (const auto& [server_name_key, server_info_value] : *server_section) {
std::string server_name{server_name_key};
toml::table *server_info_ptr = server_info_value.as_table();
if (server_info_ptr == nullptr) {
}
toml::table &server_info = *server_info_ptr;
if(server_info.get_as<std::string>("ip") && server_info.get_as<int64_t>("nbContainerMax")){
std::string server_ip = server_info.get_as<std::string>("ip")->get();
int server_max_containers = server_info.get_as<int64_t>("nbContainerMax")->get();
hosts.push_back(sk::host(server_ip,server_max_containers));
}
}
return hosts;
}

@ -0,0 +1,16 @@
#pragma once
#include <filesystem>
#include <vector>
#include <toml++/toml.h>
#include "host.hpp"
namespace fs = std::filesystem;
namespace sk{
class config{
public:
static std::vector<sk::host> loadHostsFromToml(const fs::path& confFile);
};
}

@ -4,9 +4,19 @@ namespace sk {
host::host(const std::string &ip, unsigned int connectionsMax)
: ip{ip}, connections{0}, connectionsMax{connectionsMax} {}
void host::addConnection() { connections += 1; }
void host::addConnection() {
connections += 1;
}
unsigned int host::getNbConnections() const { return connections; }
const std::string& host::getIp() const {
return ip;
}
unsigned int host::getNbConnectionsMax() const { return connectionsMax; }
unsigned int host::getNbConnections() const {
return connections;
}
unsigned int host::getNbConnectionsMax() const {
return connectionsMax;
}
}

@ -12,6 +12,9 @@ class host {
public:
host(const std::string &ip, unsigned int connectionsMax);
void addConnection();
const std::string& getIp() const;
unsigned int getNbConnections() const;
unsigned int getNbConnectionsMax() const;

@ -2,53 +2,25 @@
#include "runner.hpp"
#include <iostream>
#include <queue>
#include <cstdint>
#include <vector>
#include "host.hpp"
#include <filesystem>
#include <string_view>
#include <toml++/toml.h>
#include <vector>
#include "config.hpp"
namespace fs = std::filesystem;
std::vector<sk::host> makeMachinesFromToml(const fs::path &confFile) {
std::vector<sk::host> hosts;
auto config = toml::parse_file(confFile.string());
toml::table *server_section = config.get_as<toml::table>("serveurs");
int main() {
std::vector<sk::host> hosts = sk::config::loadHostsFromToml("../conf.toml");
// Parcourir les serveurs
for (const auto &[server_name_key, server_info_value] : *server_section) {
std::string server_name{server_name_key};
toml::table *server_info_ptr = server_info_value.as_table();
if (server_info_ptr == nullptr) {
if(hosts.empty()){
std::cerr<<"Pas de host"<<std::endl;
}
toml::table &server_info = *server_info_ptr;
if (server_info.get_as<std::string>("ip") &&
server_info.get_as<int64_t>("nbContainerMax")) {
std::string server_ip =
server_info.get_as<std::string>("ip")->get();
int server_max_containers =
server_info.get_as<int64_t>("nbContainerMax")->get();
hosts.push_back(sk::host(server_ip, server_max_containers));
}
for(const auto &host : hosts){
std::cout<<host.getIp() <<" "<<host.getNbConnectionsMax()<<std::endl;
}
return hosts;
}
int main() {
std::vector<sk::host> hosts = makeMachinesFromToml("conf.toml");
for (const auto &host : hosts) {
std::cout << host.getNbConnectionsMax() << std::endl;
}
std::queue<sk::program> queue;
/*std::queue<sk::program> queue;
queue.push(sk::program{"echo $(( 1 + 2 ))",
"ghcr.io/moshell-lang/moshell:master"});
@ -59,6 +31,6 @@ int main() {
std::cout << "out: " << res.out << "\n";
std::cout << "err: " << res.err << "\n";
queue.pop();
}
}*/
return 0;
}

Loading…
Cancel
Save