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.