M2-PT-DRP/source/behavior/tasks/client/ClientTask.cpp

34 lines
919 B
C++

#include "ClientTask.hpp"
#include <iostream>
#include <thread>
namespace drp::task {
void ClientTask::handle(Context& context) {
// get the server hostname
char host[NI_MAXHOST];
char port[NI_MAXSERV];
getnameinfo(
reinterpret_cast<sockaddr*>(&context.server->address), context.server->addressLength,
host, sizeof(host),
port, sizeof(port),
NI_NUMERICHOST | NI_NUMERICSERV
);
// connect to the chrony server
// TODO(Faraphel): only once ?
FILE* chronyProcess = popen(("chronyc add server " + std::string(host) + " 2>&1").c_str(), "r");
if (pclose(chronyProcess) == -1)
std::cerr << "[Task - Client] Failed to connect to chrony server !" << std::endl;
// TODO(Faraphel): check if the server is still reachable.
// if connection lost, go back to undefined mode.
std::this_thread::sleep_for(std::chrono::seconds(1));
}
}