Method: Thrift::ThreadPoolServer#serve
- Defined in:
- lib/thrift/server/thread_pool_server.rb
#serve ⇒ Object
exceptions that happen in worker threads simply cause that thread to die and another to be spawned in its place.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/thrift/server/thread_pool_server.rb', line 42 def serve @server_transport.listen begin loop do @thread_q.push(:token) Thread.new do begin loop do client = @server_transport.accept trans = @transport_factory.get_transport(client) prot = @protocol_factory.get_protocol(trans) begin loop do @processor.process(prot, prot) end rescue Thrift::TransportException, Thrift::ProtocolException => e ensure trans.close end end rescue => e @exception_q.push(e) ensure @thread_q.pop # thread died! end end end ensure @server_transport.close end end |