# 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.