示例#1
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;
 }
示例#2
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;
        }
示例#3
0
        internal IInternalAsyncObservable <T> GetConsumerInterface()
        {
            if (consumerInterface == null)
            {
                lock (initLock)
                {
                    if (consumerInterface == null)
                    {
                        if (provider == null)
                        {
                            provider = GetStreamProvider();
                        }

                        consumerInterface = provider.GetConsumerInterface <T>(this);
                    }
                }
            }
            return(consumerInterface);
        }
示例#4
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);
        }