io.vertx.core.net.NetServerOptions.java Source code

Java tutorial

Introduction

Here is the source code for io.vertx.core.net.NetServerOptions.java

Source

/*
 * Copyright (c) 2011-2019 Contributors to the Eclipse Foundation
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
 * which is available at https://www.apache.org/licenses/LICENSE-2.0.
 *
 * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
 */

package io.vertx.core.net;

import io.vertx.codegen.annotations.DataObject;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.http.ClientAuth;
import io.vertx.core.json.JsonObject;

import java.util.Set;
import java.util.concurrent.TimeUnit;

/**
 * Options for configuring a {@link io.vertx.core.net.NetServer}.
 *
 * @author <a href="http://tfox.org">Tim Fox</a>
 */
@DataObject(generateConverter = true, publicConverter = false)
public class NetServerOptions extends TCPSSLOptions {

    // Server specific HTTP stuff

    /**
     * The default port to listen on = 0 (meaning a random ephemeral free port will be chosen)
     */
    public static final int DEFAULT_PORT = 0;

    /**
     * The default host to listen on = "0.0.0.0" (meaning listen on all available interfaces).
     */
    public static final String DEFAULT_HOST = "0.0.0.0";

    /**
     * The default accept backlog = 1024
     */
    public static final int DEFAULT_ACCEPT_BACKLOG = -1;

    /**
     * Default value of whether client auth is required (SSL/TLS) = No
     */
    public static final ClientAuth DEFAULT_CLIENT_AUTH = ClientAuth.NONE;

    /**
     * Default value of whether the server supports SNI = false
     */
    public static final boolean DEFAULT_SNI = false;

    private int port;
    private String host;
    private int acceptBacklog;
    private ClientAuth clientAuth;
    private boolean sni;

    /**
     * Default constructor
     */
    public NetServerOptions() {
        super();
        init();
    }

    /**
     * Copy constructor
     *
     * @param other  the options to copy
     */
    public NetServerOptions(NetServerOptions other) {
        super(other);
        this.port = other.getPort();
        this.host = other.getHost();
        this.acceptBacklog = other.getAcceptBacklog();
        this.clientAuth = other.getClientAuth();
        this.sni = other.isSni();
    }

    /**
     * Create some options from JSON
     *
     * @param json  the JSON
     */
    public NetServerOptions(JsonObject json) {
        super(json);
        init();
        NetServerOptionsConverter.fromJson(json, this);
    }

    /**
     * Convert to JSON
     *
     * @return the JSON
     */
    public JsonObject toJson() {
        JsonObject json = super.toJson();
        NetServerOptionsConverter.toJson(this, json);
        return json;
    }

    @Override
    public NetServerOptions setSendBufferSize(int sendBufferSize) {
        super.setSendBufferSize(sendBufferSize);
        return this;
    }

    @Override
    public NetServerOptions setReceiveBufferSize(int receiveBufferSize) {
        super.setReceiveBufferSize(receiveBufferSize);
        return this;
    }

    @Override
    public NetServerOptions setReuseAddress(boolean reuseAddress) {
        super.setReuseAddress(reuseAddress);
        return this;
    }

    @Override
    public NetServerOptions setReusePort(boolean reusePort) {
        super.setReusePort(reusePort);
        return this;
    }

    @Override
    public NetServerOptions setTrafficClass(int trafficClass) {
        super.setTrafficClass(trafficClass);
        return this;
    }

    @Override
    public NetServerOptions setTcpNoDelay(boolean tcpNoDelay) {
        super.setTcpNoDelay(tcpNoDelay);
        return this;
    }

    @Override
    public NetServerOptions setTcpKeepAlive(boolean tcpKeepAlive) {
        super.setTcpKeepAlive(tcpKeepAlive);
        return this;
    }

    @Override
    public NetServerOptions setSoLinger(int soLinger) {
        super.setSoLinger(soLinger);
        return this;
    }

    @Override
    public NetServerOptions setIdleTimeout(int idleTimeout) {
        super.setIdleTimeout(idleTimeout);
        return this;
    }

    @Override
    public NetServerOptions setIdleTimeoutUnit(TimeUnit idleTimeoutUnit) {
        super.setIdleTimeoutUnit(idleTimeoutUnit);
        return this;
    }

    @Override
    public NetServerOptions setSsl(boolean ssl) {
        super.setSsl(ssl);
        return this;
    }

    @Override
    public NetServerOptions setUseAlpn(boolean useAlpn) {
        super.setUseAlpn(useAlpn);
        return this;
    }

    @Override
    public NetServerOptions setSslEngineOptions(SSLEngineOptions sslEngineOptions) {
        super.setSslEngineOptions(sslEngineOptions);
        return this;
    }

    @Override
    public NetServerOptions setJdkSslEngineOptions(JdkSSLEngineOptions sslEngineOptions) {
        return (NetServerOptions) super.setSslEngineOptions(sslEngineOptions);
    }

    @Override
    public NetServerOptions setOpenSslEngineOptions(OpenSSLEngineOptions sslEngineOptions) {
        return (NetServerOptions) super.setSslEngineOptions(sslEngineOptions);
    }

    @Override
    public NetServerOptions setKeyCertOptions(KeyCertOptions options) {
        super.setKeyCertOptions(options);
        return this;
    }

    @Override
    public NetServerOptions setKeyStoreOptions(JksOptions options) {
        super.setKeyStoreOptions(options);
        return this;
    }

