ZIO
Python and C++ interface to ZeroMQ and Zyre
worker.hpp
Go to the documentation of this file.
1 #ifndef ZIO_DOMO_WORKER_HPP_SEEN
2 #define ZIO_DOMO_WORKER_HPP_SEEN
3 
4 #include "zio/util.hpp"
5 
6 namespace zio {
7 namespace domo {
8 
21  class Worker {
22  public:
25  Worker(zio::socket_t& sock, std::string broker_address,
26  std::string service);
27  ~Worker();
28 
29  // API methods
30 
38  zio::multipart_t work(zio::multipart_t& reply);
39 
44  void recv(zio::multipart_t& request);
49  void send(zio::multipart_t& reply);
50 
51 
52  private:
53  zio::socket_t& m_sock;
54  std::string m_address;
55  std::string m_service;
56  int m_liveness{HEARTBEAT_LIVENESS};
57  time_unit_t m_heartbeat{HEARTBEAT_INTERVAL};
58  time_unit_t m_reconnect{HEARTBEAT_INTERVAL};
59  time_unit_t m_heartbeat_at{0};
60  bool m_expect_reply{false};
61  std::string m_reply_to{""};
62 
63  private:
64 
65  std::function<void(zio::socket_t& server_socket,
66  zio::multipart_t& mmsg)> really_recv;
67  std::function<void(zio::socket_t& server_socket,
68  zio::multipart_t& mmsg)> really_send;
69 
70  void connect_to_broker(bool reconnect = true);
71 
72  };
73 
74 
75  // An echo worker actor function
76  void echo_worker(zio::socket_t& link, std::string address, int socktype);
77 
78 }
79 }
80 #endif
void recv(zio::multipart_t &request)
Definition: domo_worker.cpp:72
const char * reply
Definition: protocol.hpp:23
void echo_worker(zio::socket_t &link, std::string address, int socktype)
const char * request
Definition: protocol.hpp:22
Worker(zio::socket_t &sock, std::string broker_address, std::string service)
Definition: domo_worker.cpp:8
zio::multipart_t work(zio::multipart_t &reply)
const time_unit_t HEARTBEAT_INTERVAL
Definition: util.hpp:15
const int HEARTBEAT_LIVENESS
Definition: util.hpp:14
implementation of ZIO data flow protocol endpoints
Definition: actor.hpp:14
void send(zio::multipart_t &reply)
Definition: domo_worker.cpp:60
std::chrono::milliseconds time_unit_t
Definition: util.hpp:11