Akka.Persistence.Sql.Common.Journal.JournalDbEngine.ReadEvents C# (CSharp) Метод

ReadEvents() публичный Метод

Performs
public ReadEvents ( object queryId, IEnumerable hints, IActorRef sender, Action replayCallback ) : Task
queryId object
hints IEnumerable
sender IActorRef
replayCallback Action
Результат Task
        public async Task ReadEvents(object queryId, IEnumerable<IHint> hints, IActorRef sender, Action<IPersistentRepresentation> replayCallback)
        {
            using (var connection = CreateDbConnection())
            {
                await connection.OpenAsync();

                var sqlCommand = QueryBuilder.SelectEvents(hints);
                CompleteCommand(sqlCommand, connection);
                
                var reader = await sqlCommand.ExecuteReaderAsync(_pendingRequestsCancellation.Token);
                try
                {
                    while (reader.Read())
                    {
                        var persistent = QueryMapper.Map(reader, sender);
                        if (persistent != null)
                            replayCallback(persistent);
                    }
                }
                finally
                {
                    reader.Close();
                }
            }
        }

Usage Example

Пример #1
0
        private void HandleEventQuery(Query query)
        {
            var queryId = query.QueryId;
            var sender  = Context.Sender;

            DbEngine.ReadEvents(queryId, query.Hints, Context.Sender, reply =>
            {
                foreach (var adapted in AdaptFromJournal(reply))
                {
                    sender.Tell(new QueryResponse(queryId, adapted));
                }
            })
            .ContinueWith(task =>
                          task.IsFaulted || task.IsCanceled ? (IQueryReply) new QueryFailure(queryId, task.Exception) : new QuerySuccess(queryId),
                          TaskContinuationOptions.ExecuteSynchronously)
            .PipeTo(Context.Sender);
        }