class MaZMQ::Request

Attributes

state[R]

Public Class Methods

new() click to toggle source
Calls superclass method MaZMQ::SocketHandler::new
# File lib/ma-zmq/request.rb, line 5
def initialize
  @socket_type = ZMQ::REQ

  @last_try = nil

  @timeout = false
  # @cooldown
  super
end

Public Instance Methods

on_timeout(&block) click to toggle source
# File lib/ma-zmq/request.rb, line 61
def on_timeout(&block)
  return false if not @connection or block.arity != -1
  @connection.on_timeout(block)
end
reconnect() click to toggle source
# File lib/ma-zmq/request.rb, line 15
def reconnect
  close
  @socket = MaZMQ::context.socket(@socket_type)
  @addresses.each do |zmq_address|
    @socket.connect zmq_address
  end
end
recv_string() click to toggle source
Calls superclass method MaZMQ::SocketHandler#recv_string
# File lib/ma-zmq/request.rb, line 34
def recv_string
  case @state
    when :idle
      return false
    when :sending
      @last_try ||= Time.now if @timeout

      msg = super

      if msg.empty?
        if @timeout and (Time.now - @last_try) > @timeout
          @state = :timeout
        end
      else
        @last_try = nil if @timeout
        @state = :idle
      end
      return msg
    when :timeout
      return false
  end
end
send_string(msg) click to toggle source
Calls superclass method MaZMQ::SocketHandler#send_string
# File lib/ma-zmq/request.rb, line 23
def send_string(msg)
  case @state
    when :idle
      super(msg)
      @state = :sending
      return @state
    else
      return false
  end
end
timeout(secs) click to toggle source
# File lib/ma-zmq/request.rb, line 57
def timeout(secs)
  @timeout = secs
end