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

Java tutorial

Introduction

Here is the source code for io.vertx.core.net.ClientOptionsBase.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.json.JsonObject;

import java.util.Objects;
import java.util.concurrent.TimeUnit;

/**
 * Base class for Client options
 *
 * @author <a href="http://tfox.org">Tim Fox</a>
 */
@DataObject(generateConverter = true, publicConverter = false)
public abstract class ClientOptionsBase extends TCPSSLOptions {

    /**
     * The default value of connect timeout = 60000 ms
     */
    public static final int DEFAULT_CONNECT_TIMEOUT = 60000;

    /**
     * The default value of whether all servers (SSL/TLS) should be trusted = false
     */
    public static final boolean DEFAULT_TRUST_ALL = false;

    /**
     * The default value of the client metrics = "":
     */
    public static final String DEFAULT_METRICS_NAME = "";

    private int connectTimeout;
    private boolean trustAll;
    private String metricsName;
    private ProxyOptions proxyOptions;
    private String localAddress;

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

    /**
     * Copy constructor
     *
     * @param other  the options to copy
     */
    public ClientOptionsBase(ClientOptionsBase other) {
        super(other);
        this.connectTimeout = other.getConnectTimeout();
        this.trustAll = other.isTrustAll();
        this.metricsName = other.metricsName;
        this.proxyOptions = other.proxyOptions != null ? new ProxyOptions(other.proxyOptions) : null;
        this.localAddress = other.localAddress;
    }

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

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

    private void init() {
        this.connectTimeout = DEFAULT_CONNECT_TIMEOUT;
        this.trustAll = DEFAULT_TRUST_ALL;
        this.metricsName = DEFAULT_METRICS_NAME;
        this.proxyOptions = null;
        this.localAddress = null;
    }

    /**
     *
     * @return true if all server certificates should be trusted
     */
    public boolean isTrustAll() {
        return trustAll;
    }

    /**
     * Set whether all server certificates should be trusted
     *
     * @param trustAll true if all should be trusted
     * @return a reference to this, so the API can be used fluently
     */
    public ClientOptionsBase setTrustAll(boolean trustAll) {
        this.trustAll = trustAll;
        return this;
    }

    /**
     * @return the value of connect timeout
     */
    public int getConnectTimeout() {
        return connectTimeout;
    }

    /**
     * Set the connect timeout
     *
     * @param connectTimeout  connect timeout, in ms
     * @return a reference to this, so the API can be used fluently
     */
    public ClientOptionsBase setConnectTimeout(int connectTimeout) {
        if (connectTimeout < 0) {
            throw new IllegalArgumentException("connectTimeout must be >= 0");
        }
        this.connectTimeout = connectTimeout;
        return this;
    }

    /**
     * @return the metrics name identifying the reported metrics.
     */
    public String getMetricsName() {
        return metricsName;
    }

    /**
     * Set the metrics name identifying the reported metrics, useful for grouping metrics
     * with the same name.
     *
     * @param metricsName the metrics name
     * @return a reference to this, so the API can be used fluently
     */
    public ClientOptionsBase setMetricsName(String metricsName) {
        this.metricsName = metricsName;
        return this;
    }

    /**
     * Set proxy options for connections via CONNECT proxy (e.g. Squid) or a SOCKS proxy.
     *
     * @param proxyOptions proxy options object
     * @return a reference to this, so the API can be used fluently
     */
    public ClientOptionsBase setProxyOptions(ProxyOptions proxyOptions) {
        this.proxyOptions = proxyOptions;
        return this;
    }

    /**
     * Get proxy options for connections
     *
     * @return proxy options
     */
    public ProxyOptions getProxyOptions() {
        return proxyOptions;
    }

    /**
     * @return the local interface to bind for network connections.
     */
    public String getLocalAddress() {
        return localAddress;
    }

    /**
     * Set the local interface to bind for network connections. When the local address is null,
     * it will pick any local address, the default local address is null.
     *
     * @param localAddress the local address
     * @return a reference to this, so the API can be used fluently
     */
    public ClientOptionsBase setLocalAddress(String localAddress) {
        this.localAddress = localAddress;
        return this;
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @Override
    public ClientOptionsBase addEnabledSecureTransportProtocol(String protocol) {
        return (ClientOptionsBase) super.addEnabledSecureTransportProtocol(protocol);
    }

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

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

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

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