module MaZMQ::Proxy::Backend

Public Class Methods

new() click to toggle source
# File lib/ma-zmq/proxy/backend.rb, line 4
def initialize
  @sockets = []

  @timeout = nil # TODO individual timeouts for different sockets
end

Public Instance Methods

connect(protocol, address, port) click to toggle source
# File lib/ma-zmq/proxy/backend.rb, line 10
def connect(protocol, address, port)
  # validate as in SocketHandler
  request = MaZMQ::Request.new
  request.connect(protocol, address, port)
  if EM.reactor_running?
    request.timeout(@timeout)
    if @on_read_lambda.is_a? Proc
      request.on_read { |msg|
        @on_read_lambda.call(msg)
      }
    end
    if @on_timeout_lambda.is_a? Proc
      request.on_timeout {
        @on_timeout_lambda.call
      }
    end
  end

  #request.identity = "lb-#{@@id}"
  #@@id += 1
  @sockets << request
  @sockets.size - 1
end
disconnect(index) click to toggle source

def reconnect(index) end

# File lib/ma-zmq/proxy/backend.rb, line 37
def disconnect(index)
  socket = @sockets.delete_at(index)
  socket.close
end
on_read(&block) click to toggle source
# File lib/ma-zmq/proxy/backend.rb, line 59
def on_read(&block)
  return false if not EM.reactor_running?
  @on_read_lambda = block
  @sockets.each do |socket|
    socket.on_read { |msg|
      @on_read_lambda.call(msg)
    }
  end
end
on_timeout(&block) click to toggle source
# File lib/ma-zmq/proxy/backend.rb, line 49
def on_timeout(&block)  
  return false if not EM.reactor_running?
  @on_timeout_lambda = block
  @sockets.each do |socket|
    socket.on_timeout {
      @on_timeout_lambda.call
    }
  end
end
timeout(secs) click to toggle source
# File lib/ma-zmq/proxy/backend.rb, line 42
def timeout(secs)
  @timeout = secs
  @sockets.each do |s|
    s.timeout @timeout
  end
end