class Protobuf::Rpc::ZmqRunner

Public Class Methods

new(options) click to toggle source
# File lib/protobuf/rpc/servers/zmq_runner.rb, line 9
def initialize(options)
  @options = case
             when options.is_a?(OpenStruct) then
               options.marshal_dump
             when options.respond_to?(:to_hash) then
               options.to_hash
             else
               fail "Cannot parser Zmq Server - server options"
             end
end

Public Instance Methods

run() { || ... } click to toggle source
# File lib/protobuf/rpc/servers/zmq_runner.rb, line 20
def run
  @server = ::Protobuf::Rpc::Zmq::Server.new(@options)
  register_signals
  @server.run do
    yield if block_given?
  end
end
running?() click to toggle source
# File lib/protobuf/rpc/servers/zmq_runner.rb, line 28
def running?
  @server.try :running?
end
stop() click to toggle source
# File lib/protobuf/rpc/servers/zmq_runner.rb, line 32
def stop
  @server.try :stop
end

Private Instance Methods

register_signals() click to toggle source
# File lib/protobuf/rpc/servers/zmq_runner.rb, line 38
      def register_signals
        trap(:TRAP) do
          ::Thread.list.each do |thread|
            logger.info do
              <<-THREAD_TRACE
                #{thread.inspect}:
                  #{thread.backtrace.try(:join, $INPUT_RECORD_SEPARATOR)}"
              THREAD_TRACE
            end
          end
        end

        trap(:TTIN) do
          @server.add_worker
          logger.info { "Increased worker size to: #{@server.total_workers}" }
        end

        trap(:TTOU) do
          logger.info { "Current worker size: #{@server.workers.size}" }
          logger.info { "Current busy worker size: #{@server.busy_worker_count}" }
        end
      end