class AgentZMQ::SubAgent

Attributes

name[R]

Public Class Methods

new(name) click to toggle source
# File lib/agent_zmq/agents/sub_agent.rb, line 13
def initialize name
  @name=name
  @socket_opts=[]

  @mutex=Mutex.new
  @read_thread=nil
  @do_run_read_thread = true
end

Public Instance Methods

do_read() click to toggle source
# File lib/agent_zmq/agents/sub_agent.rb, line 22
def do_read 
  while true 
    @mutex.synchronize do
      return unless @do_run_read_thread
    end

    @zmq_poller.poll(1000)

    @zmq_poller.readables.each do |sock|
      add_msg AgentZMQ::Helpers.read_msg sock
    end
  end

  zmq_socket.close 
end
reset() click to toggle source
# File lib/agent_zmq/agents/sub_agent.rb, line 62
def reset
  clear
end
sock_type() click to toggle source
# File lib/agent_zmq/agents/sub_agent.rb, line 38
def sock_type
  zmq_context.socket(ZMQ::SUB)
end
start() click to toggle source
# File lib/agent_zmq/agents/sub_agent.rb, line 50
def start
  start_read_thread
end
start_read_thread() click to toggle source
# File lib/agent_zmq/agents/sub_agent.rb, line 43
def start_read_thread
  @zmq_poller = ZMQ::Poller.new
  @zmq_poller.register(zmq_socket, ZMQ::POLLIN)

  @read_thread = Thread.new {do_read}
end
stop() click to toggle source
# File lib/agent_zmq/agents/sub_agent.rb, line 54
def stop
  @mutex.synchronize do
    @do_run_read_thread = false
  end
  @read_thread.join
  zmq_socket.close
end