#include "../include/Rpc.hpp" #include #include namespace dchat { Rpc::Rpc(u16 port) : context(1), socket(context, ZMQ_PAIR) { std::string addr = "tcp://*:"; addr += std::to_string(port); socket.bind(addr); } void Rpc::recv(RpcRecvCallbackFunc recvCallbackFunc) { assert(recvCallbackFunc); zmq::message_t request; if(socket.recv(&request, ZMQ_NOBLOCK)) { recvCallbackFunc(&request); } } bool Rpc::send(const void *data, const usize size) { if(size == 0) return false; try { return socket.send(data, size, ZMQ_NOBLOCK) > 0; } catch(zmq::error_t &e) { fprintf(stderr, "Rpc::send failed, reason: %s\n", e.what()); return false; } } }