All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.drasyl.AutoValue_DrasylConfig Maven / Gradle / Ivy

Go to download

This packages contains the building blocks required to create the drasyl overlay network.

There is a newer version: 0.10.0
Show newest version
package org.drasyl;

import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.URI;
import java.nio.file.Path;
import java.time.Duration;
import java.util.Map;
import java.util.Set;
import javax.annotation.processing.Generated;
import org.drasyl.annotation.Nullable;
import org.drasyl.identity.IdentityPublicKey;
import org.drasyl.identity.IdentitySecretKey;
import org.drasyl.identity.KeyAgreementPublicKey;
import org.drasyl.identity.KeyAgreementSecretKey;
import org.drasyl.identity.ProofOfWork;
import org.drasyl.peer.Endpoint;
import org.drasyl.pipeline.address.InetSocketAddressWrapper;
import org.drasyl.plugin.DrasylPlugin;
import org.drasyl.serialization.Serializer;
import org.drasyl.util.MaskedString;

@Generated("com.google.auto.value.processor.AutoValueProcessor")
final class AutoValue_DrasylConfig extends DrasylConfig {

  private final int networkId;

  private final ProofOfWork identityProofOfWork;

  private final IdentityPublicKey identityPublicKey;

  private final IdentitySecretKey identitySecretKey;

  private final KeyAgreementPublicKey keyAgreementPublicKey;

  private final KeyAgreementSecretKey keyAgreementSecretKey;

  private final Path identityPath;

  private final int messageBufferSize;

  private final boolean remoteEnabled;

  private final InetAddress remoteBindHost;

  private final int remoteBindPort;

  private final ImmutableSet remoteEndpoints;

  private final boolean remoteExposeEnabled;

  private final Duration remotePingInterval;

  private final Duration remotePingTimeout;

  private final Duration remotePingCommunicationTimeout;

  private final int remotePingMaxPeers;

  private final Duration remoteUniteMinInterval;

  private final boolean remoteSuperPeerEnabled;

  private final ImmutableSet remoteSuperPeerEndpoints;

  private final ImmutableMap remoteStaticRoutes;

  private final boolean remoteLocalHostDiscoveryEnabled;

  private final Path remoteLocalHostDiscoveryPath;

  private final Duration remoteLocalHostDiscoveryLeaseTime;

  private final boolean remoteLocalHostDiscoveryWatchEnabled;

  private final boolean remoteLocalNetworkDiscoveryEnabled;

  private final int remoteMessageMtu;

  private final int remoteMessageMaxContentLength;

  private final Duration remoteMessageComposedMessageTransferTimeout;

  private final byte remoteMessageHopLimit;

  private final boolean remoteMessageArmEnabled;

  private final int remoteMessageArmSessionMaxCount;

  private final int remoteMessageArmSessionMaxAgreements;

  private final Duration remoteMessageArmSessionExpireAfter;

  private final Duration remoteMessageArmSessionRetryInterval;

  private final boolean remoteTcpFallbackEnabled;

  private final InetAddress remoteTcpFallbackServerBindHost;

  private final int remoteTcpFallbackServerBindPort;

  private final Duration remoteTcpFallbackClientTimeout;

  private final InetSocketAddress remoteTcpFallbackClientAddress;

  private final boolean intraVmDiscoveryEnabled;

  private final boolean monitoringEnabled;

  private final String monitoringHostTag;

  private final URI monitoringInfluxUri;

  private final String monitoringInfluxUser;

  private final MaskedString monitoringInfluxPassword;

  private final String monitoringInfluxDatabase;

  private final Duration monitoringInfluxReportingFrequency;

  private final ImmutableSet plugins;

  private final ImmutableMap serializationSerializers;

  private final ImmutableMap, String> serializationsBindingsInbound;

  private final ImmutableMap, String> serializationsBindingsOutbound;

  private AutoValue_DrasylConfig(
      int networkId,
      @Nullable ProofOfWork identityProofOfWork,
      @Nullable IdentityPublicKey identityPublicKey,
      @Nullable IdentitySecretKey identitySecretKey,
      @Nullable KeyAgreementPublicKey keyAgreementPublicKey,
      @Nullable KeyAgreementSecretKey keyAgreementSecretKey,
      Path identityPath,
      int messageBufferSize,
      boolean remoteEnabled,
      InetAddress remoteBindHost,
      int remoteBindPort,
      ImmutableSet remoteEndpoints,
      boolean remoteExposeEnabled,
      Duration remotePingInterval,
      Duration remotePingTimeout,
      Duration remotePingCommunicationTimeout,
      int remotePingMaxPeers,
      Duration remoteUniteMinInterval,
      boolean remoteSuperPeerEnabled,
      ImmutableSet remoteSuperPeerEndpoints,
      ImmutableMap remoteStaticRoutes,
      boolean remoteLocalHostDiscoveryEnabled,
      Path remoteLocalHostDiscoveryPath,
      Duration remoteLocalHostDiscoveryLeaseTime,
      boolean remoteLocalHostDiscoveryWatchEnabled,
      boolean remoteLocalNetworkDiscoveryEnabled,
      int remoteMessageMtu,
      int remoteMessageMaxContentLength,
      Duration remoteMessageComposedMessageTransferTimeout,
      byte remoteMessageHopLimit,
      boolean remoteMessageArmEnabled,
      int remoteMessageArmSessionMaxCount,
      int remoteMessageArmSessionMaxAgreements,
      Duration remoteMessageArmSessionExpireAfter,
      Duration remoteMessageArmSessionRetryInterval,
      boolean remoteTcpFallbackEnabled,
      InetAddress remoteTcpFallbackServerBindHost,
      int remoteTcpFallbackServerBindPort,
      Duration remoteTcpFallbackClientTimeout,
      InetSocketAddress remoteTcpFallbackClientAddress,
      boolean intraVmDiscoveryEnabled,
      boolean monitoringEnabled,
      String monitoringHostTag,
      URI monitoringInfluxUri,
      String monitoringInfluxUser,
      MaskedString monitoringInfluxPassword,
      String monitoringInfluxDatabase,
      Duration monitoringInfluxReportingFrequency,
      ImmutableSet plugins,
      ImmutableMap serializationSerializers,
      ImmutableMap, String> serializationsBindingsInbound,
      ImmutableMap, String> serializationsBindingsOutbound) {
    this.networkId = networkId;
    this.identityProofOfWork = identityProofOfWork;
    this.identityPublicKey = identityPublicKey;
    this.identitySecretKey = identitySecretKey;
    this.keyAgreementPublicKey = keyAgreementPublicKey;
    this.keyAgreementSecretKey = keyAgreementSecretKey;
    this.identityPath = identityPath;
    this.messageBufferSize = messageBufferSize;
    this.remoteEnabled = remoteEnabled;
    this.remoteBindHost = remoteBindHost;
    this.remoteBindPort = remoteBindPort;
    this.remoteEndpoints = remoteEndpoints;
    this.remoteExposeEnabled = remoteExposeEnabled;
    this.remotePingInterval = remotePingInterval;
    this.remotePingTimeout = remotePingTimeout;
    this.remotePingCommunicationTimeout = remotePingCommunicationTimeout;
    this.remotePingMaxPeers = remotePingMaxPeers;
    this.remoteUniteMinInterval = remoteUniteMinInterval;
    this.remoteSuperPeerEnabled = remoteSuperPeerEnabled;
    this.remoteSuperPeerEndpoints = remoteSuperPeerEndpoints;
    this.remoteStaticRoutes = remoteStaticRoutes;
    this.remoteLocalHostDiscoveryEnabled = remoteLocalHostDiscoveryEnabled;
    this.remoteLocalHostDiscoveryPath = remoteLocalHostDiscoveryPath;
    this.remoteLocalHostDiscoveryLeaseTime = remoteLocalHostDiscoveryLeaseTime;
    this.remoteLocalHostDiscoveryWatchEnabled = remoteLocalHostDiscoveryWatchEnabled;
    this.remoteLocalNetworkDiscoveryEnabled = remoteLocalNetworkDiscoveryEnabled;
    this.remoteMessageMtu = remoteMessageMtu;
    this.remoteMessageMaxContentLength = remoteMessageMaxContentLength;
    this.remoteMessageComposedMessageTransferTimeout = remoteMessageComposedMessageTransferTimeout;
    this.remoteMessageHopLimit = remoteMessageHopLimit;
    this.remoteMessageArmEnabled = remoteMessageArmEnabled;
    this.remoteMessageArmSessionMaxCount = remoteMessageArmSessionMaxCount;
    this.remoteMessageArmSessionMaxAgreements = remoteMessageArmSessionMaxAgreements;
    this.remoteMessageArmSessionExpireAfter = remoteMessageArmSessionExpireAfter;
    this.remoteMessageArmSessionRetryInterval = remoteMessageArmSessionRetryInterval;
    this.remoteTcpFallbackEnabled = remoteTcpFallbackEnabled;
    this.remoteTcpFallbackServerBindHost = remoteTcpFallbackServerBindHost;
    this.remoteTcpFallbackServerBindPort = remoteTcpFallbackServerBindPort;
    this.remoteTcpFallbackClientTimeout = remoteTcpFallbackClientTimeout;
    this.remoteTcpFallbackClientAddress = remoteTcpFallbackClientAddress;
    this.intraVmDiscoveryEnabled = intraVmDiscoveryEnabled;
    this.monitoringEnabled = monitoringEnabled;
    this.monitoringHostTag = monitoringHostTag;
    this.monitoringInfluxUri = monitoringInfluxUri;
    this.monitoringInfluxUser = monitoringInfluxUser;
    this.monitoringInfluxPassword = monitoringInfluxPassword;
    this.monitoringInfluxDatabase = monitoringInfluxDatabase;
    this.monitoringInfluxReportingFrequency = monitoringInfluxReportingFrequency;
    this.plugins = plugins;
    this.serializationSerializers = serializationSerializers;
    this.serializationsBindingsInbound = serializationsBindingsInbound;
    this.serializationsBindingsOutbound = serializationsBindingsOutbound;
  }

