Esempio n. 1
0
            public override TryCatch <CrossPartitionState <ChangeFeedState> > Visit(ChangeFeedStartFromContinuationAndFeedRange startFromContinuationAndFeedRange)
            {
                ChangeFeedState state = ChangeFeedState.Continuation(CosmosString.Create(startFromContinuationAndFeedRange.Etag));
                List <(FeedRangeInternal, ChangeFeedState)> rangesAndStates = new List <(FeedRangeInternal, ChangeFeedState)>()
                {
                    (startFromContinuationAndFeedRange.FeedRange, state)
                };

                CrossPartitionState <ChangeFeedState> crossPartitionState = new CrossPartitionState <ChangeFeedState>(rangesAndStates);

                return(TryCatch <CrossPartitionState <ChangeFeedState> > .FromResult(crossPartitionState));
            }
        public static ChangeFeedPartitionKeyResultSetIteratorCore BuildResultSetIterator(
            string partitionKeyRangeId,
            string continuationToken,
            int?maxItemCount,
            ContainerInternal container,
            DateTime?startTime,
            bool startFromBeginning)
        {
            FeedRangeInternal feedRange = new FeedRangePartitionKeyRange(partitionKeyRangeId);

            ChangeFeedStartFrom startFrom;

            if (continuationToken != null)
            {
                // For continuation based feed range we need to manufactor a new continuation token that has the partition key range id in it.
                startFrom = new ChangeFeedStartFromContinuationAndFeedRange(continuationToken, feedRange);
            }
            else if (startTime.HasValue)
            {
                startFrom = ChangeFeedStartFrom.Time(startTime.Value, feedRange);
            }
            else if (startFromBeginning)
            {
                startFrom = ChangeFeedStartFrom.Beginning(feedRange);
            }
            else
            {
                startFrom = ChangeFeedStartFrom.Now(feedRange);
            }

            ChangeFeedRequestOptions requestOptions = new ChangeFeedRequestOptions()
            {
                PageSizeHint = maxItemCount,
            };

            return(new ChangeFeedPartitionKeyResultSetIteratorCore(
                       clientContext: container.ClientContext,
                       container: container,
                       changeFeedStartFrom: startFrom,
                       options: requestOptions));
        }
Esempio n. 3
0
 public abstract TResult Visit(ChangeFeedStartFromContinuationAndFeedRange startFromContinuationAndFeedRange);