public TCPClientBuilder(BasicConfig cfg) { this.netParams = new NetworkingParams(cfg); }
public TCPClientBuilder host(String host) { netParams.address(host); return this; }
public ServerBuilder blockingAccept(boolean blockingAccept) { netParams.blockingAccept(blockingAccept); return this; }
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!"); } }
public RapidoidWorker(String name, final RapidoidHelper helper, NetworkingParams net, SSLContext sslContext) { super(name); this.bufSize = net.bufSizeKB() * 1024; this.noDelay = net.noDelay(); this.bufs = new BufGroup(bufSize, net.syncBufs()); this.serverProtocol = net.protocol(); this.helper = helper; this.sslContext = sslContext; this.maxPipeline = net.maxPipeline(); final int queueSize = ConfigUtil.micro() ? 1000 : 1000000; final int growFactor = ConfigUtil.micro() ? 2 : 10; this.connected = new ArrayBlockingQueue<>(queueSize); this.done = new SimpleList<>(queueSize / 10, growFactor); connections = Pools.create("connections", () -> newConnection(false), 100000); if (idleConnectionsCrawler != null) { idleConnectionsCrawler.register(allConnections); } }
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(); } }
@Override public void run() { RapidoidHelper helper = Cls.newInstance(net.helperClass(), net.exchangeClass()); helper.requestIdGen = workerIndex; // to generate UNIQUE request ID (+= MAX_IO_WORKERS) worker = new RapidoidWorker("server" + (workerIndex + 1), helper, net, sslContext); worker.run(); }
public ServerBuilder protocol(Protocol protocol) { netParams.protocol(protocol); return this; }
public ServerBuilder maxPipeline(long maxPipelineSize) { netParams.maxPipeline(maxPipelineSize); return this; }
public ServerBuilder helperClass(Class<? extends RapidoidHelper> helperClass) { netParams.helperClass(helperClass); return this; }
public ServerBuilder exchangeClass(Class<? extends DefaultExchange<?>> exchangeClass) { netParams.exchangeClass(exchangeClass); return this; }
public ServerBuilder bufSizeKB(int bufSizeKB) { netParams.bufSizeKB(bufSizeKB); return this; }
public TCPClientBuilder noDelay(boolean noDelay) { netParams.noDelay(noDelay); return this; }
public ServerBuilder port(int port) { netParams.port(port); return this; }
public ExtendedWorker(String name, RapidoidHelper helper, NetworkingParams net, SSLContext sslContext) { super(name); this.bufSize = net.bufSizeKB() * 1024; this.noDelay = net.noDelay(); this.bufs = new BufGroup(bufSize, net.syncBufs()); this.bufSizeLimit = 1024L * Conf.NET.entry("bufSizeLimit").or(1024); // in KB this.serverProtocol = net.protocol(); this.helper = helper; this.sslContext = sslContext; this.maxPipeline = net.maxPipeline(); final int queueSize = ConfigUtil.micro() ? 1000 : 1000000; final int growFactor = ConfigUtil.micro() ? 2 : 10; this.restarting = new ArrayBlockingQueue<>(queueSize); this.connecting = new ArrayBlockingQueue<>(queueSize); this.connected = new ArrayBlockingQueue<>(queueSize); this.done = new SimpleList<>(queueSize / 10, growFactor); this.dataIn = Insights.stats(name + ":datain"); this.dataOut = Insights.stats(name + ":dataout"); connections = Pools.create("connections", () -> newConnection(false), 100000); if (idleConnectionsCrawler != null) { idleConnectionsCrawler.register(allConnections); } }
public TCPClientBuilder protocol(Protocol protocol) { netParams.protocol(protocol); return this; }
public TCPClientBuilder maxPipeline(long maxPipelineSize) { netParams.maxPipeline(maxPipelineSize); return this; }
public TCPClientBuilder helperClass(Class<? extends RapidoidHelper> helperClass) { netParams.helperClass(helperClass); return this; }
public TCPClientBuilder exchangeClass(Class<? extends DefaultExchange<?>> exchangeClass) { netParams.exchangeClass(exchangeClass); return this; }