Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #5
0
 public MqttServiceRouteChangedEventArgs(MqttServiceRoute route, MqttServiceRoute oldRoute) : base(route)
 {
     OldRoute = oldRoute;
 }
Example #6
0
 public MqttServiceRouteEventArgs(MqttServiceRoute route)
 {
     Route = route;
 }