Electroneum
Namespaces | Classes | Typedefs | Functions
net::zmq Namespace Reference

Namespaces

 anonymous_namespace{zmq.cpp}
 

Classes

class  terminate
 Calls zmq_term More...
 
struct  close
 Calls zmq_close More...
 

Typedefs

using context = std::unique_ptr< void, terminate >
 Unique ZMQ context handle, calls zmq_term on destruction. More...
 
using socket = std::unique_ptr< void, close >
 Unique ZMQ socket handle, calls zmq_close on destruction. More...
 

Functions

const std::error_category & error_category () noexcept
 
expect< std::string > receive (void *const socket, const int flags)
 
expect< void > send (const epee::span< const std::uint8_t > payload, void *const socket, const int flags) noexcept
 
std::error_code make_error_code (int code) noexcept
 
std::error_code get_error_code () noexcept
 

Typedef Documentation

◆ context

using net::zmq::context = typedef std::unique_ptr<void, terminate>

Unique ZMQ context handle, calls zmq_term on destruction.

◆ socket

using net::zmq::socket = typedef std::unique_ptr<void, close>

Unique ZMQ socket handle, calls zmq_close on destruction.

Function Documentation

◆ error_category()

const std::error_category & net::zmq::error_category ( )
noexcept
Returns
Category for ZMQ errors.

◆ get_error_code()

std::error_code net::zmq::get_error_code ( )
inlinenoexcept
Returns
Error from zmq_errno() using net::zmq::error_category().

◆ make_error_code()

std::error_code net::zmq::make_error_code ( int  code)
inlinenoexcept
Returns
code (usally from zmq_errno()) usingnet::zmq::error_category()`.

◆ receive()

expect< std::string > net::zmq::receive ( void *  socket,
int  flags = 0 
)

Read all parts of the next message on socket. Blocks until the entire next message (all parts) are read, or until zmq_term is called on the zmq_context associated with socket. If the context is terminated, make_error_code(ETERM) is returned.

Note
This will automatically retry on EINTR, so exiting on interrupts requires context termination.
If non-blocking behavior is requested on socket or by flags, then net::zmq::make_error_code(EAGAIN) will be returned if this would block.
Parameters
socketHandle created with zmq_socket.
flagsSee zmq_msg_read for possible flags.
Returns
Message payload read from socket or ZMQ error.

◆ send()

expect< void > net::zmq::send ( epee::span< const std::uint8_t >  payload,
void *  socket,
int  flags = 0 
)
noexcept

Sends payload on socket. Blocks until the entire message is queued for sending, or until zmq_term is called on the zmq_context associated with socket. If the context is terminated, make_error_code(ETERM) is returned.

Note
This will automatically retry on EINTR, so exiting on interrupts requires context termination.
If non-blocking behavior is requested on socket or by flags, then net::zmq::make_error_code(EAGAIN) will be returned if this would block.
Parameters
payloadsent as one message on socket.
socketHandle created with zmq_socket.
flagsSee zmq_send for possible flags.
Returns
success() if sent, otherwise ZMQ error.