6#ifndef ACTIVE_EVENT_PUBLISHER
7#define ACTIVE_EVENT_PUBLISHER
9#include "Active/Event/Participant.h"
32 using Unique = std::unique_ptr<Publisher>;
34 using Shared = std::shared_ptr<Publisher>;
76 bool add(std::shared_ptr<Subscriber> subscriber);
82 bool addWeak(std::shared_ptr<Subscriber> subscriber);
88 template<
class T,
class... Args>
89 std::shared_ptr<T>
add(Args&&... args) {
90 auto subscriber = std::make_shared<T>(std::forward<Args>(args)...);
91 return add(subscriber) ? subscriber :
nullptr;
111 virtual bool audit()
override;
116 virtual bool attach()
override;
121 virtual bool start()
override;
125 virtual void stop()
override;
128 class SubscriberList;
129 std::unique_ptr<SubscriberList> m_subscriber;
Definition Participant.h:22
Definition Publisher.h:26
bool remove(const Subscriber &subscriber)
Definition Publisher.cpp:300
std::shared_ptr< Publisher > Shared
Shared pointer.
Definition Publisher.h:34
virtual bool attach() override
Definition Publisher.cpp:337
virtual void stop() override
Definition Publisher.cpp:365
std::unique_ptr< Publisher > Unique
Unique pointer.
Definition Publisher.h:32
std::shared_ptr< T > add(Args &&... args)
Definition Publisher.h:89
bool addWeak(std::shared_ptr< Subscriber > subscriber)
Definition Publisher.cpp:287
Publisher & operator=(const Publisher &source)
Definition Publisher.cpp:242
bool add(std::shared_ptr< Subscriber > subscriber)
Definition Publisher.cpp:275
Publisher(const utility::NameID &identity=utility::NameID{})
Definition Publisher.cpp:214
virtual bool audit() override
Definition Publisher.cpp:322
virtual ~Publisher()
Definition Publisher.cpp:232
bool publish(const Event &event)
Definition Publisher.cpp:256
virtual bool start() override
Definition Publisher.cpp:352
Definition Subscriber.h:39