import java.nio.channels.AsynchronousSocketChannel; //导入方法依赖的package包/类
public static boolean checkBeforeIO(ChannelContext channelContext)
{
if (channelContext == null)
{
log.error("channelContext = null, {}", ThreadUtils.stackTrace());
return false;
}
boolean isClosed = channelContext.isClosed();
boolean isRemoved = channelContext.isRemoved();
AsynchronousSocketChannel asynchronousSocketChannel = channelContext.getAsynchronousSocketChannel();
Boolean isopen = null;
if (asynchronousSocketChannel != null)
{
isopen = asynchronousSocketChannel.isOpen();
if (isClosed || isRemoved)
{
if (isopen)
{
try
{
Aio.close(channelContext, "asynchronousSocketChannel is open, but channelContext isClosed: " + isClosed + ", isRemoved: " + isRemoved);
} catch (Exception e)
{
log.error(e.toString(), e);
}
}
log.error("{}, isopen:{}, isClosed:{}, isRemoved:{}, {} ", channelContext, isopen, channelContext.isClosed(), channelContext.isRemoved(), ThreadUtils.stackTrace());
return false;
}
} else
{
log.error("{}, asynchronousSocketChannel is null, isClosed:{}, isRemoved:{}, {} ", channelContext, channelContext.isClosed(), channelContext.isRemoved(),
ThreadUtils.stackTrace());
return false;
}
if (!isopen)
{
log.error("{}, isopen:{}, isClosed:{}, isRemoved:{}, {} ", channelContext, isopen, channelContext.isClosed(), channelContext.isRemoved(), ThreadUtils.stackTrace());
Aio.close(channelContext, "asynchronousSocketChannel is not open");
return false;
}
return true;
}