1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00

feat: ips can be ignored to be initialized in corefactory

Signed-off-by: Pascal Bauer <pascal.bauer@rwth-aachen.de>
This commit is contained in:
Pascal Bauer 2024-10-30 23:41:56 +01:00 committed by Niklas Eiling
parent b4c3ef8ac0
commit ee83bb197b
2 changed files with 29 additions and 1 deletions

View file

@ -211,6 +211,9 @@ public:
using plugin::Plugin::Plugin;
static std::list<IpIdentifier> parseIpIdentifier(json_t *json_ips);
static std::list<IpIdentifier>
filterIps(std::list<IpIdentifier> allIps,
std::list<std::string> ignored_ip_names);
static std::list<IpIdentifier> reorderIps(std::list<IpIdentifier> allIps);
static std::list<std::shared_ptr<Core>>
configureIps(std::list<IpIdentifier> orderedIps, json_t *json_ips,

View file

@ -56,6 +56,28 @@ std::list<IpIdentifier> CoreFactory::parseIpIdentifier(json_t *json_ips) {
return allIps;
}
std::list<IpIdentifier>
CoreFactory::filterIps(std::list<IpIdentifier> allIps,
std::list<std::string> ignored_ip_names) {
std::list<IpIdentifier> filteredIps;
std::set<std::string> ignored_ip_set(ignored_ip_names.begin(),
ignored_ip_names.end());
for (const auto &ip : allIps) {
const auto &ipName = ip.getName();
if (ignored_ip_set.find(ipName) != ignored_ip_set.end()) {
CoreFactory::getStaticLogger()->warn(
"Ignoring Ip {} (explicitly on ignorelist)", ipName);
} else {
filteredIps.push_back(
ip); // Or use `filteredIps.emplace_back(std::move(ip));` if moving is preferred.
}
}
return filteredIps;
}
std::list<IpIdentifier>
CoreFactory::reorderIps(std::list<IpIdentifier> allIps) {
// Pick out IPs to be initialized first.
@ -314,8 +336,11 @@ std::list<std::shared_ptr<Core>> CoreFactory::make(Card *card,
std::list<IpIdentifier> allIps =
parseIpIdentifier(json_ips); // All IPs available in config
std::list<IpIdentifier> filteredIps = filterIps(
allIps, card->ignored_ip_names); // Remove ips on ignorelist in .conf
std::list<IpIdentifier> orderedIps =
reorderIps(allIps); // IPs ordered in initialization order
reorderIps(filteredIps); // IPs ordered in initialization order
std::list<std::shared_ptr<Core>> configuredIps =
configureIps(orderedIps, json_ips, card); // Successfully configured IPs