Thunderbots Project
Loading...
Searching...
No Matches
observer_subject_adapter.hpp
1#pragma once
2#include <functional>
3
4#include "software/multithreading/observer.hpp"
5#include "software/multithreading/subject.hpp"
6
18template <typename ObserverType, typename SubjectType>
19class ObserverSubjectAdapter : public Observer<ObserverType>, public Subject<SubjectType>
20{
21 public:
22 // the type of the conversion function
23 using ConversionFunctionType = SubjectType(const ObserverType&);
24
31 std::function<ConversionFunctionType> conversion_function_)
32 : conversion_function(std::move(conversion_function_))
33 {
34 }
35
41 virtual void receiveValue(ObserverType val) final;
42
43 private:
44 std::function<ConversionFunctionType> conversion_function;
45};
46
47template <typename ObserverType, typename SubjectType>
Definition observer_subject_adapter.hpp:20
virtual void receiveValue(ObserverType val) final
Definition observer_subject_adapter.hpp:48
ObserverSubjectAdapter(std::function< ConversionFunctionType > conversion_function_)
Definition observer_subject_adapter.hpp:30
Definition observer.hpp:15
Definition subject.hpp:18
virtual void sendValueToObservers(T val) final
Definition subject.hpp:51