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

com.twitter.zk.CommonConnector.scala Maven / Gradle / Ivy

The newest version!
package com.twitter.zk

import scala.collection.JavaConverters._

import com.twitter.common.zookeeper.ZooKeeperClient
import com.twitter.conversions.common.quantity._
import com.twitter.util.{Duration, FuturePool}

/**
 * Adapts a common ZooKeeperClient for use as a Connector.
 * This connector blocks, but it doesn't seem worth a FuturePool only for this connector.
 */
class CommonConnector(
    val underlying: ZooKeeperClient,
    timeout: Duration = COMMON_FOREVER)
    (implicit pool: FuturePool)
extends Connector {
  underlying.register(sessionBroker)

  def apply() = pool { underlying.get(timeout.toLongAmount) }
  def release() = pool { underlying.close() }
}

object CommonConnector {
  def apply(underlying: ZooKeeperClient,
            connectTimeout: Duration = COMMON_FOREVER)
           (implicit pool: FuturePool): CommonConnector = {
    new CommonConnector(underlying, connectTimeout)(pool)
  }

  def apply(addrs: Seq[java.net.InetSocketAddress],
            sessionTimeout: Duration)
           (implicit pool: FuturePool): CommonConnector = {
    apply(new ZooKeeperClient(sessionTimeout.toIntAmount, addrs.asJava))(pool)
  }

  def apply(addrs: Seq[java.net.InetSocketAddress],
            sessionTimeout: Duration,
            connectTimeout: Duration)
           (implicit pool: FuturePool): CommonConnector = {
    apply(new ZooKeeperClient(sessionTimeout.toIntAmount, addrs.asJava), connectTimeout)(pool)
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy