public abstract class org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader extends org.glassfish.grizzly.AbstractReader implements org.glassfish.grizzly.asyncqueue.AsyncQueueReader
{
private static final java.util.logging.Logger LOGGER;
public static final int DEFAULT_BUFFER_SIZE;
protected int defaultBufferSize;
protected final org.glassfish.grizzly.nio.NIOTransport transport;
private java.io.EOFException cachedEOFException;
public void <init>(org.glassfish.grizzly.nio.NIOTransport)
{
org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader v;
org.glassfish.grizzly.nio.NIOTransport v;
v := @this: org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader;
v := @parameter: org.glassfish.grizzly.nio.NIOTransport;
specialinvoke v.<org.glassfish.grizzly.AbstractReader: void <init>()>();
v.<org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: int defaultBufferSize> = 8192;
v.<org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: org.glassfish.grizzly.nio.NIOTransport transport> = v;
return;
}
public void read(org.glassfish.grizzly.Connection, org.glassfish.grizzly.Buffer, org.glassfish.grizzly.CompletionHandler, org.glassfish.grizzly.Interceptor)
{
org.glassfish.grizzly.Interceptor v;
org.glassfish.grizzly.asyncqueue.TaskQueue v;
org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord v;
int v, v, v, v, v;
org.glassfish.grizzly.ReadResult v;
boolean v, v, v, v, v, v;
org.glassfish.grizzly.Buffer v;
org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader v;
java.io.IOException v, v, v;
java.io.EOFException v;
org.glassfish.grizzly.Connection v;
org.glassfish.grizzly.CompletionHandler v;
v := @this: org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader;
v := @parameter: org.glassfish.grizzly.Connection;
v := @parameter: org.glassfish.grizzly.Buffer;
v := @parameter: org.glassfish.grizzly.CompletionHandler;
v := @parameter: org.glassfish.grizzly.Interceptor;
if v != null goto label;
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>("Connection is null");
staticinvoke <org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: void failure(java.lang.Throwable,org.glassfish.grizzly.CompletionHandler)>(v, v);
return;
label:
v = interfaceinvoke v.<org.glassfish.grizzly.Connection: boolean isOpen()>();
if v != 0 goto label;
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>("Connection is closed");
staticinvoke <org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: void failure(java.lang.Throwable,org.glassfish.grizzly.CompletionHandler)>(v, v);
return;
label:
v = virtualinvoke v.<org.glassfish.grizzly.nio.NIOConnection: org.glassfish.grizzly.asyncqueue.TaskQueue getAsyncReadQueue()>();
v = staticinvoke <org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord: org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord create(org.glassfish.grizzly.Connection,org.glassfish.grizzly.Buffer,org.glassfish.grizzly.CompletionHandler,org.glassfish.grizzly.Interceptor)>(v, v, v, v);
v = virtualinvoke v.<org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord: org.glassfish.grizzly.ReadResult getCurrentResult()>();
v = virtualinvoke v.<org.glassfish.grizzly.asyncqueue.TaskQueue: int reserveSpace(int)>(1);
if v != 1 goto label;
v = 1;
goto label;
label:
v = 0;
label:
if v == 0 goto label;
virtualinvoke v.<org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: int doRead(org.glassfish.grizzly.Connection,org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord)>(v, v);
v = specialinvoke v.<org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: int intercept(int,org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord,org.glassfish.grizzly.ReadResult)>(1, v, v);
v = v & 1;
if v != 0 goto label;
if v != null goto label;
v = virtualinvoke v.<org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord: boolean isFinished()>();
if v == 0 goto label;
label:
v = virtualinvoke v.<org.glassfish.grizzly.asyncqueue.TaskQueue: int releaseSpaceAndNotify(int)>(1);
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
virtualinvoke v.<org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord: void notifyComplete()>();
if v != 0 goto label;
virtualinvoke v.<org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: void onReadyToRead(org.glassfish.grizzly.Connection)>(v);
label:
specialinvoke v.<org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: int intercept(int,org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord,org.glassfish.grizzly.ReadResult)>(2, v, null);
virtualinvoke v.<org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord: void recycle()>();
goto label;
label:
v = v & 4;
if v == 0 goto label;
virtualinvoke v.<org.glassfish.grizzly.ReadResult: void setMessage(java.lang.Object)>(null);
virtualinvoke v.<org.glassfish.grizzly.ReadResult: void setReadSize(int)>(0);
virtualinvoke v.<org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord: void setMessage(java.lang.Object)>(null);
label:
virtualinvoke v.<org.glassfish.grizzly.asyncqueue.TaskQueue: void setCurrentElement(org.glassfish.grizzly.asyncqueue.AsyncQueueRecord)>(v);
virtualinvoke v.<org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord: void notifyIncomplete()>();
virtualinvoke v.<org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: void onReadyToRead(org.glassfish.grizzly.Connection)>(v);
specialinvoke v.<org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: int intercept(int,org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord,org.glassfish.grizzly.ReadResult)>(3, v, null);
goto label;
label:
virtualinvoke v.<org.glassfish.grizzly.asyncqueue.TaskQueue: void offer(org.glassfish.grizzly.asyncqueue.AsyncQueueRecord)>(v);
v = interfaceinvoke v.<org.glassfish.grizzly.Connection: boolean isOpen()>();
if v != 0 goto label;
v = virtualinvoke v.<org.glassfish.grizzly.asyncqueue.TaskQueue: boolean remove(org.glassfish.grizzly.asyncqueue.AsyncQueueRecord)>(v);
if v == 0 goto label;
v = new java.io.EOFException;
specialinvoke v.<java.io.EOFException: void <init>(java.lang.String)>("Connection is closed");
virtualinvoke v.<org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: void onReadFailure(org.glassfish.grizzly.Connection,org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord,java.io.IOException)>(v, v, v);
label:
goto label;
label:
v := @caughtexception;
virtualinvoke v.<org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: void onReadFailure(org.glassfish.grizzly.Connection,org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord,java.io.IOException)>(v, v, v);
label:
return;
catch java.io.IOException from label to label with label;
}
public final boolean isReady(org.glassfish.grizzly.Connection)
{
org.glassfish.grizzly.asyncqueue.TaskQueue v;
org.glassfish.grizzly.Connection v;
org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader v;
boolean v, v;
v := @this: org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader;
v := @parameter: org.glassfish.grizzly.Connection;
v = virtualinvoke v.<org.glassfish.grizzly.nio.NIOConnection: org.glassfish.grizzly.asyncqueue.TaskQueue getAsyncReadQueue()>();
if v == null goto label;
v = virtualinvoke v.<org.glassfish.grizzly.asyncqueue.TaskQueue: boolean isEmpty()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public org.glassfish.grizzly.asyncqueue.AsyncQueue$AsyncResult processAsync(org.glassfish.grizzly.Context)
{
org.glassfish.grizzly.Interceptor v;
org.glassfish.grizzly.asyncqueue.AsyncQueueRecord v;
java.util.logging.Level v;
org.glassfish.grizzly.asyncqueue.TaskQueue v;
org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord v;
int v, v, v, v, v, v;
java.lang.String v;
org.glassfish.grizzly.ReadResult v;
boolean v, v, v, v, v;
org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader v;
java.io.IOException v, v;
java.util.logging.Logger v;
java.lang.Exception v;
org.glassfish.grizzly.asyncqueue.AsyncQueue$AsyncResult v, v, v, v;
org.glassfish.grizzly.Connection v;
java.lang.Class v;
org.glassfish.grizzly.Context v;
v := @this: org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader;
v := @parameter: org.glassfish.grizzly.Context;
v = virtualinvoke v.<org.glassfish.grizzly.Context: org.glassfish.grizzly.Connection getConnection()>();
v = virtualinvoke v.<org.glassfish.grizzly.nio.NIOConnection: boolean isOpen()>();
if v != 0 goto label;
v = <org.glassfish.grizzly.asyncqueue.AsyncQueue$AsyncResult: org.glassfish.grizzly.asyncqueue.AsyncQueue$AsyncResult COMPLETE>;
return v;
label:
v = virtualinvoke v.<org.glassfish.grizzly.nio.NIOConnection: org.glassfish.grizzly.asyncqueue.TaskQueue getAsyncReadQueue()>();
v = 0;
v = null;
label:
v = virtualinvoke v.<org.glassfish.grizzly.asyncqueue.TaskQueue: org.glassfish.grizzly.asyncqueue.AsyncQueueRecord poll()>();
v = v;
if v == null goto label;
v = virtualinvoke v.<org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord: org.glassfish.grizzly.ReadResult getCurrentResult()>();
virtualinvoke v.<org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: int doRead(org.glassfish.grizzly.Connection,org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord)>(v, v);
v = virtualinvoke v.<org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord: org.glassfish.grizzly.Interceptor getInterceptor()>();
v = specialinvoke v.<org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: int intercept(int,org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord,org.glassfish.grizzly.ReadResult)>(1, v, v);
v = v & 1;
if v != 0 goto label;
if v != null goto label;
v = virtualinvoke v.<org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord: boolean isFinished()>();
if v == 0 goto label;
label:
v = virtualinvoke v.<org.glassfish.grizzly.Context: boolean isManualIOEventControl()>();
if v != 0 goto label;
v = virtualinvoke v.<org.glassfish.grizzly.asyncqueue.TaskQueue: int spaceInBytes()>();
v = v - 1;
if v > 0 goto label;
virtualinvoke v.<org.glassfish.grizzly.Context: void setManualIOEventControl()>();
label:
v = virtualinvoke v.<org.glassfish.grizzly.asyncqueue.TaskQueue: int releaseSpaceAndNotify(int)>(1);
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
virtualinvoke v.<org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord: void notifyComplete()>();
specialinvoke v.<org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: int intercept(int,org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord,org.glassfish.grizzly.ReadResult)>(2, v, null);
virtualinvoke v.<org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord: void recycle()>();
if v == 0 goto label;
goto label;
label:
v = v & 4;
if v == 0 goto label;
virtualinvoke v.<org.glassfish.grizzly.ReadResult: void setMessage(java.lang.Object)>(null);
virtualinvoke v.<org.glassfish.grizzly.ReadResult: void setReadSize(int)>(0);
virtualinvoke v.<org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord: void setMessage(java.lang.Object)>(null);
label:
virtualinvoke v.<org.glassfish.grizzly.asyncqueue.TaskQueue: void setCurrentElement(org.glassfish.grizzly.asyncqueue.AsyncQueueRecord)>(v);
virtualinvoke v.<org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord: void notifyIncomplete()>();
specialinvoke v.<org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: int intercept(int,org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord,org.glassfish.grizzly.ReadResult)>(3, v, null);
v = <org.glassfish.grizzly.asyncqueue.AsyncQueue$AsyncResult: org.glassfish.grizzly.asyncqueue.AsyncQueue$AsyncResult INCOMPLETE>;
label:
return v;
label:
if v != 0 goto label;
v = <org.glassfish.grizzly.asyncqueue.AsyncQueue$AsyncResult: org.glassfish.grizzly.asyncqueue.AsyncQueue$AsyncResult EXPECTING_MORE>;
label:
return v;
label:
v := @caughtexception;
virtualinvoke v.<org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: void onReadFailure(org.glassfish.grizzly.Connection,org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord,java.io.IOException)>(v, v, v);
goto label;
label:
v := @caughtexception;
v = <org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: java.util.logging.Logger LOGGER>;
v = <java.util.logging.Level: java.util.logging.Level SEVERE>;
virtualinvoke v.<java.util.logging.Logger: void log(java.util.logging.Level,java.lang.String,java.lang.Throwable)>(v, "Unexpected exception occurred in AsyncQueueReader", v);
v = new java.io.IOException;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class,java.lang.String)>(v, "Unexpected exception occurred in AsyncQueueReader") <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001: \u0001");
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>(v);
virtualinvoke v.<org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: void onReadFailure(org.glassfish.grizzly.Connection,org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord,java.io.IOException)>(v, v, v);
label:
v = <org.glassfish.grizzly.asyncqueue.AsyncQueue$AsyncResult: org.glassfish.grizzly.asyncqueue.AsyncQueue$AsyncResult COMPLETE>;
return v;
catch java.io.IOException from label to label with label;
catch java.io.IOException from label to label with label;
catch java.lang.Exception from label to label with label;
catch java.lang.Exception from label to label with label;
}
public void onClose(org.glassfish.grizzly.Connection)
{
org.glassfish.grizzly.asyncqueue.TaskQueue v;
org.glassfish.grizzly.Connection v;
org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader v;
java.io.EOFException v, v;
org.glassfish.grizzly.asyncqueue.AsyncQueueRecord v;
boolean v;
v := @this: org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader;
v := @parameter: org.glassfish.grizzly.Connection;
v = virtualinvoke v.<org.glassfish.grizzly.nio.NIOConnection: org.glassfish.grizzly.asyncqueue.TaskQueue getAsyncReadQueue()>();
v = virtualinvoke v.<org.glassfish.grizzly.asyncqueue.TaskQueue: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: java.io.EOFException cachedEOFException>;
if v != null goto label;
v = new java.io.EOFException;
specialinvoke v.<java.io.EOFException: void <init>(java.lang.String)>("Connection closed");
v = v;
v.<org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: java.io.EOFException cachedEOFException> = v;
label:
v = virtualinvoke v.<org.glassfish.grizzly.asyncqueue.TaskQueue: org.glassfish.grizzly.asyncqueue.AsyncQueueRecord poll()>();
if v == null goto label;
virtualinvoke v.<org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord: void notifyFailure(java.lang.Throwable)>(v);
goto label;
label:
return;
}
public final void close()
{
org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader v;
v := @this: org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader;
return;
}
protected final int doRead(org.glassfish.grizzly.Connection, org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord) throws java.io.IOException
{
org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader v;
java.io.EOFException v;
org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord v;
int v, v;
org.glassfish.grizzly.Connection v;
java.lang.Object v;
org.glassfish.grizzly.ReadResult v;
v := @this: org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader;
v := @parameter: org.glassfish.grizzly.Connection;
v := @parameter: org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord;
v = virtualinvoke v.<org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord: java.lang.Object getMessage()>();
v = virtualinvoke v.<org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord: org.glassfish.grizzly.ReadResult getCurrentResult()>();
v = virtualinvoke v.<org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: int read0(org.glassfish.grizzly.Connection,org.glassfish.grizzly.Buffer,org.glassfish.grizzly.ReadResult)>(v, v, v);
v = (int) -1;
if v != v goto label;
v = new java.io.EOFException;
specialinvoke v.<java.io.EOFException: void <init>()>();
throw v;
label:
return v;
}
protected final void onReadFailure(org.glassfish.grizzly.Connection, org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord, java.io.IOException)
{
org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord v;
org.glassfish.grizzly.Connection v;
org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader v;
java.io.IOException v;
v := @this: org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader;
v := @parameter: org.glassfish.grizzly.Connection;
v := @parameter: org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord;
v := @parameter: java.io.IOException;
if v == null goto label;
virtualinvoke v.<org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord: void notifyFailure(java.lang.Throwable)>(v);
label:
interfaceinvoke v.<org.glassfish.grizzly.Connection: void closeSilently()>();
return;
}
private static void failure(java.lang.Throwable, org.glassfish.grizzly.CompletionHandler)
{
java.lang.Throwable v;
org.glassfish.grizzly.CompletionHandler v;
v := @parameter: java.lang.Throwable;
v := @parameter: org.glassfish.grizzly.CompletionHandler;
if v == null goto label;
interfaceinvoke v.<org.glassfish.grizzly.CompletionHandler: void failed(java.lang.Throwable)>(v);
label:
return;
}
private int intercept(int, org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord, org.glassfish.grizzly.ReadResult)
{
org.glassfish.grizzly.Interceptor v;
org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord v;
int v, v;
org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader v;
org.glassfish.grizzly.ReadResult v;
v := @this: org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader;
v := @parameter: int;
v := @parameter: org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord;
v := @parameter: org.glassfish.grizzly.ReadResult;
v = virtualinvoke v.<org.glassfish.grizzly.asyncqueue.AsyncReadQueueRecord: org.glassfish.grizzly.Interceptor getInterceptor()>();
if v == null goto label;
v = interfaceinvoke v.<org.glassfish.grizzly.Interceptor: int intercept(int,java.lang.Object,java.lang.Object)>(v, v, v);
return v;
label:
return 0;
}
protected abstract int read0(org.glassfish.grizzly.Connection, org.glassfish.grizzly.Buffer, org.glassfish.grizzly.ReadResult) throws java.io.IOException;
protected abstract void onReadyToRead(org.glassfish.grizzly.Connection) throws java.io.IOException;
static void <clinit>()
{
java.util.logging.Logger v;
v = staticinvoke <org.glassfish.grizzly.Grizzly: java.util.logging.Logger logger(java.lang.Class)>(class "Lorg/glassfish/grizzly/nio/AbstractNIOAsyncQueueReader;");
<org.glassfish.grizzly.nio.AbstractNIOAsyncQueueReader: java.util.logging.Logger LOGGER> = v;
return;
}
}