private async Task <ServiceCommandDescriptor> GetServiceCommand(string path)
        {
            ServiceCommandDescriptor result = null;
            var watcher = new NodeMonitorWatcher(_zooKeeper, path,
                                                 (oldData, newData) => NodeChange(oldData, newData));

            if (await _zooKeeper.existsAsync(path) != null)
            {
                var data = (await _zooKeeper.getDataAsync(path, watcher)).Data;
                watcher.SetCurrentData(data);
                result = GetServiceCommand(data);
            }
            return(result);
        }
        private async Task <ServiceRoute> GetRoute(string path)
        {
            ServiceRoute result  = null;
            var          watcher = new NodeMonitorWatcher(_zooKeeper, path,
                                                          async(oldData, newData) => await NodeChange(oldData, newData));

            if (await _zooKeeper.existsAsync(path) != null)
            {
                var data = (await _zooKeeper.getDataAsync(path, watcher)).Data;
                watcher.SetCurrentData(data);
                result = await GetRoute(data);
            }
            return(result);
        }
Example #3
0
        private async Task <ServiceCommandDescriptor> GetServiceCommand(string path)
        {
            ServiceCommandDescriptor result = null;
            var watcher = new NodeMonitorWatcher(_consul, _manager, path,
                                                 (oldData, newData) => NodeChange(oldData, newData));
            var queryResult = await _consul.KV.Keys(path);

            if (queryResult.Response != null)
            {
                var data = (await _consul.GetDataAsync(path));
                watcher.SetCurrentData(data);
                result = GetServiceCommand(data);
            }
            return(result);
        }
        private async Task <ServiceCache> GetCache(string path)
        {
            ServiceCache result  = null;
            var          watcher = new NodeMonitorWatcher(_consul, _manager, path,
                                                          async(oldData, newData) => await NodeChange(oldData, newData));
            var queryResult = await _consul.KV.Keys(path);

            if (queryResult.Response != null)
            {
                var data = (await _consul.GetDataAsync(path));
                if (data != null)
                {
                    watcher.SetCurrentData(data);
                    result = await GetCache(data);
                }
            }
            return(result);
        }
Example #5
0
            protected override async Task ProcessImpl(WatchedEvent watchedEvent)
            {
                var path = Path;

                switch (watchedEvent.get_Type())
                {
                case Event.EventType.NodeDataChanged:
                    var watcher = new NodeMonitorWatcher(_zooKeeper, path, _action);
                    var data    = await _zooKeeper.getDataAsync(path, watcher);

                    var newData = data.Data;
                    _action(_currentData, newData);
                    watcher.SetCurrentData(newData);
                    break;

                    /*case Event.EventType.NodeDeleted:
                     *      _action(_currentData, null);
                     *      break;*/
                }
            }
Example #6
0
        private async Task <MqttServiceRoute> GetRoute(string path)
        {
            MqttServiceRoute result = null;
            var watcher             = new NodeMonitorWatcher(_consul, _manager, path,
                                                             async(oldData, newData) => await NodeChange(oldData, newData), tmpPath => {
                var index = tmpPath.LastIndexOf("/");
                return(_serviceHeartbeatManager.ExistsWhitelist(tmpPath.Substring(index + 1)));
            });

            var queryResult = await _consul.KV.Keys(path);

            if (queryResult.Response != null)
            {
                var data = (await _consul.GetDataAsync(path));
                if (data != null)
                {
                    watcher.SetCurrentData(data);
                    result = await GetRoute(data);
                }
            }
            return(result);
        }
        private IEnumerable <ServiceRoute> GetRoutes(IEnumerable <string> childrens)
        {
            var rootPath = _configInfo.RoutePath;

            if (!rootPath.EndsWith("/"))
            {
                rootPath += "/";
            }
            foreach (var children in childrens)
            {
                if (_logger.IsEnabled(LogLevel.Debug))
                {
                    _logger.Debug($"准备从节点:{children}中获取路由信息。");
                }

                var nodePath = $"{rootPath}{children}";
                var watcher  = new NodeMonitorWatcher(_zooKeeper, nodePath, newData =>
                {
                    if (_logger.IsEnabled(LogLevel.Information))
                    {
                        _logger.Information(newData == null ? $"路由:{nodePath}被删除。" : $"节点:{nodePath}的数据发生了变更,将更新路由信息。");
                    }

                    var route = GetRoute(newData);
                    //删除旧路由。
                    _routes = _routes.Where(i => i.ServiceDescriptor.Id != route.ServiceDescriptor.Id);
                    //添加新路由。
                    if (route != null)
                    {
                        _routes = _routes.Concat(new[] { route });
                    }
                    _routes = _routes.ToArray();
                });
                var data = _zooKeeper.GetData(nodePath, watcher, new Stat());
                yield return(GetRoute(data));
            }
        }
