server transport TNonblockingServerTransport transport TNonblockingTransport transport TTransportException io nio channels SelectionKey tnonblockingserver abstractnonblockingserver args abstractnonblockingserverargs args args tnonblockingservertransport transport transport stopped_ selectacceptthread selectacceptthread_ tnonblockingserver abstractnonblockingserverargs override startthreads selectacceptthread_ selectacceptthread tnonblockingservertransport servertransport_ stopped_ selectacceptthread_.start logger.error override waitforshutdown joinselector joinselector selectacceptthread_.join interruptedexception override stop stopped_ selectacceptthread_ selectacceptthread_.wakeupselector override requestinvoke framebuffer framebuffer framebuffer.invoke isstopped selectacceptthread_.isstopped selectacceptthread abstractselectthread tnonblockingservertransport servertransport selectacceptthread tnonblockingservertransport servertransport this.servertransport servertransport servertransport.registerselector selector isstopped stopped_ run stopped_ select processinterestchanges selectionkey selectionkey selector.keys cleanupselectionkey selectionkey logger.error stopped_ select selector.select selectionkey selectedkeys selector.selectedkeys iterator stopped_ selectedkeys.hasnext selectionkey key selectedkeys.next selectedkeys.remove key.isvalid cleanupselectionkey key key.isacceptable handleaccept key.isreadable handleread key key.iswritable handlewrite key logger.warn key.interestops logger.warn handleaccept selectionkey clientkey tnonblockingtransport client client tnonblockingtransport servertransport.accept clientkey client.registerselector selector selectionkey.op_read framebuffer framebuffer framebuffer client clientkey selectacceptthread.this clientkey.attach framebuffer ttransportexception tte logger.warn tte tte.printstacktrace clientkey cleanupselectionkey clientkey client client.close