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
};
}