private NioState synchronousAdd(final NioChannelHandler handler) { try { final SelectableChannel channel = handler.getChannel(); channel.configureBlocking(false); final int interestSet = handler.getInterestSet(); final NioState nioState = handlers.get(channel); if (nioState != null) { if (!nioState.attemptUpdateInterest(interestSet)) { handler.onEnd(); return null; } nioState.handlers.add(handler); return nioState; } final NioState value = new NioState(channel); value.key = channel.register(selector, interestSet, value); value.handlers.add(handler); handlers.put(channel, value); return value; } catch (IOException failed) { handler.onEnd(); //already closed/cancelled return null; } }
private NioState synchronousAdd(final NioChannelHandler handler) { try { final SelectableChannel channel = handler.getChannel(); channel.configureBlocking(false); final int interestSet = handler.getInterestSet(); final NioState nioState = handlers.get(channel); if (nioState != null) { if (!nioState.attemptUpdateInterest(interestSet)) { handler.onEnd(); return null; } nioState.handlers.add(handler); return nioState; } final NioState value = new NioState(channel); value.key = channel.register(selector, interestSet, value); value.handlers.add(handler); handlers.put(channel, value); return value; } catch (IOException failed) { handler.onEnd(); //already closed/cancelled return null; } }
} else if (key.buffer == null) { final NioStateWrite handler = new NioStateWrite<>(accept, writeFailed, onBuffer); if (key.attemptUpdateInterest(handler.getInterestSet())) { handler.state = key; key.buffer = handler;
} else if (key.buffer == null) { final NioStateWrite handler = new NioStateWrite<>(accept, writeFailed, onBuffer); if (key.attemptUpdateInterest(handler.getInterestSet())) { handler.state = key; key.buffer = handler;