package io.fathom.auto.zookeeper; import java.io.IOException; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooKeeper; import org.apache.zookeeper.ZooKeeper.States; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ZookeeperClient { private static final Logger log = LoggerFactory.getLogger(ZookeeperClient.class); private final String connectString; public ZookeeperClient(String connectString) { this.connectString = connectString; } ZooKeeper zk; public synchronized ZooKeeper getZk() throws IOException { if (zk == null) { int sessionTimeout = 5000; Watcher watcher = new Watcher() { @Override public void process(WatchedEvent event) { onWatchEvent(event); } }; zk = new ZooKeeper(connectString, sessionTimeout, watcher); } return zk; } protected void onWatchEvent(WatchedEvent event) { log.info("Got ZK event: {}", event); } /** * Note this is only for versions > 3.4.5 */ /* * public String getConfig() throws IOException, KeeperException { Stat stat * = new Stat(); byte[] config; try { config = getZk().getConfig(false, * stat); } catch (InterruptedException e) { * Thread.currentThread().interrupt(); throw new InterruptedError(e); } * String s = new String(config, Charsets.UTF_8); * * return s; } */ public States getState() throws IOException, KeeperException { States states = getZk().getState(); return states; } }