15 #include <framework/pcore/zmq/messages/ZMQDefinitions.h>
16 #include <framework/logging/Logger.h>
27 template <
int AZMQType>
28 void initialize(
const std::string& pubSocketAddress,
const std::string& subSocketAddress,
const std::string& socketName,
bool bind);
31 void initialize(
const std::string& pubSocketAddress,
const std::string& subSocketAddress);
43 template <
class AZMQMessage>
44 void send(AZMQMessage message)
const
46 AZMQMessage::element_type::toSocket(std::move(message),
m_socket);
50 void send(zmq::message_t& message)
const;
53 template <
class AZMQMessage>
54 void publish(AZMQMessage message)
const
56 AZMQMessage::element_type::toSocket(std::move(message),
m_pubSocket);
76 template <
class AMulticastAnswer,
class ASocketAnswer>
77 int poll(
unsigned int timeout, AMulticastAnswer multicastAnswer, ASocketAnswer socketAnswer)
const;
84 template <
class ASocketAnswer>
85 int pollSocket(
unsigned int timeout, ASocketAnswer socketAnswer)
const;
92 template <
class AMulticastAnswer>
93 int pollMulticast(
unsigned int timeout, AMulticastAnswer multicastAnswer)
const;
97 static int pollSocketVector(
const std::vector<zmq::socket_t*>& socketList,
int timeout);
100 std::unique_ptr<zmq::context_t>
m_context;
110 std::unique_ptr<zmq::socket_t>
m_socket;
113 template <
class AMulticastAnswer,
class ASocketAnswer>
114 int ZMQClient::poll(
unsigned int timeout, AMulticastAnswer multicastAnswer, ASocketAnswer socketAnswer)
const
121 if (pollResult & 1) {
124 std::vector<zmq::socket_t*> vector = {
m_subSocket.get()};
130 if (pollResult & 2) {
132 std::vector<zmq::socket_t*> vector = {
m_socket.get()};
137 }
while (repeat and pollResult);
142 template <
class ASocketAnswer>
145 B2ASSERT(
"Can only run this on started clients",
m_socket);
146 std::vector<zmq::socket_t*> vector = {
m_socket.get()};
157 }
while (repeat and pollResult);
162 template <
class AMulticastAnswer>
165 B2ASSERT(
"Can only run this on started clients",
m_subSocket);
166 std::vector<zmq::socket_t*> vector = {
m_subSocket.get()};
177 }
while (repeat and pollResult);