zmq_sys/
lib.rs

1extern crate libc;
2
3#[cfg(unix)]
4mod unix;
5#[cfg(unix)]
6pub use crate::unix::RawFd;
7
8#[cfg(windows)]
9mod windows;
10#[cfg(windows)]
11pub use windows::RawFd;
12
13pub mod errno;
14
15pub use crate::ffi::{
16    // These are the non-deprecated constants defined in zmq.h. Note that this
17    // list exceeds what is defined by the current minimum required version of
18    // libzmq, but is instead based on the latest stable release. The idea here
19    // is to expose newer API, when it is still compatible with the ABI defined
20    // by the libzmq library. For example, using new socket options will just
21    // result in a runtime error when used with an older libzmq, but
22    // ABI-compatible libzmq, which does not know about them.
23    ZMQ_HAUSNUMERO,
24    ZMQ_IO_THREADS,
25    ZMQ_MAX_SOCKETS,
26    ZMQ_SOCKET_LIMIT,
27    ZMQ_THREAD_PRIORITY,
28    ZMQ_THREAD_SCHED_POLICY,
29    ZMQ_MAX_MSGSZ,
30    ZMQ_MSG_T_SIZE,
31    ZMQ_THREAD_AFFINITY_CPU_ADD,
32    ZMQ_THREAD_AFFINITY_CPU_REMOVE,
33    ZMQ_THREAD_NAME_PREFIX,
34    ZMQ_IO_THREADS_DFLT,
35    ZMQ_MAX_SOCKETS_DFLT,
36    ZMQ_THREAD_PRIORITY_DFLT,
37    ZMQ_THREAD_SCHED_POLICY_DFLT,
38    ZMQ_PAIR,
39    ZMQ_PUB,
40    ZMQ_SUB,
41    ZMQ_REQ,
42    ZMQ_REP,
43    ZMQ_DEALER,
44    ZMQ_ROUTER,
45    ZMQ_PULL,
46    ZMQ_PUSH,
47    ZMQ_XPUB,
48    ZMQ_XSUB,
49    ZMQ_STREAM,
50    ZMQ_AFFINITY,
51    ZMQ_ROUTING_ID,
52    ZMQ_SUBSCRIBE,
53    ZMQ_UNSUBSCRIBE,
54    ZMQ_RATE,
55    ZMQ_RECOVERY_IVL,
56    ZMQ_SNDBUF,
57    ZMQ_RCVBUF,
58    ZMQ_RCVMORE,
59    ZMQ_FD,
60    ZMQ_EVENTS,
61    ZMQ_TYPE,
62    ZMQ_LINGER,
63    ZMQ_RECONNECT_IVL,
64    ZMQ_BACKLOG,
65    ZMQ_RECONNECT_IVL_MAX,
66    ZMQ_MAXMSGSIZE,
67    ZMQ_SNDHWM,
68    ZMQ_RCVHWM,
69    ZMQ_MULTICAST_HOPS,
70    ZMQ_RCVTIMEO,
71    ZMQ_SNDTIMEO,
72    ZMQ_LAST_ENDPOINT,
73    ZMQ_ROUTER_MANDATORY,
74    ZMQ_TCP_KEEPALIVE,
75    ZMQ_TCP_KEEPALIVE_CNT,
76    ZMQ_TCP_KEEPALIVE_IDLE,
77    ZMQ_TCP_KEEPALIVE_INTVL,
78    ZMQ_IMMEDIATE,
79    ZMQ_XPUB_VERBOSE,
80    ZMQ_ROUTER_RAW,
81    ZMQ_IPV6,
82    ZMQ_MECHANISM,
83    ZMQ_PLAIN_SERVER,
84    ZMQ_PLAIN_USERNAME,
85    ZMQ_PLAIN_PASSWORD,
86    ZMQ_CURVE_SERVER,
87    ZMQ_CURVE_PUBLICKEY,
88    ZMQ_CURVE_SECRETKEY,
89    ZMQ_CURVE_SERVERKEY,
90    ZMQ_PROBE_ROUTER,
91    ZMQ_REQ_CORRELATE,
92    ZMQ_REQ_RELAXED,
93    ZMQ_CONFLATE,
94    ZMQ_ZAP_DOMAIN,
95    ZMQ_ROUTER_HANDOVER,
96    ZMQ_TOS,
97    ZMQ_CONNECT_ROUTING_ID,
98    ZMQ_GSSAPI_SERVER,
99    ZMQ_GSSAPI_PRINCIPAL,
100    ZMQ_GSSAPI_SERVICE_PRINCIPAL,
101    ZMQ_GSSAPI_PLAINTEXT,
102    ZMQ_HANDSHAKE_IVL,
103    ZMQ_SOCKS_PROXY,
104    ZMQ_XPUB_NODROP,
105    ZMQ_BLOCKY,
106    ZMQ_XPUB_MANUAL,
107    ZMQ_XPUB_WELCOME_MSG,
108    ZMQ_STREAM_NOTIFY,
109    ZMQ_INVERT_MATCHING,
110    ZMQ_HEARTBEAT_IVL,
111    ZMQ_HEARTBEAT_TTL,
112    ZMQ_HEARTBEAT_TIMEOUT,
113    ZMQ_XPUB_VERBOSER,
114    ZMQ_CONNECT_TIMEOUT,
115    ZMQ_TCP_MAXRT,
116    ZMQ_THREAD_SAFE,
117    ZMQ_MULTICAST_MAXTPDU,
118    ZMQ_VMCI_BUFFER_SIZE,
119    ZMQ_VMCI_BUFFER_MIN_SIZE,
120    ZMQ_VMCI_BUFFER_MAX_SIZE,
121    ZMQ_VMCI_CONNECT_TIMEOUT,
122    ZMQ_USE_FD,
123    ZMQ_GSSAPI_PRINCIPAL_NAMETYPE,
124    ZMQ_GSSAPI_SERVICE_PRINCIPAL_NAMETYPE,
125    ZMQ_BINDTODEVICE,
126    ZMQ_MORE,
127    ZMQ_SHARED,
128    ZMQ_DONTWAIT,
129    ZMQ_SNDMORE,
130    ZMQ_NULL,
131    ZMQ_PLAIN,
132    ZMQ_CURVE,
133    ZMQ_GSSAPI,
134    ZMQ_GROUP_MAX_LENGTH,
135    ZMQ_EVENT_CONNECTED,
136    ZMQ_EVENT_CONNECT_DELAYED,
137    ZMQ_EVENT_CONNECT_RETRIED,
138    ZMQ_EVENT_LISTENING,
139    ZMQ_EVENT_BIND_FAILED,
140    ZMQ_EVENT_ACCEPTED,
141    ZMQ_EVENT_ACCEPT_FAILED,
142    ZMQ_EVENT_CLOSED,
143    ZMQ_EVENT_CLOSE_FAILED,
144    ZMQ_EVENT_DISCONNECTED,
145    ZMQ_EVENT_MONITOR_STOPPED,
146    ZMQ_EVENT_ALL,
147    ZMQ_EVENT_HANDSHAKE_FAILED_NO_DETAIL,
148    ZMQ_EVENT_HANDSHAKE_SUCCEEDED,
149    ZMQ_EVENT_HANDSHAKE_FAILED_PROTOCOL,
150    ZMQ_EVENT_HANDSHAKE_FAILED_AUTH,
151    ZMQ_PROTOCOL_ERROR_ZMTP_UNSPECIFIED,
152    ZMQ_PROTOCOL_ERROR_ZMTP_UNEXPECTED_COMMAND,
153    ZMQ_PROTOCOL_ERROR_ZMTP_INVALID_SEQUENCE,
154    ZMQ_PROTOCOL_ERROR_ZMTP_KEY_EXCHANGE,
155    ZMQ_PROTOCOL_ERROR_ZMTP_MALFORMED_COMMAND_UNSPECIFIED,
156    ZMQ_PROTOCOL_ERROR_ZMTP_MALFORMED_COMMAND_MESSAGE,
157    ZMQ_PROTOCOL_ERROR_ZMTP_MALFORMED_COMMAND_HELLO,
158    ZMQ_PROTOCOL_ERROR_ZMTP_MALFORMED_COMMAND_INITIATE,
159    ZMQ_PROTOCOL_ERROR_ZMTP_MALFORMED_COMMAND_ERROR,
160    ZMQ_PROTOCOL_ERROR_ZMTP_MALFORMED_COMMAND_READY,
161    ZMQ_PROTOCOL_ERROR_ZMTP_MALFORMED_COMMAND_WELCOME,
162    ZMQ_PROTOCOL_ERROR_ZMTP_INVALID_METADATA,
163    ZMQ_PROTOCOL_ERROR_ZMTP_CRYPTOGRAPHIC,
164    ZMQ_PROTOCOL_ERROR_ZMTP_MECHANISM_MISMATCH,
165    ZMQ_PROTOCOL_ERROR_ZAP_UNSPECIFIED,
166    ZMQ_PROTOCOL_ERROR_ZAP_MALFORMED_REPLY,
167    ZMQ_PROTOCOL_ERROR_ZAP_BAD_REQUEST_ID,
168    ZMQ_PROTOCOL_ERROR_ZAP_BAD_VERSION,
169    ZMQ_PROTOCOL_ERROR_ZAP_INVALID_STATUS_CODE,
170    ZMQ_PROTOCOL_ERROR_ZAP_INVALID_METADATA,
171
172    // These are "deprecated" in favor of the `zmq_poller` API, but are still
173    // used by `zmq`, and the `zmq_poller` API has been introduced only in
174    // 4.2.0, and have not been stabilized at least up until 4.3.1.
175    ZMQ_POLLIN,
176    ZMQ_POLLOUT,
177    ZMQ_POLLERR,
178    ZMQ_POLLPRI,
179
180    ZMQ_POLLITEMS_DFLT,
181
182    // Undeprecated types.
183    zmq_msg_t,
184    zmq_free_fn,
185
186    // Undeprecated and documented functions (or more generally, symbols). These
187    // must exist in the ABI of the oldest supported libzmq version, so
188    // extending this list requires bumping that.
189    zmq_pollitem_t,
190    zmq_version,
191    zmq_errno,
192    zmq_strerror,
193    zmq_ctx_new,
194    zmq_ctx_term,
195    zmq_ctx_shutdown,
196    zmq_ctx_set,
197    zmq_ctx_get,
198    zmq_msg_init,
199    zmq_msg_init_size,
200    zmq_msg_init_data,
201    zmq_msg_send,
202    zmq_msg_recv,
203    zmq_msg_close,
204    zmq_msg_move,
205    zmq_msg_copy,
206    zmq_msg_data,
207    zmq_msg_size,
208    zmq_msg_more,
209    zmq_msg_get,
210    zmq_msg_set,
211    zmq_msg_gets,
212    zmq_socket,
213    zmq_close,
214    zmq_setsockopt,
215    zmq_getsockopt,
216    zmq_bind,
217    zmq_connect,
218    zmq_unbind,
219    zmq_disconnect,
220    zmq_send,
221    zmq_send_const,
222    zmq_recv,
223    zmq_socket_monitor,
224    zmq_sendmsg,
225    zmq_recvmsg,
226    zmq_sendiov,
227    zmq_recviov,
228    zmq_poll,
229    zmq_proxy,
230    zmq_proxy_steerable,
231    zmq_has,
232    zmq_device,
233    zmq_z85_encode,
234    zmq_z85_decode,
235    zmq_curve_keypair,
236};
237
238#[allow(non_camel_case_types)]
239#[allow(dead_code)]
240#[allow(clippy::unreadable_literal)]
241mod ffi;