private void openSocket() throws IOException {
U.notNull(net.protocol(), "protocol");
U.notNull(net.helperClass(), "helperClass");
String blockingInfo = net.blockingAccept() ? "blocking" : "non-blocking";
Log.debug("Initializing server", "address", net.address(), "port", net.port(), "sync", net.syncBufs(), "accept", blockingInfo);
serverSocketChannel = ServerSocketChannel.open();
if ((serverSocketChannel.isOpen()) && (selector.isOpen())) {
serverSocketChannel.configureBlocking(net.blockingAccept());
ServerSocket socket = serverSocketChannel.socket();
Log.info("!Starting server", "!address", net.address(), "!port", net.port(), "I/O workers", net.workers(), "sync", net.syncBufs(), "accept", blockingInfo);
InetSocketAddress addr = new InetSocketAddress(net.address(), net.port());
socket.setReceiveBufferSize(16 * 1024);
socket.setReuseAddress(true);
socket.bind(addr, MAX_PENDING_CONNECTIONS);
Log.debug("Opened server socket", "address", addr);
if (!net.blockingAccept()) {
Log.debug("Registering accept selector");
serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);
}
initWorkers();
} else {
throw U.rte("Cannot open socket!");
}
}