class ThriftServer::ThreadedServer

Attributes

port[RW]

Public Instance Methods

log(logger) click to toggle source
# File lib/thrift_server/threaded_server.rb, line 28
def log(logger)
  subscribe LogSubscriber.new(logger)
  subscribe ThriftServer::LogSubscriber.new(logger)
end
metrics(statsd) click to toggle source
# File lib/thrift_server/threaded_server.rb, line 33
def metrics(statsd)
  subscribe ServerMetricsSubscriber.new(statsd)
  subscribe RpcMetricsSubscriber.new(statsd)
end
protocol() click to toggle source
# File lib/thrift_server/threaded_server.rb, line 38
def protocol
  @protocol_factory
end
serve() click to toggle source

NOTE: this is a copy of the upstream code with instrumentation added.

# File lib/thrift_server/threaded_server.rb, line 57
def serve
  begin
    @server_transport.listen
    loop do
      client = @server_transport.accept

      remote_address = client.handle.remote_address
      publish :server_connection_opened, remote_address

      trans = @transport_factory.get_transport(client)
      prot = @protocol_factory.get_protocol(trans)

      Thread.new(prot, trans) do |p, t|
        begin
          loop do
            @processor.process(p, p)
          end
        rescue Thrift::TransportException, Thrift::ProtocolException
        ensure
          publish :server_connection_closed, remote_address

          t.close
        end
      end
    end
  ensure
    @server_transport.close
  end
end
server_transport() click to toggle source
# File lib/thrift_server/threaded_server.rb, line 46
def server_transport
  @server_transport
end
start(dry_run: false) click to toggle source
# File lib/thrift_server/threaded_server.rb, line 50
def start(dry_run: false)
  publish :server_start, self

  serve unless dry_run
end
transport() click to toggle source
# File lib/thrift_server/threaded_server.rb, line 42
def transport
  @transport_factory
end