uyha/zimq
Zig binding for ZeroMQ
34f7fa22022bed9e0e390ed3580a1c83ac4a2834.tar.gz
A ZeroMQ wrapper that covers nearly 100% of ZeroMQ's API (skipped functions are to be deprecated or superseded).
Run the following command to add this project as a dependency
zig fetch --save git+https://github.com/uyha/zimq.git
In your build.zig
, add the following
const zimq = b.dependency("zimq", .{
.target = target,
.optimize = optimize,
});
// Replace `exe` with your actual library or executable
exe.root_module.addImport("zimq", zimq.module("zimq"));
const std = @import("std");
const zimq = @import("zimq");
pub fn main() !void {
const context: *zimq.Context = try .init();
defer context.deinit();
const pull: *zimq.Socket = try .init(context, .pull);
defer pull.deinit();
const push: *zimq.Socket = try .init(context, .push);
defer push.deinit();
try pull.bind("inproc://#1");
try push.connect("inproc://#1");
try push.sendSlice("hello", .{});
var buffer: zimq.Message = .empty();
_ = try pull.recvMsg(&buffer, .{});
std.debug.print("{s}\n", .{buffer.slice().?});
}
All the binding functions live in the zimq
module.
zmq_ctx_get
(zmq_ctx_get_ext
is used instead)
zmq_ctx_get_ext
-> Context.get
zmq_ctx_new
-> Context.init
zmq_ctx_set
(zmq_ctx_set_ext
is used instead)
zmq_ctx_set_ext
-> Context.set
zmq_ctx_shutdown
-> Context.shutdown
zmq_ctx_term
-> Context.deinit
zmq_bind
-> Socket.bind
zmq_close
-> Socket.deinit
zmq_connect
-> Socket.connect
zmq_connect_peer
-> Socket.connectPeer
zmq_disconnect
-> Socket.disconnect
zmq_getsockopt
-> Socket.get
zmq_recv
-> Socket.recv
zmq_recvmsg
(to be deprecated, zmq_msg_recv
is used instead)
zmq_msg_recv
-> Socket.recvMsg
zmq_send
-> Socket.sendBuffer
zmq_send_const
-> Socket.sendConst
zmq_sendmsg
(to be deprecated, zmq_msg_send
is used instead)
zmq_msg_send
-> Socket.sendMsg
zmq_setsockopt
-> Socket.set
zmq_socket
-> Socket.init
zmq_socket_monitor
-> Socket.monitor
zmq_socket_monitor_versioned
-> Socket.monitorVersioned
zmq_socket_monitor_pipes_stats
-> Socket.pipesStats
zmq_unbind
-> Socket.unbind
zmq_msg_close
-> Message.deinit
zmq_msg_copy
-> Message.copy
zmq_msg_data
-> Message.data
(Message.slice
provides better access to
the underlying data)
zmq_msg_get
-> Message.get
zmq_msg_gets
-> Message.gets
zmq_msg_init
-> Message.empty
zmq_msg_init_buffer
-> Message.withBuffer
zmq_msg_init_data
-> Message.withData
zmq_msg_init_size
-> Message.withSize
zmq_msg_more
-> Message.more
zmq_msg_move
-> Message.move
zmq_msg_routing_id
-> Message.getRoutingId
zmq_msg_set
(currently useless)
zmq_msg_set_routing_id
-> Message.setRoutingId
zmq_msg_size
-> Message.size
zmq_poll
-> poll.poll
zmq_ppoll
-> poll.ppoll
zmq_poller_new
-> Poller.init
zmq_poller_destroy
-> Poller.deinit
zmq_poller_size
-> Poller.size
zmq_poller_add
-> Poller.add
zmq_poller_modify
-> Poller.modify
zmq_poller_remove
-> Poller.remove
zmq_poller_add_fd
-> Poller.add_fd
zmq_poller_modify_fd
-> Poller.modify_fd
zmq_poller_remove_fd
-> Poller.remove_fd
zmq_poller_wait
-> Poller.wait
zmq_poller_wait_all
-> Poller.wait_all
zmq_poller_fd
-> Poller.fd
zmq_proxy
-> proxy
zmq_proxy_steerable
-> proxySteerable
zmq_timers_new
-> Timers.init
zmq_timers_destroy
-> Timers.deinit
zmq_timers_add
-> Timers.add
zmq_timers_cancel
-> Timers.cancel
zmq_timers_set_interval
-> Timers.setInterval
zmq_timers_reset
-> Timers.reset
zmq_timers_timeout
-> Timers.timeout
zmq_timers_execute
-> Timers.execute
zmq_has
-> has
zmq_version
-> version
zmq_atomic_counter_dec
-> AtomicCounter.dec
zmq_atomic_counter_destroy
-> AtomicCounter.deinit
zmq_atomic_counter_inc
-> AtomicCounter.inc
zmq_atomic_counter_new
-> AtomicCounter.init
zmq_atomic_counter_set
-> AtomicCounter.set
zmq_atomic_counter_value
-> AtomicCounter.value
zmq_errno
-> errno
zmq_strerror
-> strerror
zmq_curve_keypair
-> curve.keypair
zmq_curve_public
-> curve.publicKey
zmq_z85_encode
-> z85.encode
zmq_z85_decode
-> z85.decode