template class utils::DelegatedNotifier¶
Overview¶
An extension to Notifier - does not notify by itself. Instead it collects notifications and allows external code to call them when it pleases. More…
#include <Notifier.h> template <typename... Args> class DelegatedNotifier: public utils::Notifier { public: // methods virtual void Notify(Args... args); virtual void SendAllNotifications(); virtual void WaitUntilAllSent(); protected: // fields std::vector<std::tuple<Args...>> tuples_; std::condition_variable notifier_condition_; };
Inherited Members¶
public: // typedefs typedef std::function<void(Args...)> CallbackType; // methods void AddCallback(CallbackType callback); virtual void Notify(Args... args); bool HasCallback() const; protected: // fields std::vector<CallbackType> callbacks_; std::mutex notifier_access_;
Detailed Documentation¶
An extension to Notifier - does not notify by itself. Instead it collects notifications and allows external code to call them when it pleases.
The motivation is thread safety. The usage is that the owner (to whom the notification functionality is delegated), must call the SendAllNotifications function at the appropriate moment.
Fields¶
std::vector<std::tuple<Args...>> tuples_
The collected arguments to be executed on the next execution loop call.
std::condition_variable notifier_condition_
Condition variable to trigger rechecking conditions.
Methods¶
virtual void Notify(Args... args)
Notify does not execute all notifications - it merely collects the arguments and allows the Owner to execute them when it pleases.
virtual void SendAllNotifications()
Send all collected notifications at this moment.
virtual void WaitUntilAllSent()
Wait until all notifications are sent.