stephb9959
2023-05-26 14:02:13 -07:00
parent 4a1e4d9cba
commit 39f012a429
29 changed files with 157 additions and 112 deletions

View File

@@ -2,14 +2,13 @@
// Created by stephane bourque on 2023-04-12.
//
#include <fmt/format.h>
#include <Poco/NObserver.h>
#include "OWLSclient.h"
#include "SimulationRunner.h"
#include "SimulationCoordinator.h"
#include <fmt/format.h>
#include "SimStats.h"
#include <Poco/NObserver.h>
#include "OWLSclientEvents.h"
namespace OpenWifi::OWLSClientEvents {
@@ -88,8 +87,9 @@ namespace OpenWifi::OWLSClientEvents {
Client->Reactor_.addEventHandler(
*Client->WS_, Poco::NObserver<SimulationRunner, Poco::Net::ShutdownNotification>(
*Runner, &SimulationRunner::OnSocketShutdown));
Runner->Scheduler().in(std::chrono::seconds(1), Connect, Client, Runner);
SimStats()->Connect(Runner->Id());
// Runner->Scheduler().in(std::chrono::seconds(1), Connect, Client, Runner);
Connect(ClientGuard, Client, Runner);
// SimStats()->Connect(Runner->Id());
Client->Logger_.information(fmt::format("connecting({}): connected.", Client->SerialNumber_));
} catch (const Poco::Exception &E) {
Client->Logger_.warning(
@@ -104,4 +104,54 @@ namespace OpenWifi::OWLSClientEvents {
Runner->Scheduler().in(std::chrono::seconds(60), Reconnect, Client, Runner);
}
}
}
void Connect(std::lock_guard<std::mutex> & ClientGuard, const std::shared_ptr<OWLSclient> &Client, SimulationRunner *Runner) {
if(!Runner->Running()) {
return;
}
// std::lock_guard ClientGuard(Client->Mutex_);
if(Client->Valid_) {
try {
Runner->Report().ev_connect++;
Poco::JSON::Object ConnectMessage, Params, TmpCapabilities, Capabilities, MacAddr;
auto LabelMac = Utils::SerialNumberToInt(Client->SerialNumber_);
Params.set("serial", Client->SerialNumber_);
Params.set("uuid", Client->UUID_);
Params.set("firmware", Client->Firmware_);
MacAddr.set("wan", Client->SerialNumber_);
MacAddr.set("lan", Utils::SerialToMAC(Utils::IntToSerialNumber(LabelMac + 1)));
TmpCapabilities = *SimulationCoordinator()->GetSimCapabilitiesPtr();
TmpCapabilities.set("label_macaddr", Client->SerialNumber_);
TmpCapabilities.set("macaddr", MacAddr);
Params.set("capabilities", TmpCapabilities);
OWLSutils::MakeHeader(ConnectMessage,"connect",Params);
if (Client->SendObject(ConnectMessage)) {
Client->Reset();
Runner->Scheduler().in(std::chrono::seconds(Client->StatisticsInterval_),
OWLSClientEvents::State, Client, Runner);
Runner->Scheduler().in(std::chrono::seconds(Client->HealthInterval_),
OWLSClientEvents::HealthCheck, Client, Runner);
Runner->Scheduler().in(std::chrono::seconds(MicroServiceRandom(120, 200)),
OWLSClientEvents::Log, Client, Runner, 1, "Device started");
Runner->Scheduler().in(std::chrono::seconds(60 * 4),
OWLSClientEvents::WSPing, Client, Runner);
Runner->Scheduler().in(std::chrono::seconds(30),
OWLSClientEvents::Update, Client, Runner);
Client->Logger_.information(fmt::format("connect({}): completed.", Client->SerialNumber_));
SimStats()->Connect(Runner->Id());
return;
}
} catch (const Poco::Exception &E) {
Client->Logger().log(E);
}
OWLSClientEvents::Disconnect(ClientGuard,Client, Runner, "Error occurred during connection", true);
}
}
}