示例#1
0
        public IEnumerable <DocumentItem> GetRevisionDocuments(List <string> collectionsToExport, INewDocumentActions actions)
        {
            Debug.Assert(_context != null);

            var revisionsStorage = _database.DocumentsStorage.RevisionsStorage;

            var enumerator = new PulsedTransactionEnumerator <Document, DocumentsIterationState>(_context,
                                                                                                 state =>
            {
                if (state.StartEtagByCollection.Count != 0)
                {
                    return(GetRevisionsFromCollections(_context, state));
                }

                return(revisionsStorage.GetRevisionsFrom(_context, state.StartEtag, int.MaxValue));
            },
                                                                                                 new DocumentsIterationState(_context, _database.Configuration.Databases.PulseReadTransactionLimit) // initial state
            {
                StartEtag             = _startDocumentEtag,
                StartEtagByCollection = collectionsToExport.ToDictionary(x => x, x => _startDocumentEtag)
            });

            while (enumerator.MoveNext())
            {
                yield return(new DocumentItem
                {
                    Document = enumerator.Current
                });
            }
        }
示例#2
0
        public IEnumerable <TimeSeriesItem> GetTimeSeries(List <string> collectionsToExport)
        {
            Debug.Assert(_context != null);

            var initialState = new TimeSeriesIterationState(_context, _database.Configuration.Databases.PulseReadTransactionLimit)
            {
                StartEtag             = _startDocumentEtag,
                StartEtagByCollection = collectionsToExport.ToDictionary(x => x, x => _startDocumentEtag)
            };

            var enumerator = new PulsedTransactionEnumerator <TimeSeriesItem, TimeSeriesIterationState>(_context,
                                                                                                        state =>
            {
                if (state.StartEtagByCollection.Count != 0)
                {
                    return(GetTimeSeriesFromCollections(_context, state));
                }

                return(GetAllTimeSeriesItems(_context, state.StartEtag));
            }, initialState);

            while (enumerator.MoveNext())
            {
                yield return(enumerator.Current);
            }
        }
示例#3
0
        public IEnumerable <CounterGroupDetail> GetCounterValues(List <string> collectionsToExport, ICounterActions actions)
        {
            Debug.Assert(_context != null);

            var enumerator = new PulsedTransactionEnumerator <CounterGroupDetail, CountersIterationState>(_context,
                                                                                                          state =>
            {
                if (state.StartEtagByCollection.Count != 0)
                {
                    return(GetCounterValuesFromCollections(_context, state));
                }

                return(_database.DocumentsStorage.CountersStorage.GetCountersFrom(_context, state.StartEtag, 0, long.MaxValue));
            },
                                                                                                          new CountersIterationState(_context, _database.Configuration.Databases.PulseReadTransactionLimit) // initial state
            {
                StartEtag             = _startDocumentEtag,
                StartEtagByCollection = collectionsToExport.ToDictionary(x => x, x => _startDocumentEtag)
            });

            while (enumerator.MoveNext())
            {
                yield return(enumerator.Current);
            }
        }
示例#4
0
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously

        public async IAsyncEnumerable <TimeSeriesItem> GetTimeSeriesAsync(List <string> collectionsToExport)
#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously
        {
            Debug.Assert(_context != null);

            var initialState = new TimeSeriesIterationState(_context, _database.Configuration.Databases.PulseReadTransactionLimit)
            {
                StartEtag             = _startDocumentEtag,
                StartEtagByCollection = collectionsToExport.ToDictionary(x => x, x => _startDocumentEtag)
            };

            var enumerator = new PulsedTransactionEnumerator <TimeSeriesItem, TimeSeriesIterationState>(_context,
                                                                                                        state =>
            {
                if (state.StartEtagByCollection.Count != 0)
                {
                    return(GetTimeSeriesFromCollections(_context, state));
                }

                return(GetAllTimeSeriesItems(_context, state.StartEtag));
            }, initialState);

            while (enumerator.MoveNext())
            {
                yield return(enumerator.Current);
            }
        }
