Example #1
0
        public ZookeeperIDGenerator(string Connstring, int SessionTimeout = -1)
        {
            var watcher = new SingleWatcher();

            //初始化客户端
            _client = new ZooKeeper(Connstring, SessionTimeout, watcher, false);
            //初始化root节点
        }
Example #2
0
        public ZookeeperClient(string Connstring, int SessionTimeout = -1)
        {
            var watcher = new SingleWatcher();

            Watcher            = watcher;
            Watcher.RunProcess = new Action <WatchedEvent>((e) =>
            {
                if (e.getState() == org.apache.zookeeper.Watcher.Event.KeeperState.Disconnected)
                {
                    lock (_lockerList)
                    {
                        foreach (var item in _lockerList)
                        {
                            item.ZooEvent = WatcherResult.Disconnected;
                            item.Event.Set();
                        }
                        _lockerList.Clear();
                    }
                }
                else if (e.get_Type() == org.apache.zookeeper.Watcher.Event.EventType.NodeDeleted)
                {
                    var path = e.getPath();
                    lock (_lockerList)
                    {
                        var node = _lockerList.FirstOrDefault(w => $"/locks/{w.Name}" == path);
                        if (!string.IsNullOrWhiteSpace(node.Name))
                        {
                            node.ZooEvent = WatcherResult.UnLocked;
                            node.Event?.Set();
                            _lockerList.Remove(node);
                        }
                    }
                }
            });
            //初始化客户端
            _client = new ZooKeeper(Connstring, SessionTimeout, watcher, false);
            //初始化root节点
        }