    @Override
    public NetServerOptions setPfxKeyCertOptions(PfxOptions options) {
        return (NetServerOptions) super.setPfxKeyCertOptions(options);
    }

    @Override
    public NetServerOptions setPemKeyCertOptions(PemKeyCertOptions options) {
        return (NetServerOptions) super.setPemKeyCertOptions(options);
    }

    @Override
    public NetServerOptions setTrustOptions(TrustOptions options) {
        super.setTrustOptions(options);
        return this;
    }

    @Override
    public NetServerOptions setTrustStoreOptions(JksOptions options) {
        super.setTrustStoreOptions(options);
        return this;
    }

    @Override
    public NetServerOptions setPfxTrustOptions(PfxOptions options) {
        return (NetServerOptions) super.setPfxTrustOptions(options);
    }

    @Override
    public NetServerOptions setPemTrustOptions(PemTrustOptions options) {
        return (NetServerOptions) super.setPemTrustOptions(options);
    }

    @Override
    public NetServerOptions addEnabledCipherSuite(String suite) {
        super.addEnabledCipherSuite(suite);
        return this;
    }

    @Override
    public NetServerOptions addEnabledSecureTransportProtocol(final String protocol) {
        super.addEnabledSecureTransportProtocol(protocol);
        return this;
    }

    @Override
    public NetServerOptions removeEnabledSecureTransportProtocol(String protocol) {
        return (NetServerOptions) super.removeEnabledSecureTransportProtocol(protocol);
    }

    @Override
    public NetServerOptions setTcpFastOpen(boolean tcpFastOpen) {
        return (NetServerOptions) super.setTcpFastOpen(tcpFastOpen);
    }

    @Override
    public NetServerOptions setTcpCork(boolean tcpCork) {
        return (NetServerOptions) super.setTcpCork(tcpCork);
    }

    @Override
    public NetServerOptions setTcpQuickAck(boolean tcpQuickAck) {
        return (NetServerOptions) super.setTcpQuickAck(tcpQuickAck);
    }

    @Override
    public NetServerOptions addCrlPath(String crlPath) throws NullPointerException {
        return (NetServerOptions) super.addCrlPath(crlPath);
    }

    @Override
    public NetServerOptions addCrlValue(Buffer crlValue) throws NullPointerException {
        return (NetServerOptions) super.addCrlValue(crlValue);
    }

    @Override
    public NetServerOptions setEnabledSecureTransportProtocols(Set<String> enabledSecureTransportProtocols) {
        return (NetServerOptions) super.setEnabledSecureTransportProtocols(enabledSecureTransportProtocols);
    }

    @Override
    public NetServerOptions setSslHandshakeTimeout(long sslHandshakeTimeout) {
        return (NetServerOptions) super.setSslHandshakeTimeout(sslHandshakeTimeout);
    }

    @Override
    public NetServerOptions setSslHandshakeTimeoutUnit(TimeUnit sslHandshakeTimeoutUnit) {
        return (NetServerOptions) super.setSslHandshakeTimeoutUnit(sslHandshakeTimeoutUnit);
    }

    /**
     * @return the value of accept backlog
     */
    public int getAcceptBacklog() {
        return acceptBacklog;
    }

    /**
     * Set the accept back log
     *
     * @param acceptBacklog accept backlog
     * @return a reference to this, so the API can be used fluently
     */
    public NetServerOptions setAcceptBacklog(int acceptBacklog) {
        this.acceptBacklog = acceptBacklog;
        return this;
    }

    /**
     *
     * @return the port
     */
    public int getPort() {
        return port;
    }

    /**
     * Set the port
     *
     * @param port  the port
     * @return a reference to this, so the API can be used fluently
     */
    public NetServerOptions setPort(int port) {
        if (port < 0 || port > 65535) {
            throw new IllegalArgumentException("port p must be in range 0 <= p <= 65535");
        }
        this.port = port;
        return this;
    }

    /**
     *
     * @return the host
     */
    public String getHost() {
        return host;
    }

    /**
     * Set the host
     * @param host  the host
     * @return a reference to this, so the API can be used fluently
     */
    public NetServerOptions setHost(String host) {
        this.host = host;
        return this;
    }

    public ClientAuth getClientAuth() {
        return clientAuth;
    }

    /**
     * Set whether client auth is required
     *
     * @param clientAuth One of "NONE, REQUEST, REQUIRED". If it's set to "REQUIRED" then server will require the
     *                   SSL cert to be presented otherwise it won't accept the request. If it's set to "REQUEST" then
     *                   it won't mandate the certificate to be presented, basically make it optional.
     * @return a reference to this, so the API can be used fluently
     */
    public NetServerOptions setClientAuth(ClientAuth clientAuth) {
        this.clientAuth = clientAuth;
        return this;
    }

    @Override
    public NetServerOptions setLogActivity(boolean logEnabled) {
        return (NetServerOptions) super.setLogActivity(logEnabled);
    }

    /**
     * @return whether the server supports Server Name Indication
     */
    public boolean isSni() {
        return sni;
    }

    /**
     * Set whether the server supports Server Name Indiciation
     *
     * @return a reference to this, so the API can be used fluently
     */
    public NetServerOptions setSni(boolean sni) {
        this.sni = sni;
        return this;
    }

    private void init() {
        this.port = DEFAULT_PORT;
        this.host = DEFAULT_HOST;
        this.acceptBacklog = DEFAULT_ACCEPT_BACKLOG;
        this.clientAuth = DEFAULT_CLIENT_AUTH;
        this.sni = DEFAULT_SNI;
    }
}