  @Override
  public int getNetworkId() {
    return networkId;
  }

  @Nullable
  @Override
  public ProofOfWork getIdentityProofOfWork() {
    return identityProofOfWork;
  }

  @Nullable
  @Override
  public IdentityPublicKey getIdentityPublicKey() {
    return identityPublicKey;
  }

  @Nullable
  @Override
  public IdentitySecretKey getIdentitySecretKey() {
    return identitySecretKey;
  }

  @Nullable
  @Override
  public KeyAgreementPublicKey getKeyAgreementPublicKey() {
    return keyAgreementPublicKey;
  }

  @Nullable
  @Override
  public KeyAgreementSecretKey getKeyAgreementSecretKey() {
    return keyAgreementSecretKey;
  }

  @Override
  public Path getIdentityPath() {
    return identityPath;
  }

  @Override
  public int getMessageBufferSize() {
    return messageBufferSize;
  }

  @Override
  public boolean isRemoteEnabled() {
    return remoteEnabled;
  }

  @Override
  public InetAddress getRemoteBindHost() {
    return remoteBindHost;
  }

  @Override
  public int getRemoteBindPort() {
    return remoteBindPort;
  }

  @Override
  public ImmutableSet getRemoteEndpoints() {
    return remoteEndpoints;
  }

  @Override
  public boolean isRemoteExposeEnabled() {
    return remoteExposeEnabled;
  }

  @Override
  public Duration getRemotePingInterval() {
    return remotePingInterval;
  }

  @Override
  public Duration getRemotePingTimeout() {
    return remotePingTimeout;
  }

  @Override
  public Duration getRemotePingCommunicationTimeout() {
    return remotePingCommunicationTimeout;
  }

  @Override
  public int getRemotePingMaxPeers() {
    return remotePingMaxPeers;
  }

  @Override
  public Duration getRemoteUniteMinInterval() {
    return remoteUniteMinInterval;
  }

  @Override
  public boolean isRemoteSuperPeerEnabled() {
    return remoteSuperPeerEnabled;
  }

  @Override
  public ImmutableSet getRemoteSuperPeerEndpoints() {
    return remoteSuperPeerEndpoints;
  }

  @Override
  public ImmutableMap getRemoteStaticRoutes() {
    return remoteStaticRoutes;
  }

  @Override
  public boolean isRemoteLocalHostDiscoveryEnabled() {
    return remoteLocalHostDiscoveryEnabled;
  }

  @Override
  public Path getRemoteLocalHostDiscoveryPath() {
    return remoteLocalHostDiscoveryPath;
  }

  @Override
  public Duration getRemoteLocalHostDiscoveryLeaseTime() {
    return remoteLocalHostDiscoveryLeaseTime;
  }

  @Override
  public boolean isRemoteLocalHostDiscoveryWatchEnabled() {
    return remoteLocalHostDiscoveryWatchEnabled;
  }

  @Override
  public boolean isRemoteLocalNetworkDiscoveryEnabled() {
    return remoteLocalNetworkDiscoveryEnabled;
  }

  @Override
  public int getRemoteMessageMtu() {
    return remoteMessageMtu;
  }

  @Override
  public int getRemoteMessageMaxContentLength() {
    return remoteMessageMaxContentLength;
  }

  @Override
  public Duration getRemoteMessageComposedMessageTransferTimeout() {
    return remoteMessageComposedMessageTransferTimeout;
  }

  @Override
  public byte getRemoteMessageHopLimit() {
    return remoteMessageHopLimit;
  }

  @Override
  public boolean isRemoteMessageArmEnabled() {
    return remoteMessageArmEnabled;
  }

  @Override
  public int getRemoteMessageArmSessionMaxCount() {
    return remoteMessageArmSessionMaxCount;
  }

  @Override
  public int getRemoteMessageArmSessionMaxAgreements() {
    return remoteMessageArmSessionMaxAgreements;
  }

  @Override
  public Duration getRemoteMessageArmSessionExpireAfter() {
    return remoteMessageArmSessionExpireAfter;
  }

  @Override
  public Duration getRemoteMessageArmSessionRetryInterval() {
    return remoteMessageArmSessionRetryInterval;
  }

  @Override
  public boolean isRemoteTcpFallbackEnabled() {
    return remoteTcpFallbackEnabled;
  }

  @Override
  public InetAddress getRemoteTcpFallbackServerBindHost() {
    return remoteTcpFallbackServerBindHost;
  }

  @Override
  public int getRemoteTcpFallbackServerBindPort() {
    return remoteTcpFallbackServerBindPort;
  }

  @Override
  public Duration getRemoteTcpFallbackClientTimeout() {
    return remoteTcpFallbackClientTimeout;
  }

  @Override
  public InetSocketAddress getRemoteTcpFallbackClientAddress() {
    return remoteTcpFallbackClientAddress;
  }

  @Override
  public boolean isIntraVmDiscoveryEnabled() {
    return intraVmDiscoveryEnabled;
  }

