public abstract class io.netty.channel.nio.AbstractNioByteChannel extends io.netty.channel.nio.AbstractNioChannel
{
private static final io.netty.channel.ChannelMetadata METADATA;
private static final java.lang.String EXPECTED_TYPES;
private final java.lang.Runnable flushTask;
private boolean inputClosedSeenErrorOnRead;
protected void <init>(io.netty.channel.Channel, java.nio.channels.SelectableChannel)
{
io.netty.channel.Channel v;
java.nio.channels.SelectableChannel v;
io.netty.channel.nio.AbstractNioByteChannel v;
io.netty.channel.nio.AbstractNioByteChannel$1 v;
v := @this: io.netty.channel.nio.AbstractNioByteChannel;
v := @parameter: io.netty.channel.Channel;
v := @parameter: java.nio.channels.SelectableChannel;
specialinvoke v.<io.netty.channel.nio.AbstractNioChannel: void <init>(io.netty.channel.Channel,java.nio.channels.SelectableChannel,int)>(v, v, 1);
v = new io.netty.channel.nio.AbstractNioByteChannel$1;
specialinvoke v.<io.netty.channel.nio.AbstractNioByteChannel$1: void <init>(io.netty.channel.nio.AbstractNioByteChannel)>(v);
v.<io.netty.channel.nio.AbstractNioByteChannel: java.lang.Runnable flushTask> = v;
return;
}
protected abstract io.netty.channel.ChannelFuture shutdownInput();
protected boolean isInputShutdown0()
{
io.netty.channel.nio.AbstractNioByteChannel v;
v := @this: io.netty.channel.nio.AbstractNioByteChannel;
return 0;
}
protected io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe newUnsafe()
{
io.netty.channel.nio.AbstractNioByteChannel v;
io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe v;
v := @this: io.netty.channel.nio.AbstractNioByteChannel;
v = new io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe;
specialinvoke v.<io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe: void <init>(io.netty.channel.nio.AbstractNioByteChannel)>(v);
return v;
}
public io.netty.channel.ChannelMetadata metadata()
{
io.netty.channel.ChannelMetadata v;
io.netty.channel.nio.AbstractNioByteChannel v;
v := @this: io.netty.channel.nio.AbstractNioByteChannel;
v = <io.netty.channel.nio.AbstractNioByteChannel: io.netty.channel.ChannelMetadata METADATA>;
return v;
}
final boolean shouldBreakReadReady(io.netty.channel.ChannelConfig)
{
io.netty.channel.ChannelConfig v;
io.netty.channel.nio.AbstractNioByteChannel v;
boolean v, v, v, v;
v := @this: io.netty.channel.nio.AbstractNioByteChannel;
v := @parameter: io.netty.channel.ChannelConfig;
v = virtualinvoke v.<io.netty.channel.nio.AbstractNioByteChannel: boolean isInputShutdown0()>();
if v == 0 goto label;
v = v.<io.netty.channel.nio.AbstractNioByteChannel: boolean inputClosedSeenErrorOnRead>;
if v != 0 goto label;
v = staticinvoke <io.netty.channel.nio.AbstractNioByteChannel: boolean isAllowHalfClosure(io.netty.channel.ChannelConfig)>(v);
if v != 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private static boolean isAllowHalfClosure(io.netty.channel.ChannelConfig)
{
io.netty.channel.ChannelConfig v;
boolean v, v, v;
v := @parameter: io.netty.channel.ChannelConfig;
v = v instanceof io.netty.channel.socket.SocketChannelConfig;
if v == 0 goto label;
v = interfaceinvoke v.<io.netty.channel.socket.SocketChannelConfig: boolean isAllowHalfClosure()>();
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
protected final int doWrite0(io.netty.channel.ChannelOutboundBuffer) throws java.lang.Exception
{
io.netty.channel.ChannelOutboundBuffer v;
int v;
java.lang.Object v, v;
io.netty.channel.nio.AbstractNioByteChannel v;
v := @this: io.netty.channel.nio.AbstractNioByteChannel;
v := @parameter: io.netty.channel.ChannelOutboundBuffer;
v = virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: java.lang.Object current()>();
if v != null goto label;
return 0;
label:
v = virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: java.lang.Object current()>();
v = specialinvoke v.<io.netty.channel.nio.AbstractNioByteChannel: int doWriteInternal(io.netty.channel.ChannelOutboundBuffer,java.lang.Object)>(v, v);
return v;
}
private int doWriteInternal(io.netty.channel.ChannelOutboundBuffer, java.lang.Object) throws java.lang.Exception
{
java.lang.Error v;
long v, v, v, v, v;
byte v, v, v;
int v;
boolean v, v, v, v;
io.netty.channel.ChannelOutboundBuffer v;
java.lang.Object v;
io.netty.channel.nio.AbstractNioByteChannel v;
v := @this: io.netty.channel.nio.AbstractNioByteChannel;
v := @parameter: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: java.lang.Object;
v = v instanceof io.netty.buffer.ByteBuf;
if v == 0 goto label;
v = virtualinvoke v.<io.netty.buffer.ByteBuf: boolean isReadable()>();
if v != 0 goto label;
virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: boolean remove()>();
return 0;
label:
v = virtualinvoke v.<io.netty.channel.nio.AbstractNioByteChannel: int doWriteBytes(io.netty.buffer.ByteBuf)>(v);
if v <= 0 goto label;
virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: void progress(long)>(v);
v = virtualinvoke v.<io.netty.buffer.ByteBuf: boolean isReadable()>();
if v != 0 goto label;
virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: boolean remove()>();
label:
return 1;
label:
v = v instanceof io.netty.channel.FileRegion;
if v == 0 goto label;
v = interfaceinvoke v.<io.netty.channel.FileRegion: long transferred()>();
v = interfaceinvoke v.<io.netty.channel.FileRegion: long count()>();
v = v cmp v;
if v < 0 goto label;
virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: boolean remove()>();
return 0;
label:
v = virtualinvoke v.<io.netty.channel.nio.AbstractNioByteChannel: long doWriteFileRegion(io.netty.channel.FileRegion)>(v);
v = v cmp 0L;
if v <= 0 goto label;
virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: void progress(long)>(v);
v = interfaceinvoke v.<io.netty.channel.FileRegion: long transferred()>();
v = interfaceinvoke v.<io.netty.channel.FileRegion: long count()>();
v = v cmp v;
if v < 0 goto label;
virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: boolean remove()>();
label:
return 1;
label:
v = new java.lang.Error;
specialinvoke v.<java.lang.Error: void <init>()>();
throw v;
label:
return 2147483647;
}
protected void doWrite(io.netty.channel.ChannelOutboundBuffer) throws java.lang.Exception
{
io.netty.channel.ChannelOutboundBuffer v;
io.netty.channel.ChannelConfig v;
int v, v;
java.lang.Object v;
io.netty.channel.nio.AbstractNioByteChannel v;
boolean v;
v := @this: io.netty.channel.nio.AbstractNioByteChannel;
v := @parameter: io.netty.channel.ChannelOutboundBuffer;
v = virtualinvoke v.<io.netty.channel.nio.AbstractNioByteChannel: io.netty.channel.ChannelConfig config()>();
v = interfaceinvoke v.<io.netty.channel.ChannelConfig: int getWriteSpinCount()>();
label:
v = virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: java.lang.Object current()>();
if v != null goto label;
virtualinvoke v.<io.netty.channel.nio.AbstractNioByteChannel: void clearOpWrite()>();
return;
label:
v = specialinvoke v.<io.netty.channel.nio.AbstractNioByteChannel: int doWriteInternal(io.netty.channel.ChannelOutboundBuffer,java.lang.Object)>(v, v);
v = v - v;
if v > 0 goto label;
if v >= 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
virtualinvoke v.<io.netty.channel.nio.AbstractNioByteChannel: void incompleteWrite(boolean)>(v);
return;
}
protected final java.lang.Object filterOutboundMessage(java.lang.Object)
{
java.lang.UnsupportedOperationException v;
io.netty.buffer.ByteBuf v;
java.lang.Object v;
java.lang.String v, v, v;
io.netty.channel.nio.AbstractNioByteChannel v;
boolean v, v, v;
v := @this: io.netty.channel.nio.AbstractNioByteChannel;
v := @parameter: java.lang.Object;
v = v instanceof io.netty.buffer.ByteBuf;
if v == 0 goto label;
v = virtualinvoke v.<io.netty.buffer.ByteBuf: boolean isDirect()>();
if v == 0 goto label;
return v;
label:
v = virtualinvoke v.<io.netty.channel.nio.AbstractNioByteChannel: io.netty.buffer.ByteBuf newDirectBuffer(io.netty.buffer.ByteBuf)>(v);
return v;
label:
v = v instanceof io.netty.channel.FileRegion;
if v == 0 goto label;
return v;
label:
v = new java.lang.UnsupportedOperationException;
v = staticinvoke <io.netty.util.internal.StringUtil: java.lang.String simpleClassName(java.lang.Object)>(v);
v = <io.netty.channel.nio.AbstractNioByteChannel: java.lang.String EXPECTED_TYPES>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <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[])>("unsupported message type: \u0001\u0001");
specialinvoke v.<java.lang.UnsupportedOperationException: void <init>(java.lang.String)>(v);
throw v;
}
protected final void incompleteWrite(boolean)
{
io.netty.channel.nio.NioEventLoop v;
java.lang.Runnable v;
io.netty.channel.nio.AbstractNioByteChannel v;
boolean v;
v := @this: io.netty.channel.nio.AbstractNioByteChannel;
v := @parameter: boolean;
if v == 0 goto label;
virtualinvoke v.<io.netty.channel.nio.AbstractNioByteChannel: void setOpWrite()>();
goto label;
label:
virtualinvoke v.<io.netty.channel.nio.AbstractNioByteChannel: void clearOpWrite()>();
v = virtualinvoke v.<io.netty.channel.nio.AbstractNioByteChannel: io.netty.channel.nio.NioEventLoop eventLoop()>();
v = v.<io.netty.channel.nio.AbstractNioByteChannel: java.lang.Runnable flushTask>;
virtualinvoke v.<io.netty.channel.nio.NioEventLoop: void execute(java.lang.Runnable)>(v);
label:
return;
}
protected abstract long doWriteFileRegion(io.netty.channel.FileRegion) throws java.lang.Exception;
protected abstract int doReadBytes(io.netty.buffer.ByteBuf) throws java.lang.Exception;
protected abstract int doWriteBytes(io.netty.buffer.ByteBuf) throws java.lang.Exception;
protected final void setOpWrite()
{
java.nio.channels.SelectionKey v;
int v, v, v;
io.netty.channel.nio.AbstractNioByteChannel v;
boolean v;
v := @this: io.netty.channel.nio.AbstractNioByteChannel;
v = virtualinvoke v.<io.netty.channel.nio.AbstractNioByteChannel: java.nio.channels.SelectionKey selectionKey()>();
v = virtualinvoke v.<java.nio.channels.SelectionKey: boolean isValid()>();
if v != 0 goto label;
return;
label:
v = virtualinvoke v.<java.nio.channels.SelectionKey: int interestOps()>();
v = v & 4;
if v != 0 goto label;
v = v | 4;
virtualinvoke v.<java.nio.channels.SelectionKey: java.nio.channels.SelectionKey interestOps(int)>(v);
label:
return;
}
protected final void clearOpWrite()
{
java.nio.channels.SelectionKey v;
int v, v, v, v;
io.netty.channel.nio.AbstractNioByteChannel v;
boolean v;
v := @this: io.netty.channel.nio.AbstractNioByteChannel;
v = virtualinvoke v.<io.netty.channel.nio.AbstractNioByteChannel: java.nio.channels.SelectionKey selectionKey()>();
v = virtualinvoke v.<java.nio.channels.SelectionKey: boolean isValid()>();
if v != 0 goto label;
return;
label:
v = virtualinvoke v.<java.nio.channels.SelectionKey: int interestOps()>();
v = v & 4;
if v == 0 goto label;
v = (int) -5;
v = v & v;
virtualinvoke v.<java.nio.channels.SelectionKey: java.nio.channels.SelectionKey interestOps(int)>(v);
label:
return;
}
static void <clinit>()
{
io.netty.channel.ChannelMetadata v;
java.lang.String v, v, v;
v = new io.netty.channel.ChannelMetadata;
specialinvoke v.<io.netty.channel.ChannelMetadata: void <init>(boolean,int)>(0, 16);
<io.netty.channel.nio.AbstractNioByteChannel: io.netty.channel.ChannelMetadata METADATA> = v;
v = staticinvoke <io.netty.util.internal.StringUtil: java.lang.String simpleClassName(java.lang.Class)>(class "Lio/netty/buffer/ByteBuf;");
v = staticinvoke <io.netty.util.internal.StringUtil: java.lang.String simpleClassName(java.lang.Class)>(class "Lio/netty/channel/FileRegion;");
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <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[])>(" (expected: \u, \u)");
<io.netty.channel.nio.AbstractNioByteChannel: java.lang.String EXPECTED_TYPES> = v;
return;
}
}