Class: ZMQ::Socket::Rep

Inherits:
ZMQ::Socket show all
Defined in:
lib/zmq/socket/rep.rb,
ext/rbczmq/socket.c

Constant Summary collapse

TYPE_STR =

ZMQ::Socket::Rep

A socket of type ZMQ::Socket::Rep is used by a service to receive requests from and send replies to a client. This socket type allows only an alternating sequence of ZMQ::Socket#recv and subsequent ZMQ::Socket#send calls. Each request received is fair-queued from among all clients, and each reply sent is routed to the client that issued the last request. If the original requester doesn't exist any more the reply is silently discarded.

When a ZMQ::Socket::Rep socket enters an exceptional state due to having reached the high water mark for a client, then any replies sent to the client in question shall be dropped until the exceptional state ends.

Summary of ZMQ::Socket#rep characteristics

Compatible peer sockets

ZMQ::Socket::Rep

Direction

Bidirectional

Send/receive pattern

Receive, Send, Receive, Send, …

Incoming routing strategy

Fair-queued

Outgoing routing strategy

Last peer

ZMQ::Socket#hwm option action

Drop

"REP"

Constants inherited from ZMQ::Socket

BOUND, CONNECTED, PENDING, PROTO_REXP

Instance Method Summary collapse

Methods inherited from ZMQ::Socket

#affinity, #affinity=, #backlog, #backlog=, #bind, #close, #connect, #connect_all, #endpoint, #endpoints, #events, #fd, handle_fsm_errors, #hwm, #hwm=, #identity=, #linger, #linger=, #mcast_loop=, #mcast_loop?, #monitor, #poll_readable?, #poll_writable?, #rate, #rate=, #raw=, #rcvbuf, #rcvbuf=, #rcvhwm, #rcvhwm=, #rcvmore?, #rcvtimeo, #rcvtimeo=, #readable?, #real_bind, #real_connect, #reconnect_ivl, #reconnect_ivl=, #reconnect_ivl_max, #reconnect_ivl_max=, #recovery_ivl, #recovery_ivl=, #recovery_ivl_msec, #recovery_ivl_msec=, #recv, #recv_frame, #recv_frame_nonblock, #recv_message, #recv_nonblock, #send, #send_message, #sendm, #sndbuf, #sndbuf=, #sndhwm, #sndhwm=, #sndtimeo, #sndtimeo=, #state, #subscribe, #swap, #swap=, #to_s, #type_str, #unsubscribe, unsupported_api, #verbose=, #writable?

Instance Method Details

#send_frame(frame, flags = 0) ⇒ Object

Raises:


33
34
35
36
# File 'lib/zmq/socket/rep.rb', line 33

def send_frame(frame, flags = 0)
  raise ZMQ::Error, "cannot send multiple frames on REP sockets" if (flags & ZMQ::Frame::MORE) == ZMQ::Frame::MORE
  super
end

#typeObject


26
27
28
# File 'lib/zmq/socket/rep.rb', line 26

def type
  ZMQ::REP
end