  @Override
  public boolean isMonitoringEnabled() {
    return monitoringEnabled;
  }

  @Override
  public String getMonitoringHostTag() {
    return monitoringHostTag;
  }

  @Override
  public URI getMonitoringInfluxUri() {
    return monitoringInfluxUri;
  }

  @Override
  public String getMonitoringInfluxUser() {
    return monitoringInfluxUser;
  }

  @Override
  public MaskedString getMonitoringInfluxPassword() {
    return monitoringInfluxPassword;
  }

  @Override
  public String getMonitoringInfluxDatabase() {
    return monitoringInfluxDatabase;
  }

  @Override
  public Duration getMonitoringInfluxReportingFrequency() {
    return monitoringInfluxReportingFrequency;
  }

  @Override
  public ImmutableSet getPlugins() {
    return plugins;
  }

  @Override
  public ImmutableMap getSerializationSerializers() {
    return serializationSerializers;
  }

  @Override
  public ImmutableMap, String> getSerializationsBindingsInbound() {
    return serializationsBindingsInbound;
  }

  @Override
  public ImmutableMap, String> getSerializationsBindingsOutbound() {
    return serializationsBindingsOutbound;
  }

  @Override
  public String toString() {
    return "DrasylConfig{"
        + "networkId=" + networkId + ", "
        + "identityProofOfWork=" + identityProofOfWork + ", "
        + "identityPublicKey=" + identityPublicKey + ", "
        + "identitySecretKey=" + identitySecretKey + ", "
        + "keyAgreementPublicKey=" + keyAgreementPublicKey + ", "
        + "keyAgreementSecretKey=" + keyAgreementSecretKey + ", "
        + "identityPath=" + identityPath + ", "
        + "messageBufferSize=" + messageBufferSize + ", "
        + "remoteEnabled=" + remoteEnabled + ", "
        + "remoteBindHost=" + remoteBindHost + ", "
        + "remoteBindPort=" + remoteBindPort + ", "
        + "remoteEndpoints=" + remoteEndpoints + ", "
        + "remoteExposeEnabled=" + remoteExposeEnabled + ", "
        + "remotePingInterval=" + remotePingInterval + ", "
        + "remotePingTimeout=" + remotePingTimeout + ", "
        + "remotePingCommunicationTimeout=" + remotePingCommunicationTimeout + ", "
        + "remotePingMaxPeers=" + remotePingMaxPeers + ", "
        + "remoteUniteMinInterval=" + remoteUniteMinInterval + ", "
        + "remoteSuperPeerEnabled=" + remoteSuperPeerEnabled + ", "
        + "remoteSuperPeerEndpoints=" + remoteSuperPeerEndpoints + ", "
        + "remoteStaticRoutes=" + remoteStaticRoutes + ", "
        + "remoteLocalHostDiscoveryEnabled=" + remoteLocalHostDiscoveryEnabled + ", "
        + "remoteLocalHostDiscoveryPath=" + remoteLocalHostDiscoveryPath + ", "
        + "remoteLocalHostDiscoveryLeaseTime=" + remoteLocalHostDiscoveryLeaseTime + ", "
        + "remoteLocalHostDiscoveryWatchEnabled=" + remoteLocalHostDiscoveryWatchEnabled + ", "
        + "remoteLocalNetworkDiscoveryEnabled=" + remoteLocalNetworkDiscoveryEnabled + ", "
        + "remoteMessageMtu=" + remoteMessageMtu + ", "
        + "remoteMessageMaxContentLength=" + remoteMessageMaxContentLength + ", "
        + "remoteMessageComposedMessageTransferTimeout=" + remoteMessageComposedMessageTransferTimeout + ", "
        + "remoteMessageHopLimit=" + remoteMessageHopLimit + ", "
        + "remoteMessageArmEnabled=" + remoteMessageArmEnabled + ", "
        + "remoteMessageArmSessionMaxCount=" + remoteMessageArmSessionMaxCount + ", "
        + "remoteMessageArmSessionMaxAgreements=" + remoteMessageArmSessionMaxAgreements + ", "
        + "remoteMessageArmSessionExpireAfter=" + remoteMessageArmSessionExpireAfter + ", "
        + "remoteMessageArmSessionRetryInterval=" + remoteMessageArmSessionRetryInterval + ", "
        + "remoteTcpFallbackEnabled=" + remoteTcpFallbackEnabled + ", "
        + "remoteTcpFallbackServerBindHost=" + remoteTcpFallbackServerBindHost + ", "
        + "remoteTcpFallbackServerBindPort=" + remoteTcpFallbackServerBindPort + ", "
        + "remoteTcpFallbackClientTimeout=" + remoteTcpFallbackClientTimeout + ", "
        + "remoteTcpFallbackClientAddress=" + remoteTcpFallbackClientAddress + ", "
        + "intraVmDiscoveryEnabled=" + intraVmDiscoveryEnabled + ", "
        + "monitoringEnabled=" + monitoringEnabled + ", "
        + "monitoringHostTag=" + monitoringHostTag + ", "
        + "monitoringInfluxUri=" + monitoringInfluxUri + ", "
        + "monitoringInfluxUser=" + monitoringInfluxUser + ", "
        + "monitoringInfluxPassword=" + monitoringInfluxPassword + ", "
        + "monitoringInfluxDatabase=" + monitoringInfluxDatabase + ", "
        + "monitoringInfluxReportingFrequency=" + monitoringInfluxReportingFrequency + ", "
        + "plugins=" + plugins + ", "
        + "serializationSerializers=" + serializationSerializers + ", "
        + "serializationsBindingsInbound=" + serializationsBindingsInbound + ", "
        + "serializationsBindingsOutbound=" + serializationsBindingsOutbound
        + "}";
  }

