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:
parent
b4c3ef8ac0
commit
ee83bb197b
2 changed files with 29 additions and 1 deletions
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue