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

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

The newest version!
package eventstore
package j

import Settings.Default
import Builder.{ ResolveLinkTosSnippet, RequireMasterSnippet }
import java.net.InetSocketAddress
import eventstore.cluster.ClusterSettings
import scala.concurrent.duration._

class SettingsBuilder extends Builder[Settings]
    with RequireMasterSnippet[SettingsBuilder]
    with ResolveLinkTosSnippet[SettingsBuilder] {

  protected var _address = Default.address
  protected var _maxReconnections = Default.maxReconnections
  protected var _reconnectionDelayMin = Default.reconnectionDelayMin
  protected var _reconnectionDelayMax = Default.reconnectionDelayMax
  protected var _defaultCredentials = Default.defaultCredentials
  protected var _heartbeatInterval = Default.heartbeatInterval
  protected var _heartbeatTimeout = Default.heartbeatTimeout
  protected var _operationMaxRetries = Default.operationMaxRetries
  protected var _connectionTimeout = Default.connectionTimeout
  protected var _operationTimeout = Default.operationTimeout
  protected var _readBatchSize = Default.readBatchSize
  protected var _backpressure = Default.backpressure
  protected var _cluster = Default.cluster

  def address(x: InetSocketAddress): SettingsBuilder = set { _address = x }

  def address(host: String): SettingsBuilder = address(host :: Default.address.getPort)

  def connectionTimeout(x: FiniteDuration): SettingsBuilder = set { _connectionTimeout = x }

  def connectionTimeout(length: Long, unit: TimeUnit): SettingsBuilder = connectionTimeout(FiniteDuration(length, unit))

  def connectionTimeout(seconds: Long): SettingsBuilder = connectionTimeout(seconds, SECONDS)

  def maxReconnections(x: Int): SettingsBuilder = set { _maxReconnections = x }

  def reconnectionDelayMin(x: FiniteDuration): SettingsBuilder = set { _reconnectionDelayMin = x }

  def reconnectionDelayMin(length: Long, unit: TimeUnit): SettingsBuilder = reconnectionDelayMin(FiniteDuration(length, unit))

  def reconnectionDelayMin(seconds: Long): SettingsBuilder = reconnectionDelayMin(seconds, SECONDS)

  def reconnectionDelayMax(x: FiniteDuration): SettingsBuilder = set { _reconnectionDelayMax = x }

  def reconnectionDelayMax(length: Long, unit: TimeUnit): SettingsBuilder = reconnectionDelayMax(FiniteDuration(length, unit))

  def reconnectionDelayMax(seconds: Long): SettingsBuilder = reconnectionDelayMax(seconds, SECONDS)

  def defaultCredentials(x: Option[UserCredentials]): SettingsBuilder = set { _defaultCredentials = x }

  def defaultCredentials(x: UserCredentials): SettingsBuilder = defaultCredentials(Option(x))

  def defaultCredentials(login: String, password: String): SettingsBuilder =
    defaultCredentials(UserCredentials(login = login, password = password))

  def noDefaultCredentials: SettingsBuilder = defaultCredentials(None)

  def heartbeatInterval(x: FiniteDuration): SettingsBuilder = set { _heartbeatInterval = x }

  def heartbeatInterval(length: Long, unit: TimeUnit): SettingsBuilder = heartbeatInterval(FiniteDuration(length, unit))

  def heartbeatInterval(seconds: Long): SettingsBuilder = heartbeatInterval(seconds, SECONDS)

  def heartbeatTimeout(x: FiniteDuration): SettingsBuilder = set { _heartbeatTimeout = x }

  def heartbeatTimeout(length: Long, unit: TimeUnit): SettingsBuilder = heartbeatTimeout(FiniteDuration(length, unit))

  def heartbeatTimeout(seconds: Long): SettingsBuilder = heartbeatTimeout(seconds, SECONDS)

  def operationTimeout(x: FiniteDuration): SettingsBuilder = set { _operationTimeout = x }

  def limitAttemptsForOperationTo(limit: Int): SettingsBuilder = {
    require(limit >= 1, s"limit must be >= 1 but is $limit")
    operationMaxRetries(limit - 1)
  }

  def limitRetriesForOperationTo(limit: Int): SettingsBuilder = {
    require(limit >= 0, s"limit must be >= 0 but is $limit")
    operationMaxRetries(limit)
  }

  def keepRetrying(): SettingsBuilder = {
    operationMaxRetries(-1)
  }

  def operationMaxRetries(x: Int): SettingsBuilder = set { _operationMaxRetries = x }

  def operationTimeout(length: Long, unit: TimeUnit): SettingsBuilder = operationTimeout(FiniteDuration(length, unit))

  def operationTimeout(seconds: Long): SettingsBuilder = operationTimeout(seconds, SECONDS)

  override def resolveLinkTos(x: Boolean) = super.resolveLinkTos(x)

  override def performOnAnyNode: SettingsBuilder = super.performOnAnyNode
  override def performOnMasterOnly: SettingsBuilder = super.performOnMasterOnly
  override def requireMaster(x: Boolean): SettingsBuilder = super.requireMaster(x)

  def readBatchSize(x: Int): SettingsBuilder = set { _readBatchSize = x }

  def backpressure(x: BackpressureSettings): SettingsBuilder = set { _backpressure = x }

  def cluster(x: ClusterSettings): SettingsBuilder = set { _cluster = Some(x) }

  def build: Settings = Settings(
    address = _address,
    maxReconnections = _maxReconnections,
    reconnectionDelayMin = _reconnectionDelayMin,
    reconnectionDelayMax = _reconnectionDelayMax,
    defaultCredentials = _defaultCredentials,
    heartbeatInterval = _heartbeatInterval,
    heartbeatTimeout = _heartbeatTimeout,
    operationMaxRetries = _operationMaxRetries,
    connectionTimeout = _connectionTimeout,
    resolveLinkTos = _resolveLinkTos,
    requireMaster = _requireMaster,
    readBatchSize = _readBatchSize,
    backpressure = _backpressure,
    cluster = _cluster)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy