class Protobuf::Rpc::Zmq::Worker

def run

def run
  poller = ::ZMQ::Poller.new
  poller.register_readable(@backend_socket)
  poller.register_readable(@shutdown_socket)
  # Send request to broker telling it we are ready
  write_to_backend([::Protobuf::Rpc::Zmq::WORKER_READY_MESSAGE])
  loop do
    rc = poller.poll(500)
    if rc == 0 && !running?
      break # The server was shutdown and no requests are pending
    elsif rc == -1
      break # Something went wrong
    elsif rc > 0
      ::Thread.current[:busy] = true
      process_request
      ::Thread.current[:busy] = false
    end
  end
ensure
  teardown
end