Exemple #1
0
 protected RedisSubBase(RedisDb redisDb, RedisSubKey key, TimeSpan?subscribeTimeout = null)
 {
     RedisDb              = redisDb;
     Key                  = key.Key;
     PatternMode          = key.PatternMode;
     FullKey              = RedisDb.FullKey(Key);
     Subscriber           = RedisDb.Redis.GetSubscriber();
     RedisChannel         = new RedisChannel(FullKey, PatternMode);
     _onMessage           = OnMessage;
     _subscribeTimeoutCts = new CancellationTokenSource(subscribeTimeout ?? DefaultSubscribeTimeout);
     WhenSubscribed       = Task.Run(async() => {
         var cancellationToken = _subscribeTimeoutCts.Token;
         try {
             await Subscriber
             .SubscribeAsync(RedisChannel, _onMessage)
             .WithFakeCancellation(cancellationToken)
             .ConfigureAwait(false);
         }
         catch (OperationCanceledException) {
             if (IsDisposeStarted)
             {
                 throw;
             }
             if (cancellationToken.IsCancellationRequested)
             {
                 throw new TimeoutException();
             }
             throw;
         }
     }, CancellationToken.None);
 }
Exemple #2
0
 public RedisActionSub(RedisDb redisDb, RedisSubKey key,
                       Action <RedisChannel, RedisValue> messageHandler,
                       TimeSpan?subscribeTimeout = null)
     : base(redisDb, key, subscribeTimeout)
     => MessageHandler = messageHandler;
Exemple #3
0
 public RedisTaskSub(RedisDb redisDb, RedisSubKey key,
                     TimeSpan?subscribeTimeout = null)
     : base(redisDb, key, subscribeTimeout)
     => Reset();
Exemple #4
0
 public RedisChannelSub(RedisDb redisDb, RedisSubKey key,
                        Channel <RedisValue>?channel = null,
                        TimeSpan?subscribeTimeout    = null)
     : base(redisDb, key, subscribeTimeout)
     => _channel = channel ?? Channel.CreateUnbounded <RedisValue>(