コード例 #1
0
        public override ChangeFeedProcessorBuilder CreateChangeFeedProcessorBuilder <T>(
            string workflowName,
            Func <IReadOnlyCollection <T>, CancellationToken, Task> onChangesDelegate)
        {
            if (workflowName == null)
            {
                throw new ArgumentNullException(nameof(workflowName));
            }

            if (onChangesDelegate == null)
            {
                throw new ArgumentNullException(nameof(onChangesDelegate));
            }

            ChangeFeedObserverFactoryCore <T> observerFactory     = new ChangeFeedObserverFactoryCore <T>(onChangesDelegate);
            ChangeFeedProcessorCore <T>       changeFeedProcessor = new ChangeFeedProcessorCore <T>(observerFactory);

            return(new ChangeFeedProcessorBuilder(
                       workflowName: workflowName,
                       cosmosContainer: this,
                       changeFeedProcessor: changeFeedProcessor,
                       applyBuilderConfiguration: changeFeedProcessor.ApplyBuildConfiguration));
        }
        public async Task WhenDelegateIsStream_Manual()
        {
            ResponseMessage responseMessage = this.BuildResponseMessage();
            bool            executed        = false;

            Task changesHandler(ChangeFeedProcessorContext context, Stream stream, Func <Task> checkpointAsync, CancellationToken token)
            {
                Assert.ReferenceEquals(responseMessage.Content, stream);
                executed = true;
                return(Task.CompletedTask);
            }

            ChangeFeedObserverFactoryCore changeFeedObserverFactoryCore = new ChangeFeedObserverFactoryCore(changesHandler);

            ChangeFeedObserver changeFeedObserver = changeFeedObserverFactoryCore.CreateObserver();

            Assert.IsNotNull(changeFeedObserver);

            ChangeFeedObserverContextCore context = new ChangeFeedObserverContextCore(this.leaseToken, responseMessage, Mock.Of <PartitionCheckpointer>());

            await changeFeedObserver.ProcessChangesAsync(context, responseMessage.Content, CancellationToken.None);

            Assert.IsTrue(executed);
        }