  @Override
  public boolean equals(Object o) {
    if (o == this) {
      return true;
    }
    if (o instanceof DrasylConfig) {
      DrasylConfig that = (DrasylConfig) o;
      return this.networkId == that.getNetworkId()
          && (this.identityProofOfWork == null ? that.getIdentityProofOfWork() == null : this.identityProofOfWork.equals(that.getIdentityProofOfWork()))
          && (this.identityPublicKey == null ? that.getIdentityPublicKey() == null : this.identityPublicKey.equals(that.getIdentityPublicKey()))
          && (this.identitySecretKey == null ? that.getIdentitySecretKey() == null : this.identitySecretKey.equals(that.getIdentitySecretKey()))
          && (this.keyAgreementPublicKey == null ? that.getKeyAgreementPublicKey() == null : this.keyAgreementPublicKey.equals(that.getKeyAgreementPublicKey()))
          && (this.keyAgreementSecretKey == null ? that.getKeyAgreementSecretKey() == null : this.keyAgreementSecretKey.equals(that.getKeyAgreementSecretKey()))
          && this.identityPath.equals(that.getIdentityPath())
          && this.messageBufferSize == that.getMessageBufferSize()
          && this.remoteEnabled == that.isRemoteEnabled()
          && this.remoteBindHost.equals(that.getRemoteBindHost())
          && this.remoteBindPort == that.getRemoteBindPort()
          && this.remoteEndpoints.equals(that.getRemoteEndpoints())
          && this.remoteExposeEnabled == that.isRemoteExposeEnabled()
          && this.remotePingInterval.equals(that.getRemotePingInterval())
          && this.remotePingTimeout.equals(that.getRemotePingTimeout())
          && this.remotePingCommunicationTimeout.equals(that.getRemotePingCommunicationTimeout())
          && this.remotePingMaxPeers == that.getRemotePingMaxPeers()
          && this.remoteUniteMinInterval.equals(that.getRemoteUniteMinInterval())
          && this.remoteSuperPeerEnabled == that.isRemoteSuperPeerEnabled()
          && this.remoteSuperPeerEndpoints.equals(that.getRemoteSuperPeerEndpoints())
          && this.remoteStaticRoutes.equals(that.getRemoteStaticRoutes())
          && this.remoteLocalHostDiscoveryEnabled == that.isRemoteLocalHostDiscoveryEnabled()
          && this.remoteLocalHostDiscoveryPath.equals(that.getRemoteLocalHostDiscoveryPath())
          && this.remoteLocalHostDiscoveryLeaseTime.equals(that.getRemoteLocalHostDiscoveryLeaseTime())
          && this.remoteLocalHostDiscoveryWatchEnabled == that.isRemoteLocalHostDiscoveryWatchEnabled()
          && this.remoteLocalNetworkDiscoveryEnabled == that.isRemoteLocalNetworkDiscoveryEnabled()
          && this.remoteMessageMtu == that.getRemoteMessageMtu()
          && this.remoteMessageMaxContentLength == that.getRemoteMessageMaxContentLength()
          && this.remoteMessageComposedMessageTransferTimeout.equals(that.getRemoteMessageComposedMessageTransferTimeout())
          && this.remoteMessageHopLimit == that.getRemoteMessageHopLimit()
          && this.remoteMessageArmEnabled == that.isRemoteMessageArmEnabled()
          && this.remoteMessageArmSessionMaxCount == that.getRemoteMessageArmSessionMaxCount()
          && this.remoteMessageArmSessionMaxAgreements == that.getRemoteMessageArmSessionMaxAgreements()
          && this.remoteMessageArmSessionExpireAfter.equals(that.getRemoteMessageArmSessionExpireAfter())
          && this.remoteMessageArmSessionRetryInterval.equals(that.getRemoteMessageArmSessionRetryInterval())
          && this.remoteTcpFallbackEnabled == that.isRemoteTcpFallbackEnabled()
          && this.remoteTcpFallbackServerBindHost.equals(that.getRemoteTcpFallbackServerBindHost())
          && this.remoteTcpFallbackServerBindPort == that.getRemoteTcpFallbackServerBindPort()
          && this.remoteTcpFallbackClientTimeout.equals(that.getRemoteTcpFallbackClientTimeout())
          && this.remoteTcpFallbackClientAddress.equals(that.getRemoteTcpFallbackClientAddress())
          && this.intraVmDiscoveryEnabled == that.isIntraVmDiscoveryEnabled()
          && this.monitoringEnabled == that.isMonitoringEnabled()
          && this.monitoringHostTag.equals(that.getMonitoringHostTag())
          && this.monitoringInfluxUri.equals(that.getMonitoringInfluxUri())
          && this.monitoringInfluxUser.equals(that.getMonitoringInfluxUser())
          && this.monitoringInfluxPassword.equals(that.getMonitoringInfluxPassword())
          && this.monitoringInfluxDatabase.equals(that.getMonitoringInfluxDatabase())
          && this.monitoringInfluxReportingFrequency.equals(that.getMonitoringInfluxReportingFrequency())
          && this.plugins.equals(that.getPlugins())
          && this.serializationSerializers.equals(that.getSerializationSerializers())
          && this.serializationsBindingsInbound.equals(that.getSerializationsBindingsInbound())
          && this.serializationsBindingsOutbound.equals(that.getSerializationsBindingsOutbound());
    }
    return false;
  }

  @Override
  public int hashCode() {
    int h$ = 1;
    h$ *= 1000003;
    h$ ^= networkId;
    h$ *= 1000003;
    h$ ^= (identityProofOfWork == null) ? 0 : identityProofOfWork.hashCode();
    h$ *= 1000003;
    h$ ^= (identityPublicKey == null) ? 0 : identityPublicKey.hashCode();
    h$ *= 1000003;
    h$ ^= (identitySecretKey == null) ? 0 : identitySecretKey.hashCode();
    h$ *= 1000003;
    h$ ^= (keyAgreementPublicKey == null) ? 0 : keyAgreementPublicKey.hashCode();
    h$ *= 1000003;
    h$ ^= (keyAgreementSecretKey == null) ? 0 : keyAgreementSecretKey.hashCode();
    h$ *= 1000003;
    h$ ^= identityPath.hashCode();
    h$ *= 1000003;
    h$ ^= messageBufferSize;
    h$ *= 1000003;
    h$ ^= remoteEnabled ? 1231 : 1237;
    h$ *= 1000003;
    h$ ^= remoteBindHost.hashCode();
    h$ *= 1000003;
    h$ ^= remoteBindPort;
    h$ *= 1000003;
    h$ ^= remoteEndpoints.hashCode();
    h$ *= 1000003;
    h$ ^= remoteExposeEnabled ? 1231 : 1237;
    h$ *= 1000003;
    h$ ^= remotePingInterval.hashCode();
    h$ *= 1000003;
    h$ ^= remotePingTimeout.hashCode();
    h$ *= 1000003;
    h$ ^= remotePingCommunicationTimeout.hashCode();
    h$ *= 1000003;
    h$ ^= remotePingMaxPeers;
    h$ *= 1000003;
    h$ ^= remoteUniteMinInterval.hashCode();
    h$ *= 1000003;
    h$ ^= remoteSuperPeerEnabled ? 1231 : 1237;
    h$ *= 1000003;
    h$ ^= remoteSuperPeerEndpoints.hashCode();
    h$ *= 1000003;
    h$ ^= remoteStaticRoutes.hashCode();
    h$ *= 1000003;
    h$ ^= remoteLocalHostDiscoveryEnabled ? 1231 : 1237;
    h$ *= 1000003;
    h$ ^= remoteLocalHostDiscoveryPath.hashCode();
    h$ *= 1000003;
    h$ ^= remoteLocalHostDiscoveryLeaseTime.hashCode();
    h$ *= 1000003;
    h$ ^= remoteLocalHostDiscoveryWatchEnabled ? 1231 : 1237;
    h$ *= 1000003;
    h$ ^= remoteLocalNetworkDiscoveryEnabled ? 1231 : 1237;
    h$ *= 1000003;
    h$ ^= remoteMessageMtu;
    h$ *= 1000003;
    h$ ^= remoteMessageMaxContentLength;
    h$ *= 1000003;
    h$ ^= remoteMessageComposedMessageTransferTimeout.hashCode();
    h$ *= 1000003;
    h$ ^= remoteMessageHopLimit;
    h$ *= 1000003;
    h$ ^= remoteMessageArmEnabled ? 1231 : 1237;
    h$ *= 1000003;
    h$ ^= remoteMessageArmSessionMaxCount;
    h$ *= 1000003;
    h$ ^= remoteMessageArmSessionMaxAgreements;
    h$ *= 1000003;
    h$ ^= remoteMessageArmSessionExpireAfter.hashCode();
    h$ *= 1000003;
    h$ ^= remoteMessageArmSessionRetryInterval.hashCode();
    h$ *= 1000003;
    h$ ^= remoteTcpFallbackEnabled ? 1231 : 1237;
    h$ *= 1000003;
    h$ ^= remoteTcpFallbackServerBindHost.hashCode();
    h$ *= 1000003;
    h$ ^= remoteTcpFallbackServerBindPort;
    h$ *= 1000003;
    h$ ^= remoteTcpFallbackClientTimeout.hashCode();
    h$ *= 1000003;
    h$ ^= remoteTcpFallbackClientAddress.hashCode();
    h$ *= 1000003;
    h$ ^= intraVmDiscoveryEnabled ? 1231 : 1237;
    h$ *= 1000003;
    h$ ^= monitoringEnabled ? 1231 : 1237;
    h$ *= 1000003;
    h$ ^= monitoringHostTag.hashCode();
    h$ *= 1000003;
    h$ ^= monitoringInfluxUri.hashCode();
    h$ *= 1000003;
    h$ ^= monitoringInfluxUser.hashCode();
    h$ *= 1000003;
    h$ ^= monitoringInfluxPassword.hashCode();
    h$ *= 1000003;
    h$ ^= monitoringInfluxDatabase.hashCode();
    h$ *= 1000003;
    h$ ^= monitoringInfluxReportingFrequency.hashCode();
    h$ *= 1000003;
    h$ ^= plugins.hashCode();
    h$ *= 1000003;
    h$ ^= serializationSerializers.hashCode();
    h$ *= 1000003;
    h$ ^= serializationsBindingsInbound.hashCode();
    h$ *= 1000003;
    h$ ^= serializationsBindingsOutbound.hashCode();
    return h$;
  }

