Chi-Tech
EventPublisher.h
Go to the documentation of this file.
1#ifndef CHITECH_EVENTPUBLISHER_H
2#define CHITECH_EVENTPUBLISHER_H
3
4#include <vector>
5#include <memory>
6#include <string>
7
8namespace chi
9{
10class Event;
11class EventSubscriber;
12}
13
14namespace chi
15{
16
17/**Base class for event publishers.*/
19{
20public:
21 /**Publish the given event.*/
22 virtual void PublishEvent(const chi::Event& event);
23 /**Adds a subscriber to the publisher.*/
24 void AddSubscriber(std::shared_ptr<chi::EventSubscriber>& subscriber_sptr);
25
26 virtual ~EventPublisher() = default;
27
28protected:
29 explicit EventPublisher(const std::string& name);
30
31protected:
32 const std::string publisher_name_;
33 std::vector<std::weak_ptr<chi::EventSubscriber>> subscribers_;
34};
35
36}
37
38#endif // CHITECH_EVENTPUBLISHER_H
EventPublisher(const std::string &name)
std::vector< std::weak_ptr< chi::EventSubscriber > > subscribers_
void AddSubscriber(std::shared_ptr< chi::EventSubscriber > &subscriber_sptr)
const std::string publisher_name_
virtual ~EventPublisher()=default
virtual void PublishEvent(const chi::Event &event)