internal virtual Task <CosmosResponseMessage> NextResultSetDelegate(
            string continuationToken,
            string partitionKeyRangeId,
            int?maxItemCount,
            CosmosChangeFeedRequestOptions options,
            CancellationToken cancellationToken)
        {
            Uri resourceUri = this.cosmosContainer.LinkUri;

            return(ExecUtils.ProcessResourceOperationAsync <CosmosResponseMessage>(
                       client: this.cosmosContainer.Database.Client,
                       resourceUri: resourceUri,
                       resourceType: Documents.ResourceType.Document,
                       operationType: Documents.OperationType.ReadFeed,
                       requestOptions: options,
                       requestEnricher: request => {
                CosmosChangeFeedRequestOptions.FillContinuationToken(request, continuationToken);
                CosmosChangeFeedRequestOptions.FillMaxItemCount(request, maxItemCount);
                CosmosChangeFeedRequestOptions.FillPartitionKeyRangeId(request, partitionKeyRangeId);
            },
                       responseCreator: response => response,
                       partitionKey: null,
                       streamPayload: null,
                       cancellationToken: cancellationToken));
        }
Example #2
0
        public void CosmosChangeFeedRequestOptions_AddsPartitionKeyRangeId()
        {
            CosmosRequestMessage           request        = new CosmosRequestMessage();
            CosmosChangeFeedRequestOptions requestOptions = new CosmosChangeFeedRequestOptions();

            CosmosChangeFeedRequestOptions.FillPartitionKeyRangeId(request, "randomPK");

            Assert.AreEqual("randomPK", request.PartitionKeyRangeId);
        }
Example #3
0
        public void CosmosChangeFeedRequestOptions_DefaultValues()
        {
            CosmosRequestMessage           request        = new CosmosRequestMessage();
            CosmosChangeFeedRequestOptions requestOptions = new CosmosChangeFeedRequestOptions()
            {
            };

            requestOptions.FillRequestOptions(request);

            Assert.AreEqual(CosmosChangeFeedRequestOptions.IfNoneMatchAllHeaderValue, request.Headers.IfNoneMatch);
            Assert.IsNull(request.Headers[Documents.HttpConstants.HttpHeaders.IfModifiedSince]);
        }
Example #4
0
        public void CosmosChangeFeedRequestOptions_AddsStartTime()
        {
            CosmosRequestMessage           request        = new CosmosRequestMessage();
            CosmosChangeFeedRequestOptions requestOptions = new CosmosChangeFeedRequestOptions()
            {
                StartTime = new DateTime(1985, 1, 1, 0, 0, 0, DateTimeKind.Utc)
            };

            requestOptions.FillRequestOptions(request);

            Assert.AreEqual("Tue, 01 Jan 1985 00:00:00 GMT", request.Headers[Documents.HttpConstants.HttpHeaders.IfModifiedSince]);
            Assert.IsNull(request.Headers.IfNoneMatch);
        }
Example #5
0
        public void CosmosChangeFeedRequestOptions_ContinuationIsSet()
        {
            CosmosRequestMessage           request        = new CosmosRequestMessage();
            CosmosChangeFeedRequestOptions requestOptions = new CosmosChangeFeedRequestOptions()
            {
            };

            CosmosChangeFeedRequestOptions.FillContinuationToken(request, "something");
            requestOptions.FillRequestOptions(request);

            Assert.AreEqual("something", request.Headers.IfNoneMatch);
            Assert.IsNull(request.Headers[Documents.HttpConstants.HttpHeaders.IfModifiedSince]);
        }
Example #6
0
        public void CosmosChangeFeedRequestOptions_MaxItemSizeIsSet()
        {
            CosmosRequestMessage           request        = new CosmosRequestMessage();
            CosmosChangeFeedRequestOptions requestOptions = new CosmosChangeFeedRequestOptions()
            {
            };

            CosmosChangeFeedRequestOptions.FillMaxItemCount(request, 10);
            requestOptions.FillRequestOptions(request);

            Assert.AreEqual("10", request.Headers[Documents.HttpConstants.HttpHeaders.PageSize]);
            Assert.AreEqual(CosmosChangeFeedRequestOptions.IfNoneMatchAllHeaderValue, request.Headers.IfNoneMatch);
            Assert.IsNull(request.Headers[Documents.HttpConstants.HttpHeaders.IfModifiedSince]);
        }
Example #7
0
        internal CosmosFeedResultSetIterator GetStandByFeedIterator(
            string continuationToken = null,
            int?maxItemCount         = null,
            CosmosChangeFeedRequestOptions requestOptions = null,
            CancellationToken cancellationToken           = default(CancellationToken))
        {
            CosmosChangeFeedRequestOptions cosmosQueryRequestOptions = requestOptions as CosmosChangeFeedRequestOptions ?? new CosmosChangeFeedRequestOptions();

            return(new CosmosChangeFeedResultSetIteratorCore(
                       continuationToken: continuationToken,
                       maxItemCount: maxItemCount,
                       cosmosContainer: (CosmosContainerCore)this.container,
                       options: cosmosQueryRequestOptions));
        }
        internal CosmosChangeFeedResultSetIteratorCore(
            CosmosContainerCore cosmosContainer,
            string continuationToken,
            int?maxItemCount,
            CosmosChangeFeedRequestOptions options)
        {
            if (cosmosContainer == null)
            {
                throw new ArgumentNullException(nameof(cosmosContainer));
            }

            this.cosmosContainer      = cosmosContainer;
            this.changeFeedOptions    = options;
            this.maxItemCount         = maxItemCount;
            this.originalMaxItemCount = maxItemCount;
            this.continuationToken    = continuationToken;
            this.HasMoreResults       = true;
        }