this class expects to always use a FramedTransport for reading messages
# File /tmp/buildd/evernote-mode-0.10/ruby/lib/thrift/server/nonblocking_server.rb, line 26 26: def initialize(processor, server_transport, transport_factory=nil, protocol_factory=nil, num=20, logger=nil) 27: super(processor, server_transport, transport_factory, protocol_factory) 28: @num_threads = num 29: if logger.nil? 30: @logger = Logger.new(STDERR) 31: @logger.level = Logger::WARN 32: else 33: @logger = logger 34: end 35: @shutdown_semaphore = Mutex.new 36: @transport_semaphore = Mutex.new 37: end
# File /tmp/buildd/evernote-mode-0.10/ruby/lib/thrift/server/nonblocking_server.rb, line 39 39: def serve 40: @logger.info "Starting #{self}" 41: @server_transport.listen 42: @io_manager = start_io_manager 43: 44: begin 45: loop do 46: break if @server_transport.closed? 47: rd, = select([@server_transport], nil, nil, 0.1) 48: next if rd.nil? 49: socket = @server_transport.accept 50: @logger.debug "Accepted socket: #{socket.inspect}" 51: @io_manager.add_connection socket 52: end 53: rescue IOError => e 54: end 55: # we must be shutting down 56: @logger.info "#{self} is shutting down, goodbye" 57: ensure 58: @transport_semaphore.synchronize do 59: @server_transport.close 60: end 61: @io_manager.ensure_closed unless @io_manager.nil? 62: end
# File /tmp/buildd/evernote-mode-0.10/ruby/lib/thrift/server/nonblocking_server.rb, line 64 64: def shutdown(timeout = 0, block = true) 65: @shutdown_semaphore.synchronize do 66: return if @is_shutdown 67: @is_shutdown = true 68: end 69: # nonblocking is intended for calling from within a Handler 70: # but we can't change the order of operations here, so lets thread 71: shutdown_proc = lambda do 72: @io_manager.shutdown(timeout) 73: @transport_semaphore.synchronize do 74: @server_transport.close # this will break the accept loop 75: end 76: end 77: if block 78: shutdown_proc.call 79: else 80: Thread.new &shutdown_proc 81: end 82: end
# File /tmp/buildd/evernote-mode-0.10/ruby/lib/thrift/server/nonblocking_server.rb, line 86 86: def start_io_manager 87: iom = IOManager.new(@processor, @server_transport, @transport_factory, @protocol_factory, @num_threads, @logger) 88: iom.spawn 89: iom 90: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.