public StreamConsumer(StreamImpl <T> stream, string streamProviderName, IStreamProviderRuntime runtime, IStreamPubSub pubSub, ILogger logger, bool isRewindable) { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } if (runtime == null) { throw new ArgumentNullException(nameof(runtime)); } if (pubSub == null) { throw new ArgumentNullException(nameof(pubSub)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } this.logger = logger; this.stream = stream; this.streamProviderName = streamProviderName; this.providerRuntime = runtime; this.pubSub = pubSub; this.IsRewindable = isRewindable; this.myExtension = null; this.myGrainReference = null; this.bindExtLock = new AsyncLock(); }
public StreamConsumer(StreamImpl <T> stream, string streamProviderName, IStreamProviderRuntime providerUtilities, IStreamPubSub pubSub, bool isRewindable) { if (stream == null) { throw new ArgumentNullException("stream"); } if (providerUtilities == null) { throw new ArgumentNullException("providerUtilities"); } if (pubSub == null) { throw new ArgumentNullException("pubSub"); } logger = TraceLogger.GetLogger(string.Format("StreamConsumer<{0}>-{1}", typeof(T).Name, stream), TraceLogger.LoggerType.Runtime); this.stream = stream; this.streamProviderName = streamProviderName; providerRuntime = providerUtilities; this.pubSub = pubSub; IsRewindable = isRewindable; myExtension = null; myGrainReference = null; bindExtLock = new AsyncLock(); }
internal StreamSubscriptionHandleImpl <T> SetObserver <T>( GuidId subscriptionId, StreamImpl <T> stream, IAsyncObserver <T> observer, IAsyncBatchObserver <T> batchObserver, StreamSequenceToken token, string filterData) { if (null == stream) { throw new ArgumentNullException("stream"); } try { if (logger.IsEnabled(LogLevel.Debug)) { logger.Debug("{0} AddObserver for stream {1}", providerRuntime.ExecutingEntityIdentity(), stream.InternalStreamId); } // Note: The caller [StreamConsumer] already handles locking for Add/Remove operations, so we don't need to repeat here. var handle = new StreamSubscriptionHandleImpl <T>(subscriptionId, observer, batchObserver, stream, token, filterData); return(allStreamObservers.AddOrUpdate(subscriptionId, handle, (key, old) => handle) as StreamSubscriptionHandleImpl <T>); } catch (Exception exc) { logger.Error(ErrorCode.StreamProvider_AddObserverException, $"{providerRuntime.ExecutingEntityIdentity()} StreamConsumerExtension.AddObserver({stream.InternalStreamId}) caugth exception.", exc); throw; } }
public ObserverWrapper(IAsyncObserver <T> observer, StreamImpl <T> stream, IStreamFilterPredicateWrapper filterWrapper) { this.observer = observer; streamImpl = stream; ObserverGuid = Guid.NewGuid(); this.filterWrapper = filterWrapper; }
internal StreamSubscriptionHandle <T> AddObserver <T>(StreamImpl <T> stream, IAsyncObserver <T> observer, IStreamFilterPredicateWrapper filter) { if (null == stream) { throw new ArgumentNullException("stream"); } if (null == observer) { throw new ArgumentNullException("observer"); } try { if (logger.IsVerbose) { logger.Verbose("{0} AddObserver for stream {1}", providerRuntime.ExecutingEntityIdentity(), stream); } // Note: The caller [StreamConsumer] already handles locking for Add/Remove operations, so we don't need to repeat here. IStreamObservers obs = allStreamObservers.GetOrAdd(stream.StreamId, new ObserversCollection <T>()); var wrapper = new ObserverWrapper <T>(observer, stream, filter); ((ObserversCollection <T>)obs).AddObserver(wrapper); return(wrapper); } catch (Exception exc) { logger.Error((int)ErrorCode.StreamProvider_AddObserverException, String.Format("{0} StreamConsumerExtension.AddObserver({1}) caugth exception.", providerRuntime.ExecutingEntityIdentity(), stream), exc); throw; } }
public StreamSubscriptionHandleImpl(GuidId subscriptionId, IAsyncObserver <T> observer, IAsyncBatchObserver <T> batchObserver, StreamImpl <T> streamImpl, StreamSequenceToken token) { this.subscriptionId = subscriptionId ?? throw new ArgumentNullException("subscriptionId"); this.observer = observer; this.batchObserver = batchObserver; this.streamImpl = streamImpl ?? throw new ArgumentNullException("streamImpl"); this.isRewindable = streamImpl.IsRewindable; if (IsRewindable) { expectedToken = StreamHandshakeToken.CreateStartToken(token); } }
internal PersistentStreamProducer(StreamImpl <T> stream, IStreamProviderRuntime providerUtilities, IQueueAdapter queueAdapter, bool isRewindable) { this.stream = stream; this.queueAdapter = queueAdapter; IsRewindable = isRewindable; var logger = providerUtilities.GetLogger(this.GetType().Name); if (logger.IsVerbose) { logger.Verbose("Created PersistentStreamProducer for stream {0}, of type {1}, and with Adapter: {2}.", stream.ToString(), typeof(T), this.queueAdapter.Name); } }
internal PersistentStreamProducer(StreamImpl <T> stream, IStreamProviderRuntime providerUtilities, IQueueAdapter queueAdapter, bool isRewindable, SerializationManager serializationManager) { this.stream = stream; this.queueAdapter = queueAdapter; this.serializationManager = serializationManager; IsRewindable = isRewindable; var logger = providerUtilities.ServiceProvider.GetRequiredService <ILoggerFactory>().CreateLogger(this.GetType().Name); if (logger.IsEnabled(LogLevel.Debug)) { logger.Debug("Created PersistentStreamProducer for stream {0}, of type {1}, and with Adapter: {2}.", stream.ToString(), typeof(T), this.queueAdapter.Name); } }
internal PersistentStreamProducer(StreamImpl <T> stream, IStreamProviderRuntime providerUtilities, IQueueAdapter queueAdapter, bool isRewindable, DeepCopier deepCopier) { this.stream = stream; this.queueAdapter = queueAdapter; this.deepCopier = deepCopier; IsRewindable = isRewindable; var logger = providerUtilities.ServiceProvider.GetRequiredService <ILogger <PersistentStreamProducer <T> > >(); if (logger.IsEnabled(LogLevel.Debug)) { logger.LogDebug("Created PersistentStreamProducer for stream {StreamId}, of type {ElementType}, and with Adapter: {QueueAdapterName}.", stream.ToString(), typeof(T), this.queueAdapter.Name); } }
public StreamSubscriptionHandleImpl(GuidId subscriptionId, IAsyncObserver <T> observer, StreamImpl <T> streamImpl, IStreamFilterPredicateWrapper filterWrapper, StreamSequenceToken token) { if (subscriptionId == null) { throw new ArgumentNullException("subscriptionId"); } if (streamImpl == null) { throw new ArgumentNullException("streamImpl"); } this.subscriptionId = subscriptionId; this.observer = observer; this.streamImpl = streamImpl; this.filterWrapper = filterWrapper; expectedToken = StreamHandshakeToken.CreateStartToken(token); }
public StreamSubscriptionHandleImpl(GuidId subscriptionId, IAsyncObserver <T> observer, StreamImpl <T> stream, IStreamFilterPredicateWrapper filterWrapper) { if (subscriptionId == null) { throw new ArgumentNullException("subscriptionId"); } if (stream == null) { throw new ArgumentNullException("stream"); } IsValid = true; this.observer = observer; streamImpl = stream; this.SubscriptionId = subscriptionId; this.filterWrapper = filterWrapper; }
internal StreamSubscriptionHandleImpl <T> SetObserver <T>(GuidId subscriptionId, StreamImpl <T> stream, IAsyncObserver <T> observer, StreamSequenceToken token, IStreamFilterPredicateWrapper filter) { if (null == stream) { throw new ArgumentNullException("stream"); } if (null == observer) { throw new ArgumentNullException("observer"); } try { if (logger.IsVerbose) { logger.Verbose("{0} AddObserver for stream {1}", providerRuntime.ExecutingEntityIdentity(), stream.StreamId); } // Note: The caller [StreamConsumer] already handles locking for Add/Remove operations, so we don't need to repeat here. var handle = new StreamSubscriptionHandleImpl <T>(subscriptionId, observer, stream, filter, token); return(allStreamObservers.AddOrUpdate(subscriptionId, handle, (key, old) => handle) as StreamSubscriptionHandleImpl <T>); } catch (Exception exc) { logger.Error((int)ErrorCode.StreamProvider_AddObserverException, String.Format("{0} StreamConsumerExtension.AddObserver({1}) caugth exception.", providerRuntime.ExecutingEntityIdentity(), stream.StreamId), exc); throw; } }
public void Invalidate() { streamImpl = null; observer = null; }
public StreamSubscriptionHandleImpl(GuidId subscriptionId, StreamImpl <T> streamImpl) : this(subscriptionId, null, streamImpl, null, null) { }
public void Invalidate() { this.streamImpl = null; this.observer = null; this.batchObserver = null; }
public StreamSubscriptionHandleImpl(GuidId subscriptionId, StreamImpl <T> streamImpl, bool isRewindable) : this(subscriptionId, null, streamImpl, isRewindable, null, null) { }