Sha256: 52e4e7393f0370cee97a526b538038e60b13edc271a44d933f3c09365f1ccd3d

Contents?: true

Size: 1.04 KB

Versions: 6

Compression:

Stored size: 1.04 KB

Contents

module Protobuf
  module Rpc
    class EventedRunner 

      def self.stop
        EventMachine.stop_event_loop if EventMachine.reactor_running?
        Protobuf::Logger.info 'Shutdown complete'
      end

      def self.run(server)
        # Ensure errors thrown within EM are caught and logged appropriately
        EventMachine.error_handler do |error|
          if error.message == 'no acceptor'
            raise 'Failed binding to %s:%d (%s)' % [server.host, server.port, error.message]
          else
            Protobuf::Logger.error error.message
            Protobuf::Logger.error error.backtrace.join("\n")
          end
        end

        # Startup and run the rpc server
        EM.schedule do
          EventMachine.start_server(server.host, server.port, Protobuf::Rpc::EventedServer) && \
            Protobuf::Logger.info('RPC Server listening at %s:%d in %s' % [server.host, server.port, server.env])
        end

        # Join or start the reactor
        EM.reactor_running? ? EM.reactor_thread.join : EM.run
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
protobuf-1.1.3 lib/protobuf/rpc/servers/evented_runner.rb
protobuf-1.1.2 lib/protobuf/rpc/servers/evented_runner.rb
protobuf-1.1.1 lib/protobuf/rpc/servers/evented_runner.rb
protobuf-1.1.0.beta2 lib/protobuf/rpc/servers/evented_runner.rb
protobuf-1.1.0.beta1 lib/protobuf/rpc/servers/evented_runner.rb
protobuf-1.1.0.beta0 lib/protobuf/rpc/servers/evented_runner.rb