Marten.Events.Projections.Async.Fetcher.buildEventPage C# (CSharp) Method

buildEventPage() private method

private buildEventPage ( long @from, NpgsqlCommand cmd ) : Task
@from long
cmd Npgsql.NpgsqlCommand
return Task
        private async Task<EventPage> buildEventPage(long @from, NpgsqlCommand cmd)
        {
            IList<IEvent> events = null;
            IList<long> sequences = new List<long>();

            long nextKnown = 0;
            long lastKnown = 0;

            using (var reader = await cmd.ExecuteReaderAsync(_token).ConfigureAwait(false))
            {
                while (await reader.ReadAsync(_token).ConfigureAwait(false))
                {
                    var seq = await reader.GetFieldValueAsync<long>(0, _token).ConfigureAwait(false);
                    sequences.Add(seq);
                }

                if (sequences.Any())
                {
                    await reader.NextResultAsync(_token).ConfigureAwait(false);

                    events = await _selector.ReadAsync(reader, _map, null, _token).ConfigureAwait(false);
                }
                else
                {
                    events = new List<IEvent>();
                }

                nextKnown = await getLong(reader).ConfigureAwait(false);
                lastKnown = await getLong(reader).ConfigureAwait(false);
            }

            return new EventPage(@from, sequences, events)
            {
                Count = events.Count,
                NextKnownSequence = nextKnown,
                LastKnownSequence = lastKnown
            };
        }