/** * Configure {@link InputReader}. */ @Override protected void configureInputBuffer(InputReader inputStream, Context context, HttpWorkerThread workerThread) { // Save the buffer before recycle final ByteBuffer associatedBuffer = inputStream.getByteBuffer(); inputStream.recycle(); // Restore the buffer inputStream.setByteBuffer(associatedBuffer); inputStream.setSelectionKey(context.getSelectionKey()); inputStream.setSecure(isSecure()); }
/** * Called when the Asynchronous Request Processing is resuming. */ public void taskEvent(TaskEvent event){ if (event.getStatus() == TaskEvent.COMPLETED || event.getStatus() == TaskEvent.ERROR){ ProcessorTask processor = (ProcessorTask) event.attachement(); // Should never happens. if (processor.getSelectionKey() == null){ logger.log(Level.WARNING,"AsyncProtocolFilter invalid state."); return; } InputReader is = (InputReader) processor.getInputStream(); is.getByteBuffer().clear(); byteBufferStreams.offer(is); SelectorThread selectorThread = processor.getSelectorThread(); if (processor.isKeepAlive() && !processor.isError()){ selectorThread.registerKey(processor.getSelectionKey()); } else { selectorThread.cancelKey(processor.getSelectionKey()); } processor.recycle(); selectorThread.returnTask(processor); } }
ByteBuffer nextBuffer = inputStream.getByteBuffer(); nextBuffer.clear(); ByteBuffer byteBuffer = workerThread.getByteBuffer();
ByteBuffer nextBuffer = inputStream.getByteBuffer(); nextBuffer.clear();
is.getByteBuffer().clear(); byteBufferStreams.offer(is);