Sha256: 2410985efdfa336714c6a6bb7ff3397ef5eb259c5eaa297d5912f74d9b08171e

Contents?: true

Size: 951 Bytes

Versions: 7

Compression:

Stored size: 951 Bytes

Contents

require 'webrick/config'
require 'webrick/server'

module Protobuf
  module Rpc
    class Server < WEBrick::GenericServer
      def initialize(config={:Port => 9999}, default=WEBrick::Config::General)
        super config, default
        setup_handlers
      end

      def setup_handlers
        @handlers = {}
      end

      def get_handler(socket)
        @handlers[socket.readline.strip.to_sym]
      end

      def run(socket)
        handler = get_handler socket
        request = handler.request_class.new
        request.parse_from socket
        response = handler.response_class.new
        begin
          handler.process_request request, response
        rescue StandardError => ex
          @logger.error ex
        ensure
          begin
            response.serialize_to socket
          rescue Errno::EPIPE, Errno::ECONNRESET, Errno::ENOTCONN => ex
            @logger.error ex
          end
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
macks-ruby_protobuf-0.3.2.1 lib/protobuf/rpc/server.rb
macks-ruby_protobuf-0.3.2.2 lib/protobuf/rpc/server.rb
macks-ruby_protobuf-0.3.2.3 lib/protobuf/rpc/server.rb
macks-ruby_protobuf-0.3.3 lib/protobuf/rpc/server.rb
ruby_protobuf-0.3.3 lib/protobuf/rpc/server.rb
ruby_protobuf-0.3.2 lib/protobuf/rpc/server.rb
ruby_protobuf-0.3.0 lib/protobuf/rpc/server.rb