public Task OnErrorAsync(Exception ex)
        {
            IInternalAsyncBatchObserver <T> producerInterface = GetProducerInterface();
            var observer      = producerInterface as IAsyncObserver <T>;
            var batchObserver = producerInterface as IAsyncBatchObserver <T>;

            return(Task.WhenAll(observer.OnErrorAsync(ex), batchObserver.OnErrorAsync(ex)));
        }
        public Task OnCompletedAsync()
        {
            IInternalAsyncBatchObserver <T> producerInterface = GetProducerInterface();
            var observer      = producerInterface as IAsyncObserver <T>;
            var batchObserver = producerInterface as IAsyncBatchObserver <T>;

            return(Task.WhenAll(observer.OnCompletedAsync(), batchObserver.OnCompletedAsync()));
        }
Exemple #3
0
 internal StreamImpl(InternalStreamId streamId, IInternalStreamProvider provider, bool isRewindable, IRuntimeClient runtimeClient)
 {
     this.streamId      = streamId;
     this.provider      = provider ?? throw new ArgumentNullException(nameof(provider));
     this.runtimeClient = runtimeClient ?? throw new ArgumentNullException(nameof(runtimeClient));
     producerInterface  = null;
     consumerInterface  = null;
     initLock           = new object();
     this.isRewindable  = isRewindable;
 }
Exemple #4
0
        public async Task Cleanup(bool cleanupProducers, bool cleanupConsumers)
        {
            // Cleanup producers
            if (cleanupProducers && producerInterface != null)
            {
                await producerInterface.Cleanup();

                producerInterface = null;
            }

            // Cleanup consumers
            if (cleanupConsumers && consumerInterface != null)
            {
                await consumerInterface.Cleanup();

                consumerInterface = null;
            }
        }
Exemple #5
0
        internal StreamImpl(StreamId streamId, IInternalStreamProvider provider, bool isRewindable)
        {
            if (null == streamId)
            {
                throw new ArgumentNullException("streamId");
            }
            if (null == provider)
            {
                throw new ArgumentNullException("provider");
            }

            this.streamId     = streamId;
            this.provider     = provider;
            producerInterface = null;
            consumerInterface = null;
            initLock          = new object();
            this.isRewindable = isRewindable;
        }
Exemple #6
0
        internal IInternalAsyncBatchObserver <T> GetProducerInterface()
        {
            if (producerInterface != null)
            {
                return(producerInterface);
            }

            lock (initLock)
            {
                if (producerInterface != null)
                {
                    return(producerInterface);
                }

                if (provider == null)
                {
                    provider = GetStreamProvider();
                }

                producerInterface = provider.GetProducerInterface(this);
            }
            return(producerInterface);
        }
Exemple #7
0
        public Task OnErrorAsync(Exception ex)
        {
            IInternalAsyncBatchObserver <T> producerInterface = GetProducerInterface();

            return(producerInterface.OnErrorAsync(ex));
        }
Exemple #8
0
        public Task OnCompletedAsync()
        {
            IInternalAsyncBatchObserver <T> producerInterface = GetProducerInterface();

            return(producerInterface.OnCompletedAsync());
        }