Module: OMQ::FFI::Libzmq

Extended by:
FFI::Library
Defined in:
lib/omq/ffi/libzmq.rb

Overview

Minimal libzmq FFI bindings — only what OMQ needs.

Constant Summary collapse

ZMQ_PAIR =

Socket types

0
ZMQ_PUB =
1
ZMQ_SUB =
2
ZMQ_REQ =
3
ZMQ_REP =
4
ZMQ_DEALER =
5
ZMQ_ROUTER =
6
ZMQ_PULL =
7
ZMQ_PUSH =
8
ZMQ_XPUB =
9
ZMQ_XSUB =
10
ZMQ_SERVER =
12
ZMQ_CLIENT =
13
ZMQ_RADIO =
14
ZMQ_DISH =
15
ZMQ_GATHER =
16
ZMQ_SCATTER =
17
ZMQ_PEER =
19
ZMQ_CHANNEL =
20
SOCKET_TYPES =

Socket type name → constant

{
  PAIR: ZMQ_PAIR, PUB: ZMQ_PUB, SUB: ZMQ_SUB,
  REQ: ZMQ_REQ, REP: ZMQ_REP,
  DEALER: ZMQ_DEALER, ROUTER: ZMQ_ROUTER,
  PULL: ZMQ_PULL, PUSH: ZMQ_PUSH,
  XPUB: ZMQ_XPUB, XSUB: ZMQ_XSUB,
  SERVER: ZMQ_SERVER, CLIENT: ZMQ_CLIENT,
  RADIO: ZMQ_RADIO, DISH: ZMQ_DISH,
  GATHER: ZMQ_GATHER, SCATTER: ZMQ_SCATTER,
  PEER: ZMQ_PEER, CHANNEL: ZMQ_CHANNEL,
}.freeze
ZMQ_DONTWAIT =

Send/recv flags

1
ZMQ_SNDMORE =
2
ZMQ_IDENTITY =

Socket options

5
ZMQ_SUBSCRIBE =
6
ZMQ_UNSUBSCRIBE =
7
ZMQ_RCVMORE =
13
ZMQ_FD =
14
ZMQ_EVENTS =
15
ZMQ_LINGER =
17
ZMQ_SNDHWM =
23
ZMQ_RCVHWM =
24
ZMQ_RCVTIMEO =
27
ZMQ_SNDTIMEO =
28
ZMQ_MAXMSGSIZE =
22
ZMQ_LAST_ENDPOINT =
32
ZMQ_ROUTER_MANDATORY =
33
ZMQ_RECONNECT_IVL =
18
ZMQ_RECONNECT_IVL_MAX =
21
ZMQ_CONFLATE =
54
MSG_T_SIZE =

zmq_msg_t is 64 bytes on all platforms

64

Class Method Summary collapse

Class Method Details

.alloc_msgFFI::MemoryPointer

Allocates a zmq_msg_t on the heap.

Returns:

  • (FFI::MemoryPointer)


120
121
122
# File 'lib/omq/ffi/libzmq.rb', line 120

def self.alloc_msg
  ::FFI::MemoryPointer.new(MSG_T_SIZE)
end

.check!(rc, label = "zmq") ⇒ Object

Raises an error with the current zmq_errno message.



127
128
129
130
131
# File 'lib/omq/ffi/libzmq.rb', line 127

def self.check!(rc, label = "zmq")
  return rc if rc >= 0
  errno = zmq_errno
  raise "#{label}: #{zmq_strerror(errno)} (errno #{errno})"
end