protected override async Task ConnectAsync() { //Get subscription position _position = await _subscriptionManager.GetSubscriptionPosition(_subscriptionId, true); _store = await _storeProvider.GetStreamStore(); if (_streamId == null) { _allSubscription = _store.SubscribeToAll(_position, HandleSubscriptionEvent, HandleSubscriptionDropped); _status = SubscriptionConnectionStatus.Connected; _startDate = DateTime.UtcNow; } else { int?intPos = (_position != null) ? Convert.ToInt32(_position) : default(int?); _subscription = _store.SubscribeToStream(_streamId.Id, intPos, HandleSubscriptionEvent, HandleSubscriptionDropped); _status = SubscriptionConnectionStatus.Connected; _startDate = DateTime.UtcNow; } }
private void HandleSubscriptionDropped(IStreamSubscription subscription, SubscriptionDroppedReason reason, Exception exception = null) { if (_cancellationRequestedByUser) { _logger.LogInformation($"Subscription stopped by user: {subscription.Name}"); _connected = false; return; } if (exception != null) { _logger.LogError(exception, $"{subscription.Name} subscription dropped: {reason.ToString()}"); } else { _logger.LogError($"{subscription.Name} subscription dropped: {reason.ToString()}"); } _connected = false; }
protected override async Task ConnectAsync() { _store = await _storeProvider.GetStreamStore(); if (_streamId == null) { _allSubscription = _store.SubscribeToAll( _startPosition == StreamPosition.End ? -1 : 0, (_, message, cancellationToken) => { return(HandleEvent(message, cancellationToken)); }, (sub, reason, ex) => { HandleSubscriptionDropped(sub, reason, ex); }); _status = SubscriptionConnectionStatus.Connected; _startDate = DateTime.UtcNow; } else { _streamSubscription = _store.SubscribeToStream( _streamId.Id, _startPosition == StreamPosition.End ? -1 : 0, (_, message, cancellationToken) => { return(HandleEvent(message, cancellationToken)); }, (sub, reason, ex) => { HandleSubscriptionDropped(sub, reason, ex); }); _status = SubscriptionConnectionStatus.Connected; _startDate = DateTime.UtcNow; } }
private Task HandleSubscriptionEvent(IStreamSubscription subscription, StreamMessage message, CancellationToken token) { return(HandleEvent(message, token)); }