示例#5
0
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously

        public async IAsyncEnumerable <CounterGroupDetail> GetCounterValuesAsync(List <string> collectionsToExport, ICounterActions actions)
#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously
        {
            Debug.Assert(_context != null);

            var enumerator = new PulsedTransactionEnumerator <CounterGroupDetail, CountersIterationState>(_context,
                                                                                                          state =>
            {
                if (state.StartEtagByCollection.Count != 0)
                {
                    return(GetCounterValuesFromCollections(_context, state));
                }

                return(_database.DocumentsStorage.CountersStorage.GetCountersFrom(_context, state.StartEtag, 0, long.MaxValue));
            },
                                                                                                          new CountersIterationState(_context, _database.Configuration.Databases.PulseReadTransactionLimit) // initial state
            {
                StartEtag             = _startDocumentEtag,
                StartEtagByCollection = collectionsToExport.ToDictionary(x => x, x => _startDocumentEtag)
            });

            while (enumerator.MoveNext())
            {
                yield return(enumerator.Current);
            }
        }
示例#6
0
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously

        public async IAsyncEnumerable <DocumentConflict> GetConflictsAsync(List <string> collectionsToExport, INewDocumentActions actions)
#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously
        {
            Debug.Assert(_context != null);

            var enumerator = new PulsedTransactionEnumerator <DocumentConflict, DocumentConflictsIterationState>(_context,
                                                                                                                 state =>
            {
                if (collectionsToExport.Count != 0)
                {
                    return(GetConflictsFromCollections(_context, collectionsToExport.ToHashSet(), state));
                }

                return(_database.DocumentsStorage.ConflictsStorage.GetConflictsFrom(_context, state.StartEtag));
            },
                                                                                                                 new DocumentConflictsIterationState(_context, _database.Configuration.Databases.PulseReadTransactionLimit)
            {
                StartEtag = _startDocumentEtag,
            });

            while (enumerator.MoveNext())
            {
                yield return(enumerator.Current);
            }
        }
示例#7
0
        public IEnumerable <DocumentConflict> GetConflicts(List <string> collectionsToExport, INewDocumentActions actions)
        {
            Debug.Assert(_context != null);

            var enumerator = new PulsedTransactionEnumerator <DocumentConflict, DocumentConflictsIterationState>(_context,
                                                                                                                 state =>
            {
                if (collectionsToExport.Count != 0)
                {
                    return(GetConflictsFromCollections(_context, collectionsToExport.ToHashSet(), state));
                }

                return(_database.DocumentsStorage.ConflictsStorage.GetConflictsFrom(_context, state.StartEtag));
            },
                                                                                                                 new DocumentConflictsIterationState(_context, _database.Configuration.Databases.PulseReadTransactionLimit)
            {
                StartEtag = _startDocumentEtag,
            });

            while (enumerator.MoveNext())
            {
                yield return(enumerator.Current);
            }
        }
示例#8
0
        public IEnumerable <Tombstone> GetTombstones(List <string> collectionsToExport, INewDocumentActions actions)
        {
            Debug.Assert(_context != null);

            var enumerator = new PulsedTransactionEnumerator <Tombstone, TombstonesIterationState>(_context,
                                                                                                   state =>
            {
                if (state.StartEtagByCollection.Count != 0)
                {
                    return(GetTombstonesFromCollections(_context, state));
                }

                return(_database.DocumentsStorage.GetTombstonesFrom(_context, state.StartEtag, 0, int.MaxValue));
            },
                                                                                                   new TombstonesIterationState(_context, _database.Configuration.Databases.PulseReadTransactionLimit)
            {
                StartEtag = _startDocumentEtag, StartEtagByCollection = collectionsToExport.ToDictionary(x => x, x => _startDocumentEtag)
            });

            while (enumerator.MoveNext())
            {
                yield return(enumerator.Current);
            }
        }