Files
MuditaOS/module-sys/SystemManager/cpu/AlgorithmFactory.cpp
Adam Dobrowolski dd12853503 [MOS-226] Moved algorithms and their data to separate classes
This way we have controll over what does what, and can test
them separatelly
Logging statistics update more and better data presented
2022-03-04 07:05:02 +01:00

34 lines
985 B
C++

// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "AlgorithmFactory.hpp"
#include "SystemManager/cpu/algorithm/FrequencyHold.hpp"
#include <memory>
namespace sys::cpu {
AlgorithmFactory::PutResult AlgorithmFactory::emplace(sys::cpu::AlgoID id, std::unique_ptr<Algorithm>&&algorithm)
{
if ( algorithms.find(id) != std::end(algorithms)) {
algorithms[id] = std::move(algorithm);
return PutResult::Replaced;
}
algorithms.emplace(id, std::move(algorithm));
return PutResult::Added;
}
Algorithm* AlgorithmFactory::get(sys::cpu::AlgoID id)
{
if ( auto el = algorithms.find(id); el != std::end(algorithms)) {
return el->second.get();
}
return nullptr;
}
void AlgorithmFactory::remove(sys::cpu::AlgoID id)
{
algorithms.erase(id);
}
} // namespace sys::cpu