Example #8
0
        private async Task <ServiceCommandDescriptor> GetServiceCommand(string path)
        {
            ServiceCommandDescriptor result = null;
            var client = await GetConsulClient();

            var watcher = new NodeMonitorWatcher(GetConsulClient, _manager, path,
                                                 (oldData, newData) => NodeChange(oldData, newData), tmpPath =>
            {
                var index = tmpPath.LastIndexOf("/");
                return(_serviceHeartbeatManager.ExistsWhitelist(tmpPath.Substring(index + 1)));
            });
            var queryResult = await client.KV.Keys(path);

            if (queryResult.Response != null)
            {
                var data = (await client.GetDataAsync(path));
                if (data != null)
                {
                    watcher.SetCurrentData(data);
                    result = GetServiceCommand(data);
                }
            }
            return(result);
        }
        private IEnumerable<ServiceRoute> GetRoutes(IEnumerable<string> childrens)
        {
            var rootPath = _configInfo.RoutePath;
            if (!rootPath.EndsWith("/"))
                rootPath += "/";
            foreach (var children in childrens)
            {
                if (_logger.IsEnabled(LogLevel.Debug))
                    _logger.Debug($"准备从节点:{children}中获取路由信息。");

                var nodePath = $"{rootPath}{children}";
                var watcher = new NodeMonitorWatcher(_zooKeeper, nodePath, newData =>
                {
                    if (_logger.IsEnabled(LogLevel.Information))
                        _logger.Information(newData == null ? $"路由:{nodePath}被删除。" : $"节点:{nodePath}的数据发生了变更,将更新路由信息。");

                    var route = GetRoute(newData);
                    //删除旧路由。
                    _routes = _routes.Where(i => i.ServiceDescriptor.Id != route.ServiceDescriptor.Id);
                    //添加新路由。
                    if (route != null)
                        _routes = _routes.Concat(new[] { route });
                    _routes = _routes.ToArray();
                });
                var data = _zooKeeper.GetData(nodePath, watcher, new Stat());
                yield return GetRoute(data);
            }
        }
            protected override async Task ProcessImpl(WatchedEvent watchedEvent)
            {
                var path = Path;
                switch (watchedEvent.get_Type())
                {
                    case Event.EventType.NodeDataChanged:
                        var watcher = new NodeMonitorWatcher(_zooKeeper, path, _action);
                        var data = await _zooKeeper.getDataAsync(path, watcher);
                        var newData = data.Data;
                        _action(_currentData, newData);
                        watcher.SetCurrentData(newData);
                        break;

                        /*case Event.EventType.NodeDeleted:
                                _action(_currentData, null);
                                break;*/
                }
            }
 private async Task<ServiceRoute> GetRoute(string path)
 {
     var watcher = new NodeMonitorWatcher(_zooKeeper, path,
         async (oldData, newData) => await NodeChange(oldData, newData));
     var data = (await _zooKeeper.getDataAsync(path, watcher)).Data;
     watcher.SetCurrentData(data);
     return await GetRoute(data);
 }