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)); }
public abstract TResult Visit(ChangeFeedStartFromContinuationAndFeedRange startFromContinuationAndFeedRange);