Zserio C++ runtime library  1.0.0
Built for Zserio 2.13.0
IPubsub.h
Go to the documentation of this file.
1 #ifndef ZSERIO_IPUBSUB_H_INC
2 #define ZSERIO_IPUBSUB_H_INC
3 
4 #include <memory>
5 #include "zserio/StringView.h"
6 #include "zserio/Span.h"
7 #include "zserio/Types.h"
8 
9 namespace zserio
10 {
11 
13 class IPubsub
14 {
15 public:
16  virtual ~IPubsub() = default;
17 
21  using SubscriptionId = size_t;
22 
27  {
28  public:
29  virtual ~OnTopicCallback() = default;
30  virtual void operator()(StringView topic, Span<const uint8_t> data) = 0;
31  };
32 
42  virtual void publish(StringView topic, Span<const uint8_t> data, void* context) = 0;
43 
56  virtual SubscriptionId subscribe(
57  StringView topic, const std::shared_ptr<OnTopicCallback>& callback, void* context) = 0;
58 
66  virtual void unsubscribe(SubscriptionId id) = 0;
67 };
68 
69 } // namespace zserio
70 
71 #endif // ZSERIO_IPUBSUB_H_INC
size_t SubscriptionId
Definition: IPubsub.h:21
virtual void unsubscribe(SubscriptionId id)=0
virtual SubscriptionId subscribe(StringView topic, const std::shared_ptr< OnTopicCallback > &callback, void *context)=0
virtual void publish(StringView topic, Span< const uint8_t > data, void *context)=0
virtual ~IPubsub()=default
virtual void operator()(StringView topic, Span< const uint8_t > data)=0
virtual ~OnTopicCallback()=default