当前位置: 首页>>代码示例>>Scala>>正文


Scala Watcher类代码示例

本文整理汇总了Scala中org.apache.zookeeper.Watcher的典型用法代码示例。如果您正苦于以下问题:Scala Watcher类的具体用法?Scala Watcher怎么用?Scala Watcher使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了Watcher类的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Scala代码示例。

示例1: ApacheWatcher

//设置package包名称以及导入依赖的类
package com.twitter.finagle.serverset2.client.apache

import com.twitter.finagle.serverset2.client.{EventDeliveryThread, EventStats, WatchState}
import com.twitter.finagle.stats.{NullStatsReceiver, StatsReceiver}
import com.twitter.util.Var
import org.apache.zookeeper.{Watcher, WatchedEvent}

private[serverset2] class ApacheWatcher(statsIn: StatsReceiver = NullStatsReceiver)
    extends Watcher with EventStats {
  protected val stats = statsIn
  val state = Var[WatchState](WatchState.Pending)
  def process(event: WatchedEvent) = {
    event.getType match {
      case Watcher.Event.EventType.None =>
        EventDeliveryThread.offer(
          state,
          WatchState.SessionState(ApacheSessionState(event.getState)))
      case e =>
        EventDeliveryThread.offer(
          state,
          WatchState.Determined(EventFilter(ApacheNodeEvent(e))))
    }
  }
} 
开发者ID:wenkeyang,项目名称:finagle,代码行数:25,代码来源:ApacheWatcher.scala

示例2: ZooKeeperHealthHandler

//设置package包名称以及导入依赖的类
package com.twitter.finagle.zookeeper

import com.twitter.common.quantity.{Amount, Time => CommonTime}
import com.twitter.common.zookeeper.{ZooKeeperClient, ZooKeeperUtils}
import com.twitter.concurrent.{Offer, Broker, AsyncMutex}
import com.twitter.conversions.common.quantity._
import com.twitter.finagle.addr.StabilizingAddr.State._
import com.twitter.finagle.util.InetSocketAddressUtil
import com.twitter.util.Duration
import java.net.InetSocketAddress
import org.apache.zookeeper.Watcher.Event.KeeperState
import org.apache.zookeeper.{Watcher, WatchedEvent}
import scala.collection.JavaConverters._
import scala.collection._

private[finagle] class ZooKeeperHealthHandler extends Watcher {
  private[this] val mu = new AsyncMutex
  val pulse = new Broker[Health]()

  def process(evt: WatchedEvent) = for {
    permit <- mu.acquire()
    () <- evt.getState match {
      case KeeperState.SyncConnected => pulse ! Healthy
      case _ => pulse ! Unhealthy
    }
  } permit.release()
}

private[finagle] object DefaultZkClientFactory
  extends ZkClientFactory(Amount.of(
    ZooKeeperUtils.DEFAULT_ZK_SESSION_TIMEOUT.getValue.toLong,
    ZooKeeperUtils.DEFAULT_ZK_SESSION_TIMEOUT.getUnit).toDuration)

private[finagle] class ZkClientFactory(val sessionTimeout: Duration) {
  private[this] val zkClients: mutable.Map[Set[InetSocketAddress], ZooKeeperClient] = mutable.Map()

  def hostSet(hosts: String) = InetSocketAddressUtil.parseHosts(hosts).toSet

  def get(zkHosts: Set[InetSocketAddress]): (ZooKeeperClient, Offer[Health]) = synchronized {
    val client = zkClients.getOrElseUpdate(zkHosts, new ZooKeeperClient(
        Amount.of(sessionTimeout.inMillis.toInt, CommonTime.MILLISECONDS),
        zkHosts.asJava))
    // TODO: Watchers are tied to the life of the client,
    // which, in turn, is tied to the life of ZkClientFactory.
    // Maybe we should expose a way to unregister watchers.
    val healthHandler = new ZooKeeperHealthHandler
    client.register(healthHandler)
    (client, healthHandler.pulse.recv)
  }

  private[zookeeper] def clear() = synchronized { zkClients.clear() }
} 
开发者ID:wenkeyang,项目名称:finagle,代码行数:53,代码来源:ZkClientFactory.scala

示例3: ZKApi

//设置package包名称以及导入依赖的类
package org.kylin.scala.zookeeper

import org.apache.zookeeper.{WatchedEvent, Watcher, ZooKeeper}


object ZKApi {
  def main(args: Array[String]): Unit = {
    val zkAddress = "ip"
    val zkClientPort = "2181"
    val zkWatcher = new Watcher {
      override def process(event: WatchedEvent): Unit = println("watcher!")
    }
    val zkTest: ZooKeeper = new ZooKeeper(zkAddress, zkClientPort.toInt, zkWatcher)
    zkTest.getChildren("/", zkWatcher).toString.foreach(print)

  }
} 
开发者ID:jinjuting,项目名称:kylin-scala-1.1.0,代码行数:18,代码来源:ZKApi.scala


注:本文中的org.apache.zookeeper.Watcher类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。