public static AsyncReadQueueRecord create(final Connection connection, final Buffer message, final CompletionHandler completionHandler, final Interceptor<ReadResult> interceptor) { final AsyncReadQueueRecord asyncReadQueueRecord = ThreadCache.takeFromCache(CACHE_IDX); if (asyncReadQueueRecord != null) { asyncReadQueueRecord.isRecycled = false; asyncReadQueueRecord.set(connection, message, completionHandler, interceptor); return asyncReadQueueRecord; } return new AsyncReadQueueRecord(connection, message, completionHandler, interceptor); }
@Override public void recycle() { checkRecycled(); reset(); isRecycled = true; if (Grizzly.isTrackingThreadCache()) { recycleTrack = new DebugPoint(new Exception(), Thread.currentThread().getName()); } ThreadCache.putToCache(CACHE_IDX, this); } }
/** * Performs real read on the NIO channel * * @param connection the {@link Connection} to read from * @param queueRecord the record to be read to * @throws java.io.IOException */ final protected int doRead(final Connection connection, final AsyncReadQueueRecord queueRecord) throws IOException { final Object message = queueRecord.getMessage(); final Buffer buffer = (Buffer) message; final ReadResult currentResult = queueRecord.getCurrentResult(); final int readBytes = read0(connection, buffer, currentResult); if (readBytes == -1) { throw new EOFException(); } return readBytes; }
final AsyncReadQueueRecord queueRecord = AsyncReadQueueRecord.create( connection, buffer, completionHandler, interceptor); queueRecord.getCurrentResult(); || (interceptor == null && queueRecord.isFinished())) { // if direct read is completed queueRecord.notifyComplete(); queueRecord.recycle(); } else { // If direct read is not finished currentResult.setMessage(null); currentResult.setReadSize(0); queueRecord.setMessage(null); queueRecord.notifyIncomplete(); onReadyToRead(connection);
connectionQueue.poll()) != null) { final ReadResult currentResult = queueRecord.getCurrentResult(); doRead(nioConnection, queueRecord); queueRecord.getInterceptor(); || (interceptor == null && queueRecord.isFinished())) { queueRecord.notifyComplete(); queueRecord.recycle(); currentResult.setMessage(null); currentResult.setReadSize(0); queueRecord.setMessage(null); queueRecord.notifyIncomplete(); intercept(Reader.INCOMPLETE_EVENT, queueRecord, null);
protected final void onReadFailure(final Connection connection, final AsyncReadQueueRecord failedRecord, final IOException e) { if (failedRecord != null) { failedRecord.notifyFailure(e); } connection.closeSilently(); }
protected void addRecord(Connection connection, Buffer buffer, CompletionHandler completionHandler, Interceptor<ReadResult> interceptor) { final AsyncReadQueueRecord record = AsyncReadQueueRecord.create( connection, buffer, completionHandler, interceptor); ((UDPNIOConnection) connection).getAsyncReadQueue().offer(record); }
private int intercept(final int event, final AsyncReadQueueRecord asyncQueueRecord, final ReadResult currentResult) { final Interceptor<ReadResult> interceptor = asyncQueueRecord.getInterceptor(); if (interceptor != null) { return interceptor.intercept(event, asyncQueueRecord, currentResult); } return Interceptor.DEFAULT; }
public final Interceptor getInterceptor() { checkRecycled(); return interceptor; }
final AsyncReadQueueRecord queueRecord = AsyncReadQueueRecord.create( connection, buffer, completionHandler, interceptor); queueRecord.getCurrentResult(); || (interceptor == null && queueRecord.isFinished())) { // if direct read is completed queueRecord.notifyComplete(); queueRecord.recycle(); } else { // If direct read is not finished currentResult.setMessage(null); currentResult.setReadSize(0); queueRecord.setMessage(null); queueRecord.notifyIncomplete(); onReadyToRead(connection);
connectionQueue.poll()) != null) { final ReadResult currentResult = queueRecord.getCurrentResult(); doRead(nioConnection, queueRecord); queueRecord.getInterceptor(); || (interceptor == null && queueRecord.isFinished())) { queueRecord.notifyComplete(); queueRecord.recycle(); currentResult.setMessage(null); currentResult.setReadSize(0); queueRecord.setMessage(null); queueRecord.notifyIncomplete(); intercept(Reader.INCOMPLETE_EVENT, queueRecord, null);
protected final void onReadFailure(final Connection connection, final AsyncReadQueueRecord failedRecord, final IOException e) { if (failedRecord != null) { failedRecord.notifyFailure(e); } connection.closeSilently(); }
protected void addRecord(Connection connection, Buffer buffer, CompletionHandler completionHandler, Interceptor<ReadResult> interceptor) { final AsyncReadQueueRecord record = AsyncReadQueueRecord.create( connection, buffer, completionHandler, interceptor); ((UDPNIOConnection) connection).getAsyncReadQueue().offer(record); }
private int intercept(final int event, final AsyncReadQueueRecord asyncQueueRecord, final ReadResult currentResult) { final Interceptor<ReadResult> interceptor = asyncQueueRecord.getInterceptor(); if (interceptor != null) { return interceptor.intercept(event, asyncQueueRecord, currentResult); } return Interceptor.DEFAULT; }
public final Interceptor getInterceptor() { checkRecycled(); return interceptor; }
final AsyncReadQueueRecord queueRecord = AsyncReadQueueRecord.create( connection, buffer, completionHandler, interceptor); queueRecord.getCurrentResult(); || (interceptor == null && queueRecord.isFinished())) { // if direct read is completed queueRecord.notifyComplete(); queueRecord.recycle(); } else { // If direct read is not finished currentResult.setMessage(null); currentResult.setReadSize(0); queueRecord.setMessage(null); queueRecord.notifyIncomplete(); onReadyToRead(connection);
connectionQueue.poll()) != null) { final ReadResult currentResult = queueRecord.getCurrentResult(); doRead(nioConnection, queueRecord); queueRecord.getInterceptor(); || (interceptor == null && queueRecord.isFinished())) { queueRecord.notifyComplete(); queueRecord.recycle(); currentResult.setMessage(null); currentResult.setReadSize(0); queueRecord.setMessage(null); queueRecord.notifyIncomplete(); intercept(Reader.INCOMPLETE_EVENT, queueRecord, null);
@Override public void recycle() { checkRecycled(); reset(); isRecycled = true; if (Grizzly.isTrackingThreadCache()) { recycleTrack = new DebugPoint(new Exception(), Thread.currentThread().getName()); } ThreadCache.putToCache(CACHE_IDX, this); } }
public static AsyncReadQueueRecord create(final Connection connection, final Buffer message, final CompletionHandler completionHandler, final Interceptor<ReadResult> interceptor) { final AsyncReadQueueRecord asyncReadQueueRecord = ThreadCache.takeFromCache(CACHE_IDX); if (asyncReadQueueRecord != null) { asyncReadQueueRecord.isRecycled = false; asyncReadQueueRecord.set(connection, message, completionHandler, interceptor); return asyncReadQueueRecord; } return new AsyncReadQueueRecord(connection, message, completionHandler, interceptor); }
/** * Performs real read on the NIO channel * * @param connection the {@link Connection} to read from * @param queueRecord the record to be read to * @throws java.io.IOException */ final protected int doRead(final Connection connection, final AsyncReadQueueRecord queueRecord) throws IOException { final Object message = queueRecord.getMessage(); final Buffer buffer = (Buffer) message; final ReadResult currentResult = queueRecord.getCurrentResult(); final int readBytes = read0(connection, buffer, currentResult); if (readBytes == -1) { throw new EOFException(); } return readBytes; }