Beispiel #1
0
        public ReadStreamWorker(IEventStoreReader reader, IPersistedEventFactory factory)
        {
            ReceiveRequest <ReadStreamRequest>((req, sender, ct) =>
            {
                var sequence = req.InitialSequence;

                return(reader.ReadStreamAsync(req.Stream, req.InitialSequence, req.Count, e =>
                {
                    var loadedEvent = factory.CreateStreamEvent(e, sequence++);
                    sender.Tell(new ReadStreamResponse(req.RequestID, loadedEvent), ActorRefs.NoSender);
                }, ct));
            });
        }
Beispiel #2
0
        public ReadIndexedProjectionStreamWorker(IProjectionStoreReader reader, IPersistedEventFactory factory)
        {
            ReceiveRequest <ReadIndexedProjectionStreamRequest>(async(req, sender, ct) =>
            {
                var checkpoint     = await reader.ReadProjectionCheckpointAsync(req.ProjectionStream);
                var sequence       = req.InitialSequence;
                var globalSequence = 0L;

                await reader.ReadIndexedProjectionStreamAsync(req.ProjectionStream, req.InitialSequence, req.Count, e =>
                {
                    globalSequence  = e.GlobalSequence;
                    var loadedEvent = factory.CreateStreamEvent(e, sequence++);
                    sender.Tell(new ReadIndexedProjectionStreamResponse(req.RequestID, loadedEvent), ActorRefs.NoSender);
                }, ct);

                _lastSeenGlobalCheckpoint = Math.Max(checkpoint, globalSequence);
            });
        }