Пример #1
0
        public void Handle(ClientMessage.ReadEventsForwardCompleted message)
        {
            EventDistributionPoint distributionPoint;

            if (_distributionPoints.TryGetValue(message.CorrelationId, out distributionPoint))
            {
                distributionPoint.Handle(message);
            }
        }
Пример #2
0
        private static TcpPackage WrapReadEventsForwardCompleted(ClientMessage.ReadEventsForwardCompleted msg)
        {
            var dto = new ClientMessageDto.ReadEventsForwardCompleted(msg.CorrelationId,
                                                                      msg.EventStreamId,
                                                                      msg.Events,
                                                                      msg.LinkToEvents,
                                                                      msg.Result,
                                                                      msg.LastCommitPosition);

            return(new TcpPackage(TcpCommand.ReadEventsFromBeginningCompleted, msg.CorrelationId, dto.Serialize()));
        }
        public override void Handle(ClientMessage.ReadEventsForwardCompleted message)
        {
            if (_disposed)
            {
                return;
            }
            if (!_eventsRequested)
            {
                throw new InvalidOperationException("Read events has not been requested");
            }
            if (message.EventStreamId != _streamName)
            {
                throw new InvalidOperationException(
                          string.Format("Invalid stream name: {0}.  Expected: {1}", message.EventStreamId, _streamName));
            }
            if (_paused)
            {
                throw new InvalidOperationException("Paused");
            }
            _eventsRequested = false;
            switch (message.Result)
            {
            case RangeReadResult.NoStream:
                DeliverLastCommitPosition(message.LastCommitPosition.Value);     // allow joining heading distribution
                RequestEvents(delay: true);

                break;

            case RangeReadResult.Success:
                if (message.Events.Length == 0)
                {
                    // the end
                    DeliverLastCommitPosition(message.LastCommitPosition.Value);
                }
                else
                {
                    for (int index = 0; index < message.Events.Length; index++)
                    {
                        var @event = message.Events[index];
                        var @link  = message.LinkToEvents != null ? message.LinkToEvents[index] : null;
                        DeliverEvent(@event, @link);
                    }
                }
                if (_pauseRequested)
                {
                    _paused = true;
                }
                else
                if (message.Events.Length == 0)
                {
                    RequestEvents(delay: true);
                }
                else
                {
                    _publisher.Publish(CreateTickMessage());
                }
                break;

            default:
                throw new NotSupportedException(
                          string.Format("ReadEvents result code was not recognized. Code: {0}", message.Result));
            }
        }
Пример #4
0
 public override void Handle(ClientMessage.ReadEventsForwardCompleted message)
 {
 }