  @Override
  DrasylConfig.Builder toBuilder() {
    return new Builder(this);
  }

  static final class Builder extends DrasylConfig.Builder {
    private Integer networkId;
    private ProofOfWork identityProofOfWork;
    private IdentityPublicKey identityPublicKey;
    private IdentitySecretKey identitySecretKey;
    private KeyAgreementPublicKey keyAgreementPublicKey;
    private KeyAgreementSecretKey keyAgreementSecretKey;
    private Path identityPath;
    private Integer messageBufferSize;
    private Boolean remoteEnabled;
    private InetAddress remoteBindHost;
    private Integer remoteBindPort;
    private ImmutableSet remoteEndpoints;
    private Boolean remoteExposeEnabled;
    private Duration remotePingInterval;
    private Duration remotePingTimeout;
    private Duration remotePingCommunicationTimeout;
    private Integer remotePingMaxPeers;
    private Duration remoteUniteMinInterval;
    private Boolean remoteSuperPeerEnabled;
    private ImmutableSet remoteSuperPeerEndpoints;
    private ImmutableMap remoteStaticRoutes;
    private Boolean remoteLocalHostDiscoveryEnabled;
    private Path remoteLocalHostDiscoveryPath;
    private Duration remoteLocalHostDiscoveryLeaseTime;
    private Boolean remoteLocalHostDiscoveryWatchEnabled;
    private Boolean remoteLocalNetworkDiscoveryEnabled;
    private Integer remoteMessageMtu;
    private Integer remoteMessageMaxContentLength;
    private Duration remoteMessageComposedMessageTransferTimeout;
    private Byte remoteMessageHopLimit;
    private Boolean remoteMessageArmEnabled;
    private Integer remoteMessageArmSessionMaxCount;
    private Integer remoteMessageArmSessionMaxAgreements;
    private Duration remoteMessageArmSessionExpireAfter;
    private Duration remoteMessageArmSessionRetryInterval;
    private Boolean remoteTcpFallbackEnabled;
    private InetAddress remoteTcpFallbackServerBindHost;
    private Integer remoteTcpFallbackServerBindPort;
    private Duration remoteTcpFallbackClientTimeout;
    private InetSocketAddress remoteTcpFallbackClientAddress;
    private Boolean intraVmDiscoveryEnabled;
    private Boolean monitoringEnabled;
    private String monitoringHostTag;
    private URI monitoringInfluxUri;
    private String monitoringInfluxUser;
    private MaskedString monitoringInfluxPassword;
    private String monitoringInfluxDatabase;
    private Duration monitoringInfluxReportingFrequency;
    private ImmutableSet plugins;
    private ImmutableMap serializationSerializers;
    private ImmutableMap.Builder, String> serializationsBindingsInboundBuilder$;
    private ImmutableMap, String> serializationsBindingsInbound;
    private ImmutableMap.Builder, String> serializationsBindingsOutboundBuilder$;
    private ImmutableMap, String> serializationsBindingsOutbound;
    Builder() {
    }
    private Builder(DrasylConfig source) {
      this.networkId = source.getNetworkId();
      this.identityProofOfWork = source.getIdentityProofOfWork();
      this.identityPublicKey = source.getIdentityPublicKey();
      this.identitySecretKey = source.getIdentitySecretKey();
      this.keyAgreementPublicKey = source.getKeyAgreementPublicKey();
      this.keyAgreementSecretKey = source.getKeyAgreementSecretKey();
      this.identityPath = source.getIdentityPath();
      this.messageBufferSize = source.getMessageBufferSize();
      this.remoteEnabled = source.isRemoteEnabled();
      this.remoteBindHost = source.getRemoteBindHost();
      this.remoteBindPort = source.getRemoteBindPort();
      this.remoteEndpoints = source.getRemoteEndpoints();
      this.remoteExposeEnabled = source.isRemoteExposeEnabled();
      this.remotePingInterval = source.getRemotePingInterval();
      this.remotePingTimeout = source.getRemotePingTimeout();
      this.remotePingCommunicationTimeout = source.getRemotePingCommunicationTimeout();
      this.remotePingMaxPeers = source.getRemotePingMaxPeers();
      this.remoteUniteMinInterval = source.getRemoteUniteMinInterval();
      this.remoteSuperPeerEnabled = source.isRemoteSuperPeerEnabled();
      this.remoteSuperPeerEndpoints = source.getRemoteSuperPeerEndpoints();
      this.remoteStaticRoutes = source.getRemoteStaticRoutes();
      this.remoteLocalHostDiscoveryEnabled = source.isRemoteLocalHostDiscoveryEnabled();
      this.remoteLocalHostDiscoveryPath = source.getRemoteLocalHostDiscoveryPath();
      this.remoteLocalHostDiscoveryLeaseTime = source.getRemoteLocalHostDiscoveryLeaseTime();
      this.remoteLocalHostDiscoveryWatchEnabled = source.isRemoteLocalHostDiscoveryWatchEnabled();
      this.remoteLocalNetworkDiscoveryEnabled = source.isRemoteLocalNetworkDiscoveryEnabled();
      this.remoteMessageMtu = source.getRemoteMessageMtu();
      this.remoteMessageMaxContentLength = source.getRemoteMessageMaxContentLength();
      this.remoteMessageComposedMessageTransferTimeout = source.getRemoteMessageComposedMessageTransferTimeout();
      this.remoteMessageHopLimit = source.getRemoteMessageHopLimit();
      this.remoteMessageArmEnabled = source.isRemoteMessageArmEnabled();
      this.remoteMessageArmSessionMaxCount = source.getRemoteMessageArmSessionMaxCount();
      this.remoteMessageArmSessionMaxAgreements = source.getRemoteMessageArmSessionMaxAgreements();
      this.remoteMessageArmSessionExpireAfter = source.getRemoteMessageArmSessionExpireAfter();
      this.remoteMessageArmSessionRetryInterval = source.getRemoteMessageArmSessionRetryInterval();
      this.remoteTcpFallbackEnabled = source.isRemoteTcpFallbackEnabled();
      this.remoteTcpFallbackServerBindHost = source.getRemoteTcpFallbackServerBindHost();
      this.remoteTcpFallbackServerBindPort = source.getRemoteTcpFallbackServerBindPort();
      this.remoteTcpFallbackClientTimeout = source.getRemoteTcpFallbackClientTimeout();
      this.remoteTcpFallbackClientAddress = source.getRemoteTcpFallbackClientAddress();
      this.intraVmDiscoveryEnabled = source.isIntraVmDiscoveryEnabled();
      this.monitoringEnabled = source.isMonitoringEnabled();
      this.monitoringHostTag = source.getMonitoringHostTag();
      this.monitoringInfluxUri = source.getMonitoringInfluxUri();
      this.monitoringInfluxUser = source.getMonitoringInfluxUser();
      this.monitoringInfluxPassword = source.getMonitoringInfluxPassword();
      this.monitoringInfluxDatabase = source.getMonitoringInfluxDatabase();
      this.monitoringInfluxReportingFrequency = source.getMonitoringInfluxReportingFrequency();
      this.plugins = source.getPlugins();
      this.serializationSerializers = source.getSerializationSerializers();
      this.serializationsBindingsInbound = source.getSerializationsBindingsInbound();
      this.serializationsBindingsOutbound = source.getSerializationsBindingsOutbound();
    }
    @Override
    public DrasylConfig.Builder networkId(int networkId) {
      this.networkId = networkId;
      return this;
    }
    @Override
    public DrasylConfig.Builder identityProofOfWork(ProofOfWork identityProofOfWork) {
      this.identityProofOfWork = identityProofOfWork;
      return this;
    }
    @Override
    public DrasylConfig.Builder identityPublicKey(IdentityPublicKey identityPublicKey) {
      this.identityPublicKey = identityPublicKey;
      return this;
    }
    @Override
    public DrasylConfig.Builder identitySecretKey(IdentitySecretKey identitySecretKey) {
      this.identitySecretKey = identitySecretKey;
      return this;
    }
    @Override
    public DrasylConfig.Builder keyAgreementPublicKey(KeyAgreementPublicKey keyAgreementPublicKey) {
      this.keyAgreementPublicKey = keyAgreementPublicKey;
      return this;
    }
    @Override
    public DrasylConfig.Builder keyAgreementSecretKey(KeyAgreementSecretKey keyAgreementSecretKey) {
      this.keyAgreementSecretKey = keyAgreementSecretKey;
      return this;
    }
    @Override
    public DrasylConfig.Builder identityPath(Path identityPath) {
      if (identityPath == null) {
        throw new NullPointerException("Null identityPath");
      }
      this.identityPath = identityPath;
      return this;
    }
    @Override
    public DrasylConfig.Builder messageBufferSize(int messageBufferSize) {
      this.messageBufferSize = messageBufferSize;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteEnabled(boolean remoteEnabled) {
      this.remoteEnabled = remoteEnabled;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteBindHost(InetAddress remoteBindHost) {
      if (remoteBindHost == null) {
        throw new NullPointerException("Null remoteBindHost");
      }
      this.remoteBindHost = remoteBindHost;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteBindPort(int remoteBindPort) {
      this.remoteBindPort = remoteBindPort;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteEndpoints(Set remoteEndpoints) {
      this.remoteEndpoints = ImmutableSet.copyOf(remoteEndpoints);
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteExposeEnabled(boolean remoteExposeEnabled) {
      this.remoteExposeEnabled = remoteExposeEnabled;
      return this;
    }
    @Override
    public DrasylConfig.Builder remotePingInterval(Duration remotePingInterval) {
      if (remotePingInterval == null) {
        throw new NullPointerException("Null remotePingInterval");
      }
      this.remotePingInterval = remotePingInterval;
      return this;
    }
    @Override
    public DrasylConfig.Builder remotePingTimeout(Duration remotePingTimeout) {
      if (remotePingTimeout == null) {
        throw new NullPointerException("Null remotePingTimeout");
      }
      this.remotePingTimeout = remotePingTimeout;
      return this;
    }
    @Override
    public DrasylConfig.Builder remotePingCommunicationTimeout(Duration remotePingCommunicationTimeout) {
      if (remotePingCommunicationTimeout == null) {
        throw new NullPointerException("Null remotePingCommunicationTimeout");
      }
      this.remotePingCommunicationTimeout = remotePingCommunicationTimeout;
      return this;
    }
    @Override
    public DrasylConfig.Builder remotePingMaxPeers(int remotePingMaxPeers) {
      this.remotePingMaxPeers = remotePingMaxPeers;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteUniteMinInterval(Duration remoteUniteMinInterval) {
      if (remoteUniteMinInterval == null) {
        throw new NullPointerException("Null remoteUniteMinInterval");
      }
      this.remoteUniteMinInterval = remoteUniteMinInterval;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteSuperPeerEnabled(boolean remoteSuperPeerEnabled) {
      this.remoteSuperPeerEnabled = remoteSuperPeerEnabled;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteSuperPeerEndpoints(Set remoteSuperPeerEndpoints) {
      this.remoteSuperPeerEndpoints = ImmutableSet.copyOf(remoteSuperPeerEndpoints);
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteStaticRoutes(Map remoteStaticRoutes) {
      this.remoteStaticRoutes = ImmutableMap.copyOf(remoteStaticRoutes);
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteLocalHostDiscoveryEnabled(boolean remoteLocalHostDiscoveryEnabled) {
      this.remoteLocalHostDiscoveryEnabled = remoteLocalHostDiscoveryEnabled;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteLocalHostDiscoveryPath(Path remoteLocalHostDiscoveryPath) {
      if (remoteLocalHostDiscoveryPath == null) {
        throw new NullPointerException("Null remoteLocalHostDiscoveryPath");
      }
      this.remoteLocalHostDiscoveryPath = remoteLocalHostDiscoveryPath;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteLocalHostDiscoveryLeaseTime(Duration remoteLocalHostDiscoveryLeaseTime) {
      if (remoteLocalHostDiscoveryLeaseTime == null) {
        throw new NullPointerException("Null remoteLocalHostDiscoveryLeaseTime");
      }
      this.remoteLocalHostDiscoveryLeaseTime = remoteLocalHostDiscoveryLeaseTime;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteLocalHostDiscoveryWatchEnabled(boolean remoteLocalHostDiscoveryWatchEnabled) {
      this.remoteLocalHostDiscoveryWatchEnabled = remoteLocalHostDiscoveryWatchEnabled;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteLocalNetworkDiscoveryEnabled(boolean remoteLocalNetworkDiscoveryEnabled) {
      this.remoteLocalNetworkDiscoveryEnabled = remoteLocalNetworkDiscoveryEnabled;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteMessageMtu(int remoteMessageMtu) {
      this.remoteMessageMtu = remoteMessageMtu;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteMessageMaxContentLength(int remoteMessageMaxContentLength) {
      this.remoteMessageMaxContentLength = remoteMessageMaxContentLength;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteMessageComposedMessageTransferTimeout(Duration remoteMessageComposedMessageTransferTimeout) {
      if (remoteMessageComposedMessageTransferTimeout == null) {
        throw new NullPointerException("Null remoteMessageComposedMessageTransferTimeout");
      }
      this.remoteMessageComposedMessageTransferTimeout = remoteMessageComposedMessageTransferTimeout;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteMessageHopLimit(byte remoteMessageHopLimit) {
      this.remoteMessageHopLimit = remoteMessageHopLimit;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteMessageArmEnabled(boolean remoteMessageArmEnabled) {
      this.remoteMessageArmEnabled = remoteMessageArmEnabled;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteMessageArmSessionMaxCount(int remoteMessageArmSessionMaxCount) {
      this.remoteMessageArmSessionMaxCount = remoteMessageArmSessionMaxCount;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteMessageArmSessionMaxAgreements(int remoteMessageArmSessionMaxAgreements) {
      this.remoteMessageArmSessionMaxAgreements = remoteMessageArmSessionMaxAgreements;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteMessageArmSessionExpireAfter(Duration remoteMessageArmSessionExpireAfter) {
      if (remoteMessageArmSessionExpireAfter == null) {
        throw new NullPointerException("Null remoteMessageArmSessionExpireAfter");
      }
      this.remoteMessageArmSessionExpireAfter = remoteMessageArmSessionExpireAfter;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteMessageArmSessionRetryInterval(Duration remoteMessageArmSessionRetryInterval) {
      if (remoteMessageArmSessionRetryInterval == null) {
        throw new NullPointerException("Null remoteMessageArmSessionRetryInterval");
      }
      this.remoteMessageArmSessionRetryInterval = remoteMessageArmSessionRetryInterval;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteTcpFallbackEnabled(boolean remoteTcpFallbackEnabled) {
      this.remoteTcpFallbackEnabled = remoteTcpFallbackEnabled;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteTcpFallbackServerBindHost(InetAddress remoteTcpFallbackServerBindHost) {
      if (remoteTcpFallbackServerBindHost == null) {
        throw new NullPointerException("Null remoteTcpFallbackServerBindHost");
      }
      this.remoteTcpFallbackServerBindHost = remoteTcpFallbackServerBindHost;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteTcpFallbackServerBindPort(int remoteTcpFallbackServerBindPort) {
      this.remoteTcpFallbackServerBindPort = remoteTcpFallbackServerBindPort;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteTcpFallbackClientTimeout(Duration remoteTcpFallbackClientTimeout) {
      if (remoteTcpFallbackClientTimeout == null) {
        throw new NullPointerException("Null remoteTcpFallbackClientTimeout");
      }
      this.remoteTcpFallbackClientTimeout = remoteTcpFallbackClientTimeout;
      return this;
    }
    @Override
    public DrasylConfig.Builder remoteTcpFallbackClientAddress(InetSocketAddress remoteTcpFallbackClientAddress) {
      if (remoteTcpFallbackClientAddress == null) {
        throw new NullPointerException("Null remoteTcpFallbackClientAddress");
      }
      this.remoteTcpFallbackClientAddress = remoteTcpFallbackClientAddress;
      return this;
    }
    @Override
    public DrasylConfig.Builder intraVmDiscoveryEnabled(boolean intraVmDiscoveryEnabled) {
      this.intraVmDiscoveryEnabled = intraVmDiscoveryEnabled;
      return this;
    }
    @Override
    public DrasylConfig.Builder monitoringEnabled(boolean monitoringEnabled) {
      this.monitoringEnabled = monitoringEnabled;
      return this;
    }
    @Override
    public DrasylConfig.Builder monitoringHostTag(String monitoringHostTag) {
      if (monitoringHostTag == null) {
        throw new NullPointerException("Null monitoringHostTag");
      }
      this.monitoringHostTag = monitoringHostTag;
      return this;
    }
    @Override
    public DrasylConfig.Builder monitoringInfluxUri(URI monitoringInfluxUri) {
      if (monitoringInfluxUri == null) {
        throw new NullPointerException("Null monitoringInfluxUri");
      }
      this.monitoringInfluxUri = monitoringInfluxUri;
      return this;
    }
    @Override
    public DrasylConfig.Builder monitoringInfluxUser(String monitoringInfluxUser) {
      if (monitoringInfluxUser == null) {
        throw new NullPointerException("Null monitoringInfluxUser");
      }
      this.monitoringInfluxUser = monitoringInfluxUser;
      return this;
    }
    @Override
    public DrasylConfig.Builder monitoringInfluxPassword(MaskedString monitoringInfluxPassword) {
      if (monitoringInfluxPassword == null) {
        throw new NullPointerException("Null monitoringInfluxPassword");
      }
      this.monitoringInfluxPassword = monitoringInfluxPassword;
      return this;
    }
    @Override
    public DrasylConfig.Builder monitoringInfluxDatabase(String monitoringInfluxDatabase) {
      if (monitoringInfluxDatabase == null) {
        throw new NullPointerException("Null monitoringInfluxDatabase");
      }
      this.monitoringInfluxDatabase = monitoringInfluxDatabase;
      return this;
    }
    @Override
    public DrasylConfig.Builder monitoringInfluxReportingFrequency(Duration monitoringInfluxReportingFrequency) {
      if (monitoringInfluxReportingFrequency == null) {
        throw new NullPointerException("Null monitoringInfluxReportingFrequency");
      }
      this.monitoringInfluxReportingFrequency = monitoringInfluxReportingFrequency;
      return this;
    }
    @Override
    public DrasylConfig.Builder plugins(Set plugins) {
      this.plugins = ImmutableSet.copyOf(plugins);
      return this;
    }
    @Override
    public DrasylConfig.Builder serializationSerializers(Map serializationSerializers) {
      this.serializationSerializers = ImmutableMap.copyOf(serializationSerializers);
      return this;
    }
    @Override
    public DrasylConfig.Builder serializationsBindingsInbound(Map, String> serializationsBindingsInbound) {
      if (serializationsBindingsInboundBuilder$ != null) {
        throw new IllegalStateException("Cannot set serializationsBindingsInbound after calling serializationsBindingsInboundBuilder()");
      }
      this.serializationsBindingsInbound = ImmutableMap.copyOf(serializationsBindingsInbound);
      return this;
    }
    @Override
    public ImmutableMap.Builder, String> serializationsBindingsInboundBuilder() {
      if (serializationsBindingsInboundBuilder$ == null) {
        if (serializationsBindingsInbound == null) {
          serializationsBindingsInboundBuilder$ = ImmutableMap.builder();
        } else {
          serializationsBindingsInboundBuilder$ = ImmutableMap.builder();
          serializationsBindingsInboundBuilder$.putAll(serializationsBindingsInbound);
          serializationsBindingsInbound = null;
        }
      }
      return serializationsBindingsInboundBuilder$;
    }
    @Override
    DrasylConfig.Builder serializationsBindingsOutbound(Map, String> serializationsBindingsOutbound) {
      if (serializationsBindingsOutboundBuilder$ != null) {
        throw new IllegalStateException("Cannot set serializationsBindingsOutbound after calling serializationsBindingsOutboundBuilder()");
      }
      this.serializationsBindingsOutbound = ImmutableMap.copyOf(serializationsBindingsOutbound);
      return this;
    }
    @Override
    public ImmutableMap.Builder, String> serializationsBindingsOutboundBuilder() {
      if (serializationsBindingsOutboundBuilder$ == null) {
        if (serializationsBindingsOutbound == null) {
          serializationsBindingsOutboundBuilder$ = ImmutableMap.builder();
        } else {
          serializationsBindingsOutboundBuilder$ = ImmutableMap.builder();
          serializationsBindingsOutboundBuilder$.putAll(serializationsBindingsOutbound);
          serializationsBindingsOutbound = null;
        }
      }
      return serializationsBindingsOutboundBuilder$;
    }
    @Override
    DrasylConfig autoBuild() {
      if (serializationsBindingsInboundBuilder$ != null) {
        this.serializationsBindingsInbound = serializationsBindingsInboundBuilder$.build();
      } else if (this.serializationsBindingsInbound == null) {
        this.serializationsBindingsInbound = ImmutableMap.of();
      }
      if (serializationsBindingsOutboundBuilder$ != null) {
        this.serializationsBindingsOutbound = serializationsBindingsOutboundBuilder$.build();
      } else if (this.serializationsBindingsOutbound == null) {
        this.serializationsBindingsOutbound = ImmutableMap.of();
      }
      String missing = "";
      if (this.networkId == null) {
        missing += " networkId";
      }
      if (this.identityPath == null) {
        missing += " identityPath";
      }
      if (this.messageBufferSize == null) {
        missing += " messageBufferSize";
      }
      if (this.remoteEnabled == null) {
        missing += " remoteEnabled";
      }
      if (this.remoteBindHost == null) {
        missing += " remoteBindHost";
      }
      if (this.remoteBindPort == null) {
        missing += " remoteBindPort";
      }
      if (this.remoteEndpoints == null) {
        missing += " remoteEndpoints";
      }
      if (this.remoteExposeEnabled == null) {
        missing += " remoteExposeEnabled";
      }
      if (this.remotePingInterval == null) {
        missing += " remotePingInterval";
      }
      if (this.remotePingTimeout == null) {
        missing += " remotePingTimeout";
      }
      if (this.remotePingCommunicationTimeout == null) {
        missing += " remotePingCommunicationTimeout";
      }
      if (this.remotePingMaxPeers == null) {
        missing += " remotePingMaxPeers";
      }
      if (this.remoteUniteMinInterval == null) {
        missing += " remoteUniteMinInterval";
      }
      if (this.remoteSuperPeerEnabled == null) {
        missing += " remoteSuperPeerEnabled";
      }
      if (this.remoteSuperPeerEndpoints == null) {
        missing += " remoteSuperPeerEndpoints";
      }
      if (this.remoteStaticRoutes == null) {
        missing += " remoteStaticRoutes";
      }
      if (this.remoteLocalHostDiscoveryEnabled == null) {
        missing += " remoteLocalHostDiscoveryEnabled";
      }
      if (this.remoteLocalHostDiscoveryPath == null) {
        missing += " remoteLocalHostDiscoveryPath";
      }
      if (this.remoteLocalHostDiscoveryLeaseTime == null) {
        missing += " remoteLocalHostDiscoveryLeaseTime";
      }
      if (this.remoteLocalHostDiscoveryWatchEnabled == null) {
        missing += " remoteLocalHostDiscoveryWatchEnabled";
      }
      if (this.remoteLocalNetworkDiscoveryEnabled == null) {
        missing += " remoteLocalNetworkDiscoveryEnabled";
      }
      if (this.remoteMessageMtu == null) {
        missing += " remoteMessageMtu";
      }
      if (this.remoteMessageMaxContentLength == null) {
        missing += " remoteMessageMaxContentLength";
      }
      if (this.remoteMessageComposedMessageTransferTimeout == null) {
        missing += " remoteMessageComposedMessageTransferTimeout";
      }
      if (this.remoteMessageHopLimit == null) {
        missing += " remoteMessageHopLimit";
      }
      if (this.remoteMessageArmEnabled == null) {
        missing += " remoteMessageArmEnabled";
      }
      if (this.remoteMessageArmSessionMaxCount == null) {
        missing += " remoteMessageArmSessionMaxCount";
      }
      if (this.remoteMessageArmSessionMaxAgreements == null) {
        missing += " remoteMessageArmSessionMaxAgreements";
      }
      if (this.remoteMessageArmSessionExpireAfter == null) {
        missing += " remoteMessageArmSessionExpireAfter";
      }
      if (this.remoteMessageArmSessionRetryInterval == null) {
        missing += " remoteMessageArmSessionRetryInterval";
      }
      if (this.remoteTcpFallbackEnabled == null) {
        missing += " remoteTcpFallbackEnabled";
      }
      if (this.remoteTcpFallbackServerBindHost == null) {
        missing += " remoteTcpFallbackServerBindHost";
      }
      if (this.remoteTcpFallbackServerBindPort == null) {
        missing += " remoteTcpFallbackServerBindPort";
      }
      if (this.remoteTcpFallbackClientTimeout == null) {
        missing += " remoteTcpFallbackClientTimeout";
      }
      if (this.remoteTcpFallbackClientAddress == null) {
        missing += " remoteTcpFallbackClientAddress";
      }
      if (this.intraVmDiscoveryEnabled == null) {
        missing += " intraVmDiscoveryEnabled";
      }
      if (this.monitoringEnabled == null) {
        missing += " monitoringEnabled";
      }
      if (this.monitoringHostTag == null) {
        missing += " monitoringHostTag";
      }
      if (this.monitoringInfluxUri == null) {
        missing += " monitoringInfluxUri";
      }
      if (this.monitoringInfluxUser == null) {
        missing += " monitoringInfluxUser";
      }
      if (this.monitoringInfluxPassword == null) {
        missing += " monitoringInfluxPassword";
      }
      if (this.monitoringInfluxDatabase == null) {
        missing += " monitoringInfluxDatabase";
      }
      if (this.monitoringInfluxReportingFrequency == null) {
        missing += " monitoringInfluxReportingFrequency";
      }
      if (this.plugins == null) {
        missing += " plugins";
      }
      if (this.serializationSerializers == null) {
        missing += " serializationSerializers";
      }
      if (!missing.isEmpty()) {
        throw new IllegalStateException("Missing required properties:" + missing);
      }
      return new AutoValue_DrasylConfig(
          this.networkId,
          this.identityProofOfWork,
          this.identityPublicKey,
          this.identitySecretKey,
          this.keyAgreementPublicKey,
          this.keyAgreementSecretKey,
          this.identityPath,
          this.messageBufferSize,
          this.remoteEnabled,
          this.remoteBindHost,
          this.remoteBindPort,
          this.remoteEndpoints,
          this.remoteExposeEnabled,
          this.remotePingInterval,
          this.remotePingTimeout,
          this.remotePingCommunicationTimeout,
          this.remotePingMaxPeers,
          this.remoteUniteMinInterval,
          this.remoteSuperPeerEnabled,
          this.remoteSuperPeerEndpoints,
          this.remoteStaticRoutes,
          this.remoteLocalHostDiscoveryEnabled,
          this.remoteLocalHostDiscoveryPath,
          this.remoteLocalHostDiscoveryLeaseTime,
          this.remoteLocalHostDiscoveryWatchEnabled,
          this.remoteLocalNetworkDiscoveryEnabled,
          this.remoteMessageMtu,
          this.remoteMessageMaxContentLength,
          this.remoteMessageComposedMessageTransferTimeout,
          this.remoteMessageHopLimit,
          this.remoteMessageArmEnabled,
          this.remoteMessageArmSessionMaxCount,
          this.remoteMessageArmSessionMaxAgreements,
          this.remoteMessageArmSessionExpireAfter,
          this.remoteMessageArmSessionRetryInterval,
          this.remoteTcpFallbackEnabled,
          this.remoteTcpFallbackServerBindHost,
          this.remoteTcpFallbackServerBindPort,
          this.remoteTcpFallbackClientTimeout,
          this.remoteTcpFallbackClientAddress,
          this.intraVmDiscoveryEnabled,
          this.monitoringEnabled,
          this.monitoringHostTag,
          this.monitoringInfluxUri,
          this.monitoringInfluxUser,
          this.monitoringInfluxPassword,
          this.monitoringInfluxDatabase,
          this.monitoringInfluxReportingFrequency,
          this.plugins,
          this.serializationSerializers,
          this.serializationsBindingsInbound,
          this.serializationsBindingsOutbound);
    }
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy