ObservedClass {
|
|
TimeObserver getTimeObserver() {
|
return TimeObserver{[&] { return getTimeRunning(); }, [&] { return getTimeRemaining(); }};
|
}
|
|
Duration getTimeRunning();
|
Duration getTimeRemaining();
|
}
|
|
TimeObserver {
|
public:
|
using DurationFunction = std::function<Duration()>;
|
|
TimeObserver(DurationFunction timeRunning, DurationFunction timeRemaining);
|
|
Duration getTimeRunning() {
|
return _timeRunning();
|
}
|
|
Duration getTimeRemaining() {
|
return _timeRemaining();
|
}
|
|
private:
|
DurationFunction _timeRunning;
|
DurationFunction _timeRemaining;
|
}
|