public async Task StartAsync(CancellationToken cancellationToken = default(CancellationToken))
        {
            var existPath = await _client.ExistsAsync(ListenerPath);

            if (!existPath)
            {
                await _client.CreateRecursiveAsync(ListenerPath, Encoding.UTF8.GetBytes("Bucket.Listener"));
            }
            await _client.SubscribeDataChange(ListenerPath, async (ct, args) =>
            {
                if (!_isSubscribe)
                {
                    return;
                }
                var currentData = Encoding.UTF8.GetString(args.CurrentData.ToArray());
                if (!string.IsNullOrWhiteSpace(currentData))
                {
                    var command = JsonConvert.DeserializeObject <Values.NetworkCommand>(currentData);
                    if (args.Path.ToLower() == ListenerPath.ToLower())
                    {
                        switch (args.Type)
                        {
                        case Watcher.Event.EventType.NodeDataChanged:
                            await _extractCommand.ExtractCommandMessage(command);
                            break;
                        }
                    }
                }
            });

            _isSubscribe = true;
        }
Example #2
0
 public Task SubscribeAsync()
 {
     _subscriber = _redisClient.GetSubscriber(_redisListenerOptions.ConnectionString);
     return(_subscriber.SubscribeAsync(RedisListenerKey, (channel, message) =>
     {
         var command = JsonConvert.DeserializeObject <Bucket.Values.NetworkCommand>(message);
         _extractCommand.ExtractCommandMessage(command);
     }));
 }