public ServerBuilder workers(int workers) { netParams.workers(workers); return this; }
public TCPClientBuilder workers(int workers) { netParams.workers(workers); return this; }
private void validate() { U.must(net.workers() <= RapidoidWorker.MAX_IO_WORKERS, "Too many workers! Maximum = %s", RapidoidWorker.MAX_IO_WORKERS); }
private void openSockets() { ioWorkers = new ExtendedWorker[net.workers()]; for (int i = 0; i < ioWorkers.length; i++) { RapidoidHelper helper = Cls.newInstance(net.helperClass(), net.exchangeClass()); String workerName = "client" + (i + 1); ioWorkers[i] = new ExtendedWorker(workerName, helper, net, sslContext); new Thread(ioWorkers[i], workerName).start(); } for (int i = 0; i < ioWorkers.length; i++) { ioWorkers[i].waitToStart(); } }
private void initWorkers() { ioWorkers = new RapidoidWorker[net.workers()]; for (int i = 0; i < ioWorkers.length; i++) { RapidoidWorkerThread workerThread = new RapidoidWorkerThread(i, net, sslContext); workerThread.start(); ioWorkers[i] = workerThread.getWorker(); if (i > 0) { ioWorkers[i - 1].next = ioWorkers[i]; } } ioWorkers[ioWorkers.length - 1].next = ioWorkers[0]; currentWorker = ioWorkers[0]; for (RapidoidWorker worker : ioWorkers) { worker.waitToStart(); } }
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!"); } }