# template class utils::Notifier

## Overview

A notifier is a mechanism to allow inter-object notifications. More…

    #include <Notifier.h>

    template <typename... Args>
    class Notifier {
    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

A notifier is a mechanism to allow inter-object notifications.

### Typedefs

    typedef std::function<void(Args...)> CallbackType

The callback is a void function taking the variadic templated arguments of the Notifier class.

### Fields

    std::vector<CallbackType> callbacks_

The callbacks.

    std::mutex notifier_access_

mutex to ensure thread safety.

### Methods

    void AddCallback(CallbackType callback)

Add a single callback function.

    virtual void Notify(Args... args)

Send all notifications at this moment.

    bool HasCallback() const

Returns whether it has any callback registered.