ZIO
Python and C++ interface to ZeroMQ and Zyre
util.hpp
Go to the documentation of this file.
1 #ifndef ZIO_UTIL_HPP_SEEN
2 #define ZIO_UTIL_HPP_SEEN
3 
4 #include "zio/cppzmq.hpp"
5 
6 #include <string>
7 
8 namespace zio {
9 
10  // timeouts, heartbeats and other things are in units of millisecond.
11  typedef std::chrono::milliseconds time_unit_t;
12 
13  // default values
14  const int HEARTBEAT_LIVENESS = 3;
15  const time_unit_t HEARTBEAT_INTERVAL{2500};
16  const time_unit_t HEARTBEAT_EXPIRY{HEARTBEAT_INTERVAL * HEARTBEAT_LIVENESS};
17 
18 
19  // Erase the difference between SERVER routing ID and ROUTER
20  // envelop stack. The former is uint32_t which we stuff in to a
21  // string of length 4. The latter is already a string. The
22  // remote identity value should be treated as opaque outside of
23  // the send/recv methods. In general, it is not printable.
24  typedef std::string remote_identity_t;
25 
26 
27  // Receive on a ROUTER or SERVER
28  remote_identity_t recv_serverish(socket_t& socket,
29  multipart_t& mmsg);
30 
31  // Receive on a SERVER
32  remote_identity_t recv_server(socket_t& server_socket,
33  multipart_t& mmsg);
34 
35  // Receive on a ROUTER
36  remote_identity_t recv_router(socket_t& router_socket,
37  multipart_t& mmsg);
38 
39 
40  // Send on a ROUTER or SERVER
41  void send_serverish(socket_t& socket,
42  multipart_t& mmsg,
43  remote_identity_t rid);
44 
45  // Send on a SERVER
46  void send_server(socket_t& server_socket,
47  multipart_t& mmsg,
48  remote_identity_t rid);
49 
50  // Send on a ROUTER
51  void send_router(socket_t& router_socket,
52  multipart_t& mmsg,
53  remote_identity_t rid);
54 
55 
56  // Receive on a DEALER or CLIENT
57  void recv_clientish(socket_t& socket,
58  multipart_t& mmsg);
59 
60  // Receive on a CLIENT
61  void recv_client(socket_t& client_socket,
62  multipart_t& mmsg);
63 
64  // Receive on a DEALER
65  void recv_dealer(socket_t& dealer_socket,
66  multipart_t& mmsg);
67 
68 
69  // Send on a DEALER or CLIENT
70  void send_clientish(socket_t& socket,
71  multipart_t& mmsg);
72 
73  // Send on a CLIENT
74  void send_client(socket_t& client_socket,
75  multipart_t& mmsg);
76 
77  // Send on a DEALER
78  void send_dealer(socket_t& dealer_socket,
79  multipart_t& mmsg);
80 
81 
83  std::chrono::milliseconds now_ms();
85  std::chrono::microseconds now_us();
86 
88  void sleep_ms(std::chrono::milliseconds zzz);
89 
97  bool interrupted();
98 
104  void catch_signals ();
105 
106 
107 }
108 
109 #endif
void send_serverish(socket_t &socket, multipart_t &mmsg, remote_identity_t rid)
void sleep_ms(std::chrono::milliseconds zzz)
Definition: util.cpp:183
void send_router(socket_t &router_socket, multipart_t &mmsg, remote_identity_t rid)
void send_client(socket_t &client_socket, multipart_t &mmsg)
void catch_signals()
Definition: util.cpp:200
bool interrupted()
Definition: util.cpp:194
void send_server(socket_t &server_socket, multipart_t &mmsg, remote_identity_t rid)
remote_identity_t recv_router(socket_t &router_socket, multipart_t &mmsg)
std::chrono::milliseconds now_ms()
Definition: util.cpp:174
remote_identity_t recv_serverish(socket_t &socket, multipart_t &mmsg)
void send_dealer(socket_t &dealer_socket, multipart_t &mmsg)
void recv_client(socket_t &client_socket, multipart_t &mmsg)
std::chrono::microseconds now_us()
Definition: util.cpp:178
const time_unit_t HEARTBEAT_EXPIRY
Definition: util.hpp:16
void recv_dealer(socket_t &dealer_socket, multipart_t &mmsg)
const time_unit_t HEARTBEAT_INTERVAL
Definition: util.hpp:15
void send_clientish(socket_t &socket, multipart_t &mmsg)
const int HEARTBEAT_LIVENESS
Definition: util.hpp:14
void recv_clientish(socket_t &socket, multipart_t &mmsg)
remote_identity_t recv_server(socket_t &server_socket, multipart_t &mmsg)
std::string remote_identity_t
Definition: util.hpp:24
implementation of ZIO data flow protocol endpoints
Definition: actor.hpp:14
std::chrono::milliseconds time_unit_t
Definition: util.hpp:11