EpollSocketChannel extends AbstractEpollStreamChannel implements SocketChannel { public EpollTcpInfo tcpInfo() { return tcpInfo(new EpollTcpInfo()); } EpollSocketChannel();  EpollSocketChannel(int fd);   EpollSocketChannel(LinuxSocket fd, boolean active);   EpollSocketChannel(Channel parent, LinuxSocket fd, InetSocketAddress remoteAddress); EpollTcpInfo tcpInfo(); EpollTcpInfo tcpInfo(EpollTcpInfo info); @Override InetSocketAddress remoteAddress(); @Override InetSocketAddress localAddress(); @Override EpollSocketChannelConfig config(); @Override ServerSocketChannel parent();  }
@Test public void testTcpInfo() throws Exception { EventLoopGroup group = new EpollEventLoopGroup(1); try { Bootstrap bootstrap = new Bootstrap(); EpollSocketChannel ch = (EpollSocketChannel) bootstrap.group(group) .channel(EpollSocketChannel.class) .handler(new ChannelInboundHandlerAdapter()) .bind(new InetSocketAddress(0)).syncUninterruptibly().channel(); EpollTcpInfo info = ch.tcpInfo(); assertTcpInfo0(info); ch.close().syncUninterruptibly(); } finally { group.shutdownGracefully(); } }
@Test public void testTcpInfoReuse() throws Exception { EventLoopGroup group = new EpollEventLoopGroup(1); try { Bootstrap bootstrap = new Bootstrap(); EpollSocketChannel ch = (EpollSocketChannel) bootstrap.group(group) .channel(EpollSocketChannel.class) .handler(new ChannelInboundHandlerAdapter()) .bind(new InetSocketAddress(0)).syncUninterruptibly().channel(); EpollTcpInfo info = new EpollTcpInfo(); ch.tcpInfo(info); assertTcpInfo0(info); ch.close().syncUninterruptibly(); } finally { group.shutdownGracefully(); } }