public abstract class io.netty.channel.nio.AbstractNioMessageChannel extends io.netty.channel.nio.AbstractNioChannel
{
boolean inputShutdown;
protected void <init>(io.netty.channel.Channel, java.nio.channels.SelectableChannel, int)
{
io.netty.channel.Channel v;
java.nio.channels.SelectableChannel v;
int v;
io.netty.channel.nio.AbstractNioMessageChannel v;
v := @this: io.netty.channel.nio.AbstractNioMessageChannel;
v := @parameter: io.netty.channel.Channel;
v := @parameter: java.nio.channels.SelectableChannel;
v := @parameter: int;
specialinvoke v.<io.netty.channel.nio.AbstractNioChannel: void <init>(io.netty.channel.Channel,java.nio.channels.SelectableChannel,int)>(v, v, v);
return;
}
protected io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe newUnsafe()
{
io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe v;
io.netty.channel.nio.AbstractNioMessageChannel v;
v := @this: io.netty.channel.nio.AbstractNioMessageChannel;
v = new io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe;
specialinvoke v.<io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe: void <init>(io.netty.channel.nio.AbstractNioMessageChannel)>(v);
return v;
}
protected void doBeginRead() throws java.lang.Exception
{
io.netty.channel.nio.AbstractNioMessageChannel v;
boolean v;
v := @this: io.netty.channel.nio.AbstractNioMessageChannel;
v = v.<io.netty.channel.nio.AbstractNioMessageChannel: boolean inputShutdown>;
if v == 0 goto label;
return;
label:
specialinvoke v.<io.netty.channel.nio.AbstractNioChannel: void doBeginRead()>();
return;
}
protected boolean continueReading(io.netty.channel.RecvByteBufAllocator$Handle)
{
io.netty.channel.RecvByteBufAllocator$Handle v;
io.netty.channel.nio.AbstractNioMessageChannel v;
boolean v;
v := @this: io.netty.channel.nio.AbstractNioMessageChannel;
v := @parameter: io.netty.channel.RecvByteBufAllocator$Handle;
v = interfaceinvoke v.<io.netty.channel.RecvByteBufAllocator$Handle: boolean continueReading()>();
return v;
}
protected void doWrite(io.netty.channel.ChannelOutboundBuffer) throws java.lang.Exception
{
int v, v, v, v, v, v, v, v, v;
boolean v, v, v, v;
java.nio.channels.SelectionKey v;
io.netty.channel.nio.AbstractNioMessageChannel v;
java.lang.Exception v;
io.netty.channel.ChannelOutboundBuffer v;
io.netty.channel.ChannelConfig v;
java.lang.Object v;
v := @this: io.netty.channel.nio.AbstractNioMessageChannel;
v := @parameter: io.netty.channel.ChannelOutboundBuffer;
v = virtualinvoke v.<io.netty.channel.nio.AbstractNioMessageChannel: java.nio.channels.SelectionKey selectionKey()>();
v = virtualinvoke v.<java.nio.channels.SelectionKey: int interestOps()>();
v = virtualinvoke v.<io.netty.channel.nio.AbstractNioMessageChannel: int maxMessagesPerWrite()>();
label:
if v <= 0 goto label;
v = virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: java.lang.Object current()>();
if v == null goto label;
label:
v = 0;
v = virtualinvoke v.<io.netty.channel.nio.AbstractNioMessageChannel: io.netty.channel.ChannelConfig config()>();
v = interfaceinvoke v.<io.netty.channel.ChannelConfig: int getWriteSpinCount()>();
v = v - 1;
label:
if v < 0 goto label;
v = virtualinvoke v.<io.netty.channel.nio.AbstractNioMessageChannel: boolean doWriteMessage(java.lang.Object,io.netty.channel.ChannelOutboundBuffer)>(v, v);
if v == 0 goto label;
v = 1;
goto label;
label:
v = v - 1;
goto label;
label:
if v == 0 goto label;
v = v - 1;
virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: boolean remove()>();
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<io.netty.channel.nio.AbstractNioMessageChannel: boolean continueOnWriteError()>();
if v == 0 goto label;
v = v - 1;
virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: boolean remove(java.lang.Throwable)>(v);
goto label;
label:
throw v;
label:
v = virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: boolean isEmpty()>();
if v == 0 goto label;
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);
goto label;
label:
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;
catch java.lang.Exception from label to label with label;
}
protected boolean continueOnWriteError()
{
io.netty.channel.nio.AbstractNioMessageChannel v;
v := @this: io.netty.channel.nio.AbstractNioMessageChannel;
return 0;
}
protected boolean closeOnReadError(java.lang.Throwable)
{
java.lang.Throwable v;
io.netty.channel.nio.AbstractNioMessageChannel v;
boolean v, v, v, v, v;
v := @this: io.netty.channel.nio.AbstractNioMessageChannel;
v := @parameter: java.lang.Throwable;
v = virtualinvoke v.<io.netty.channel.nio.AbstractNioMessageChannel: boolean isActive()>();
if v != 0 goto label;
return 1;
label:
v = v instanceof java.net.PortUnreachableException;
if v == 0 goto label;
return 0;
label:
v = v instanceof java.io.IOException;
if v == 0 goto label;
v = v instanceof io.netty.channel.ServerChannel;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
label:
return 1;
}
protected abstract int doReadMessages(java.util.List) throws java.lang.Exception;
protected abstract boolean doWriteMessage(java.lang.Object, io.netty.channel.ChannelOutboundBuffer) throws java.lang.Exception;
}