ZeroEQ  0.8.0
ZeroEQ - Zero Event Queue
receiver.h
1 
2 /* Copyright (c) 2014-2015, Human Brain Project
3  * Stefan.Eilemann@epfl.ch
4  */
5 
6 #ifndef ZEROEQ_RECEIVER_H
7 #define ZEROEQ_RECEIVER_H
8 
9 #include <zeroeq/api.h>
10 #include <zeroeq/types.h>
11 
12 #include <memory>
13 
14 #include <string>
15 #include <vector>
16 
17 namespace zeroeq
18 {
19 namespace detail
20 {
21 class Receiver;
22 }
23 namespace connection
24 {
25 namespace detail
26 {
27 class Broker;
28 }
29 }
30 
42 class Receiver
43 {
44 public:
46  ZEROEQ_API Receiver();
47 
56  ZEROEQ_API explicit Receiver(Receiver& shared);
57 
59  ZEROEQ_API virtual ~Receiver();
60 
71  ZEROEQ_API bool receive(const uint32_t timeout = TIMEOUT_INDEFINITE);
72 
73 protected:
74  friend class detail::Receiver;
75 
77  virtual void addSockets(std::vector<detail::Socket>& entries) = 0;
78 
85  virtual void process(detail::Socket& socket, uint32_t timeout) = 0;
86 
93  virtual void update() {}
99  ZEROEQ_API virtual void addConnection(const std::string& uri);
100  friend class connection::detail::Broker;
101 
102  void* getZMQContext();
103 
104 private:
105  Receiver& operator=(const Receiver&) = delete;
106 
107  std::shared_ptr<detail::Receiver> const _impl;
108 };
109 }
110 
111 #endif
Defines export visibility macros for library ZeroEQ.
static const uint32_t TIMEOUT_INDEFINITE
Constant defining &#39;wait forever&#39; in methods with wait parameters.
Definition: types.h:58
Base class for entities receiving data.
Definition: receiver.h:42
Publish-subscribe classes for typed events.
Definition: broker.h:12
virtual void update()
Update the internal connection list.
Definition: receiver.h:93