private async Task <MqttServiceRoute> GetRoute(string path) { MqttServiceRoute result = null; var client = await GetConsulClient(); if (client != null) { if (!nodeWatchers.ContainsKey(path)) { var watcher = nodeWatchers.GetOrAdd(path, f => new NodeMonitorWatcher(GetConsulClient, _manager, path, async(oldData, newData) => await NodeChange(oldData, newData), null)); } var queryResult = await client.KV.Keys(path); if (queryResult.Response != null) { var data = (await client.GetDataAsync(path)); if (data != null) { result = await GetRoute(data); } } } return(result); }
private async Task <MqttServiceRoute> GetRoute(string path) { MqttServiceRoute result = null; var zooKeeperClient = await _zookeeperClientProvider.GetZooKeeperClient(); if (zooKeeperClient == null) { return(result); } using (var locker = await _lockerProvider.CreateLockAsync(path)) { result = await locker.Lock(async() => { if (await zooKeeperClient.ExistsAsync(path)) { var data = (await zooKeeperClient.GetDataAsync(path)).ToArray(); if (!nodeWatchers.ContainsKey(path)) { var watcher = nodeWatchers.GetOrAdd(path, f => new NodeMonitorWatcher(path, async(oldData, newData) => await NodeChange(oldData, newData))); await zooKeeperClient.SubscribeDataChange(path, watcher.HandleNodeDataChange); } return(await GetRoute(data)); } return(null); }); } return(result); }
private async Task <MqttServiceRoute> GetRoute(string path) { MqttServiceRoute result = null; var client = await GetConsulClient(); var watcher = new NodeMonitorWatcher(GetConsulClient, _manager, path, async(oldData, newData) => await 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 = await GetRoute(data); } } return(result); }
private async Task <MqttServiceRoute> GetRoute(string path) { MqttServiceRoute 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); }
public MqttServiceRouteChangedEventArgs(MqttServiceRoute route, MqttServiceRoute oldRoute) : base(route) { OldRoute = oldRoute; }
public MqttServiceRouteEventArgs(MqttServiceRoute route) { Route = route; }