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); }
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); }
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 <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)); } }
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); }