diff options
Diffstat (limited to 'src/interfaces/publisher.hpp')
-rw-r--r-- | src/interfaces/publisher.hpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/interfaces/publisher.hpp b/src/interfaces/publisher.hpp new file mode 100644 index 0000000..14766ed --- /dev/null +++ b/src/interfaces/publisher.hpp @@ -0,0 +1,20 @@ +#pragma once + +#include "interfaces/subscriber.hpp" + +#include <functional> +#include <memory> + +template <typename Event, typename Context> +class IPublisher +{ +public: + virtual ~IPublisher() noexcept = default; + + virtual void + subscribe(const Event &event, + const std::shared_ptr<ISubscriber<Context>> &subscriber) noexcept = 0; + + virtual void notify_subscribers(const Event &event, + const Context &context) const noexcept = 0; +}; |