9 , m_address(broker_address)
12 if (ZMQ_CLIENT == stype) {
16 else if (ZMQ_DEALER == stype) {
21 throw std::runtime_error(
"client must be given DEALER or CLIENT socket");
24 connect_to_broker(
false);
30 void Client::connect_to_broker(
bool reconnect)
40 zio::debug(
"zio::domo::Client connect to " + m_address);
46 request.pushstr(service);
48 zio::debug(
"zio::domo::Client send request for " + service);
49 really_send(m_sock, request);
56 zio::poller_t<> poller;
57 poller.add(m_sock, zio::event_flags::pollin);
59 std::vector< zio::poller_event<> > events(1);
60 int rc = poller.wait_all(events, m_timeout);
62 zio::multipart_t mmsg;
63 really_recv(m_sock, mmsg);
65 std::string header = mmsg.popstr();
68 std::string service = mmsg.popstr();
69 reply = std::move(mmsg);
73 zio::error(
"zio::domo::Client interupted on recv");
void send_client(socket_t &client_socket, multipart_t &mmsg)
void setsockopt(int option_, T const &optval)
Client(zio::socket_t &sock, std::string broker_address)
void getsockopt(int option_, void *optval_, size_t *optvallen_) const
void send_dealer(socket_t &dealer_socket, multipart_t &mmsg)
void recv(zio::multipart_t &reply)
void connect(std::string const &addr)
void recv_client(socket_t &client_socket, multipart_t &mmsg)
void recv_dealer(socket_t &dealer_socket, multipart_t &mmsg)
void disconnect(std::string const &addr)
void send(std::string service, zio::multipart_t &request)