@Override protected void close(SelectionKey k) { NioServerSocketChannel ch = (NioServerSocketChannel) k.attachment(); close(ch, succeededFuture(ch)); }
private static void handleServerSocket(ChannelEvent e) { if (!(e instanceof ChannelStateEvent)) { return; } ChannelStateEvent event = (ChannelStateEvent) e; NioServerSocketChannel channel = (NioServerSocketChannel) event.getChannel(); ChannelFuture future = event.getFuture(); ChannelState state = event.getState(); Object value = event.getValue(); switch (state) { case OPEN: if (Boolean.FALSE.equals(value)) { ((NioServerBoss) channel.boss).close(channel, future); } break; case BOUND: if (value != null) { ((NioServerBoss) channel.boss).bind(channel, future, (SocketAddress) value); } else { ((NioServerBoss) channel.boss).close(channel, future); } break; default: break; } }
public void run() { boolean bound = false; boolean registered = false; try { channel.socket.socket().bind(localAddress, channel.getConfig().getBacklog()); bound = true; future.setSuccess(); fireChannelBound(channel, channel.getLocalAddress()); channel.socket.register(selector, SelectionKey.OP_ACCEPT, channel); registered = true; } catch (Throwable t) { future.setFailure(t); fireExceptionCaught(channel, t); } finally { if (!registered && bound) { close(channel, future); } } } }
@Override protected void close(SelectionKey k) { NioServerSocketChannel ch = (NioServerSocketChannel) k.attachment(); close(ch, succeededFuture(ch)); }
@Override public void run() { boolean bound = false; boolean registered = false; try { channel.socket.socket().bind(localAddress, channel.getConfig().getBacklog()); bound = true; future.setSuccess(); fireChannelBound(channel, channel.getLocalAddress()); channel.socket.register(selector, SelectionKey.OP_ACCEPT, channel); registered = true; } catch (Throwable t) { future.setFailure(t); fireExceptionCaught(channel, t); } finally { if (!registered && bound) { close(channel, future); } } } }