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

nirvana.support.services.ZookeeperTemplate.scala Maven / Gradle / Ivy

// Copyright 2014 Jun Tsai. All rights reserved.
// site: http://www.ganshane.com
package nirvana.support.services

import org.apache.zookeeper.{WatchedEvent, Watcher, ZooKeeper, CreateMode}
import java.util.concurrent._
import org.apache.zookeeper.Watcher.Event.KeeperState

/**
 * zookeeper template
 * @author jcai
 */
class ZookeeperTemplate(val address:String,
                        val basePath:Option[String]=None,
                        val sessionTimeout:Int=6000)
  extends ServiceLifecycle
  with LoggerSupport
  with ZkClientSupport
  with ZkDeletePathSupport
  with ZkPathCreatorSupport
  with ZkNodeDataSupport
  with RunInNoExceptionThrown
  with ZkChildrenSupport
  with ZkEphemeralPathSupport{

  //only for test session expired
  private [nirvana] def buildAnotherSession={
    val zookeeper = zkClient.getZookeeperClient.getZooKeeper
    val (sessionId,sessionPasswd) = (zookeeper.getSessionId,zookeeper.getSessionPasswd)
    val self = new CountDownLatch(1)
    val zk=new ZooKeeper(address,sessionTimeout,new Watcher {
      def process(event: WatchedEvent) {
        event.getState match{
          case KeeperState.SyncConnected =>
            //monitor
            logger.debug("Connected to cloud server")
            self.countDown()
          case other=>
            logger.debug("other state:{}",event.getState)
        }

      }
    },sessionId,sessionPasswd)
    self.await()

    zk
  }
}

class Node(val path:String,val data:Option[Array[Byte]],val createMode:CreateMode) extends Comparable[Node]{
  override def equals(p1: Any) = {
    val p = p1.asInstanceOf[Node]
    p.path == path
  }

  def compareTo(p1: Node) = p1.path.compareTo(path)
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy