Skip to content
Snippets Groups Projects
Commit 37b596db authored by Armin Co's avatar Armin Co
Browse files

Added observer log.

parent 3b3202e0
Branches
No related tags found
No related merge requests found
......@@ -34,6 +34,7 @@ include_directories(src/smart_grid)
add_executable(smart_grid.exe
src/smg_server.cpp
src/smart_grid/SmartGridModell.cpp
src/smart_grid/StateLogger.cpp
src/i2c/Node.cpp
src/com/Socket.cpp
src/com/Protocol.cpp
......
......@@ -14,22 +14,23 @@ public:
virtual void update(const T &subject) = 0;
};
template<typename T>
template<typename Observer, typename Value>
class Subject
{
public:
virtual ~Subject() = default;
void attach(std::shared_ptr<IObserver<T>> observer){
void attach(std::shared_ptr<Observer> observer){
m_observers.push_back(observer);
}
void notify() const{
for (auto &observer : m_observers){
observer.update(this);
protected:
void notify(const Value &value) const{
for (auto observer : m_observers){
observer->update(value);
}
}
private:
std::vector<std::shared_ptr<IObserver<T>>> m_observers;
std::vector<std::shared_ptr<Observer>> m_observers;
};
#endif
\ No newline at end of file
......@@ -114,4 +114,5 @@ void ModelState::next_hour()
update_power_production();
update_modell();
print_states();
notify(*this);
}
\ No newline at end of file
......@@ -11,6 +11,7 @@
#include "SmartGridModell.hpp"
#include "ObserverPattern.hpp"
#include "StateLogger.hpp"
struct MaxPower
{
static constexpr double village = 600;
......@@ -58,13 +59,17 @@ struct PowerUsage
};
class ModelState : Subject<ModelState>
class StateLogger;
class ModelState : Subject<StateLogger, ModelState>
{
public:
ModelState(SmartGridModell &modell);
void next_hour();
double excess_power();
PowerProduction getPowerProduction() const {return m_production;}
PowerUsage getPowerUsage() const {return m_usage;}
private:
void update_time();
void update_sun();
......
///
#include "StateLogger.hpp"
void StateLogger::update(const ModelState &model)
{
spdlog::debug("Clean solar power: {}", model.getPowerProduction().renewable.solar);
}
\ No newline at end of file
......@@ -6,6 +6,7 @@
#include "ModelState.hpp"
#include "ObserverPattern.hpp"
class ModelState;
class StateLogger : IObserver<ModelState>
{
public:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment