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

eventstore.j.ClusterSettingsBuilder.scala Maven / Gradle / Ivy

The newest version!
package eventstore
package j

import java.net.InetSocketAddress
import cluster.ClusterSettings
import cluster.GossipSeedsOrDns
import cluster.GossipSeedsOrDns.{ GossipSeeds, ClusterDns }
import scala.concurrent.duration._

class ClusterSettingsBuilder extends Builder[ClusterSettings] with ChainSet[ClusterSettingsBuilder] {
  private val default = ClusterSettings()
  protected var _gossipSeedsOrDns: GossipSeedsOrDns = default.gossipSeedsOrDns
  protected var _dnsLookupTimeout = default.dnsLookupTimeout
  protected var _maxDiscoverAttempts = default.maxDiscoverAttempts
  protected var _discoverAttemptInterval = default.discoverAttemptInterval
  protected var _discoveryInterval = default.discoveryInterval
  protected var _gossipTimeout = default.gossipTimeout

  def clusterDns(dns: String): ClusterSettingsBuilder = set { _gossipSeedsOrDns = ClusterDns(dns) }

  def clusterDns(dns: String, port: Int): ClusterSettingsBuilder = set { _gossipSeedsOrDns = ClusterDns(dns, port) }

  def gossipSeeds(seeds: InetSocketAddress*): ClusterSettingsBuilder = set {
    _gossipSeedsOrDns = GossipSeeds(seeds.toList)
  }

  def dnsLookupTimeout(x: FiniteDuration): ClusterSettingsBuilder = set { _dnsLookupTimeout = x }

  def dnsLookupTimeout(length: Long, unit: TimeUnit): ClusterSettingsBuilder = dnsLookupTimeout(FiniteDuration(length, unit))

  def dnsLookupTimeout(seconds: Long): ClusterSettingsBuilder = dnsLookupTimeout(seconds, SECONDS)

  def maxDiscoverAttempts(x: Int): ClusterSettingsBuilder = set { _maxDiscoverAttempts = x }

  def discoverAttemptInterval(x: FiniteDuration): ClusterSettingsBuilder = set { _discoverAttemptInterval = x }

  def discoverAttemptInterval(length: Long, unit: TimeUnit): ClusterSettingsBuilder = discoverAttemptInterval(FiniteDuration(length, unit))

  def discoverAttemptInterval(seconds: Long): ClusterSettingsBuilder = discoverAttemptInterval(seconds, SECONDS)

  def discoveryInterval(x: FiniteDuration): ClusterSettingsBuilder = set { _discoveryInterval = x }

  def discoveryInterval(length: Long, unit: TimeUnit): ClusterSettingsBuilder = discoveryInterval(FiniteDuration(length, unit))

  def discoveryInterval(seconds: Long): ClusterSettingsBuilder = discoveryInterval(seconds, SECONDS)

  def gossipTimeout(x: FiniteDuration): ClusterSettingsBuilder = set { _gossipTimeout = x }

  def gossipTimeout(length: Long, unit: TimeUnit): ClusterSettingsBuilder = gossipTimeout(FiniteDuration(length, unit))

  def gossipTimeout(seconds: Long): ClusterSettingsBuilder = gossipTimeout(seconds, SECONDS)

  def build: ClusterSettings = ClusterSettings(
    gossipSeedsOrDns = _gossipSeedsOrDns,
    dnsLookupTimeout = _dnsLookupTimeout,
    maxDiscoverAttempts = _maxDiscoverAttempts,
    discoverAttemptInterval = _discoverAttemptInterval,
    discoveryInterval = _discoveryInterval,
    gossipTimeout = _gossipTimeout)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy