public CommittedEventWorkItem(
     CoreProjection projection, ProjectionMessage.Projections.CommittedEventReceived message, string partition)
     : base(projection, message.EventStreamId)
 {
     _message = message;
     _partition = partition;
 }
Example #2
0
        public Point ProjectToScreen(Position position)
        {
            var msg = new ProjectionMessage(this, position);

            MessagingCenter.Send <XamMapz.Map, MapMessage>(this, MapMessage.Message, msg);
            return(msg.ScreenPosition);
        }
 // checkpoints are serialized based on string.empty token stream name
 public CheckpointSuggestedWorkItem(
     CoreProjection projection, ProjectionMessage.Projections.CheckpointSuggested message,
     CoreProjectionCheckpointManager checkpointManager)
     : base(projection, "")
 {
     _message = message;
     _checkpointManager = checkpointManager;
 }
 public bool Handle(ProjectionMessage.Projections.CommittedEventReceived message)
 {
     if (message.CorrelationId != _distributionPointId)
         return false;
     if (message.Data == null)
         return true; 
     CacheRecentMessage(message);
     DistributeMessage(message);
     if (_headSubscribers.Count == 0 && !_headDistributionPointPaused)
     {
         _headDistributionPoint.Pause();
         _headDistributionPointPaused = true;
     }
     return true;
 }
 public void Handle(ProjectionMessage.Projections.Faulted message)
 {
     SetFaulted(message.FaultedReason);
     DisposeCoreProjection();
 }
 public void Handle(ProjectionMessage.Projections.Started message)
 {
 }
 public void Handle(ProjectionMessage.Projections.Stopped message)
 {
     _state = ManagedProjectionState.Stopped;
     DisposeCoreProjection();
     var stopCompleted = _stopCompleted;
     _stopCompleted = null;
     if (stopCompleted != null) stopCompleted();
 }
 public abstract string GetStatePartition(ProjectionMessage.Projections.CommittedEventReceived @event);
 private void ValidateEventOrder(ProjectionMessage.Projections.CommittedEventDistributed message)
 {
     if (_lastEventPosition >= message.Position)
         throw new InvalidOperationException(
             string.Format(
                 "Invalid committed event order.  Last: '{0}' Received: '{1}'", _lastEventPosition,
                 message.Position));
     _lastEventPosition = message.Position;
 }
Example #10
0
        public void Handle(ProjectionMessage.Projections.Management.StateReport message)
        {
            var stateRequests = _stateRequests;
            _stateRequests = null;

            foreach (var request in stateRequests)
                request.ReplyWith(new ProjectionManagementMessage.ProjectionState(_name, message.State));
        }
 public CheckpointTag MakeCheckpointTag(ProjectionMessage.Projections.CommittedEventDistributed committedEvent)
 {
     return CheckpointTag.FromStreamPosition(
         committedEvent.PositionStreamId, committedEvent.EventSequenceNumber,
         committedEvent.Position.PreparePosition);
 }
 public void Handle(ProjectionMessage.Projections.PauseRequested message)
 {
     throw new NotImplementedException();
 }
 public void Handle(ProjectionMessage.Projections.CommittedEventReceived message)
 {
     HandledMessages.Add(message);
 }
Example #14
0
 public void Update(ProjectionMessage.Projections.CommittedEventReceived comittedEvent)
 {
     var newTag = _positionTagger.MakeCheckpointTag(comittedEvent);
     UpdateByCheckpointTagForward(newTag);
     UpdatePosition(comittedEvent.Position);
 }
Example #15
0
 public override CheckpointTag MakeCheckpointTag(CheckpointTag previous, ProjectionMessage.Projections.CommittedEventDistributed comittedEvent)
 {
     if (comittedEvent.PositionStreamId != _stream)
         throw new InvalidOperationException(string.Format("Invalid stream '{0}'.  Expected stream is '{1}'", comittedEvent.EventStreamId, _stream));
     return CheckpointTag.FromStreamPosition(comittedEvent.PositionStreamId, comittedEvent.PositionSequenceNumber, comittedEvent.Position.PreparePosition);
 }
Example #16
0
 public CheckpointTag MakeCheckpointTag(ProjectionMessage.Projections.CommittedEventDistributed committedEvent)
 {
     // this is the same tag that will be generated by Handle(CommittedEventDistributed)
     var tag = _positionTagger.MakeCheckpointTag(_positionTracker.LastTag, committedEvent);
     return tag;
 }
Example #17
0
        public void Handle(ProjectionMessage.Projections.CommittedEventDistributed message)
        {
            if (message.Data == null)
                throw new NotSupportedException();

            // NOTE: we may receive here messages from heading event distribution point
            // and they may not pass out source filter.  Discard them first
            if (!_eventFilter.PassesSource(message.ResolvedLinkTo, message.PositionStreamId))
                return;
            var eventCheckpointTag = _positionTagger.MakeCheckpointTag(_positionTracker.LastTag, message);
            //TODO: when joining heading distribution point replayed events may cause invalid operation exception on comparison
            if (eventCheckpointTag <= _positionTracker.LastTag)
            {
                _logger.Trace(
                    "Skipping replayed event {0}@{1} at position {2}. the last processed event checkpoint tag is: {3}",
                    message.PositionSequenceNumber, message.PositionStreamId, message.Position, _positionTracker.LastTag);
                return;
            }
            _positionTracker.UpdateByCheckpointTagForward(eventCheckpointTag);
            if (_eventFilter.Passes(message.ResolvedLinkTo, message.PositionStreamId, message.Data.EventType))
            {
                _lastPassedOrCheckpointedEventPosition = message.Position;
                var convertedMessage =
                    ProjectionMessage.Projections.CommittedEventReceived.FromCommittedEventDistributed(message, eventCheckpointTag);
                _eventHandler.Handle(convertedMessage);
            }
            else
            {
                if (_checkpointUnhandledBytesThreshold != null
                    && message.Position.CommitPosition - _lastPassedOrCheckpointedEventPosition.CommitPosition
                    > _checkpointUnhandledBytesThreshold)
                {
                    _lastPassedOrCheckpointedEventPosition = message.Position;
                    _checkpointHandler.Handle(
                        new ProjectionMessage.Projections.CheckpointSuggested(
                            _projectionCorrelationId, _positionTracker.LastTag));
                }
            }
        }
Example #18
0
 public void Handle(ProjectionMessage.Projections.Management.StatisticsReport message)
 {
     _lastReceivedStatistics = message.Statistics;
 }
Example #19
0
 public virtual CheckpointTag MakeCheckpointTag(CheckpointTag previous, ProjectionMessage.Projections.CommittedEventDistributed comittedEvent)
 {
     return new CheckpointTag(comittedEvent.Position);
 }
 private void CacheRecentMessage(ProjectionMessage.Projections.CommittedEventReceived message)
 {
     _lastMessages.Enqueue(message);
     if (_lastMessages.Count > _eventCacheSize)
     {
         _lastMessages.Dequeue();
     }
     var lastAvailableCommittedevent = _lastMessages.Peek();
     _subscribeFromPosition = lastAvailableCommittedevent.Position;
 }
 public void Handle(ProjectionMessage.Projections.CheckpointSuggested message)
 {
     HandledCheckpoints.Add(message);
 }
Example #22
0
 public virtual CheckpointTag MakeCheckpointTag(ProjectionMessage.Projections.CommittedEventReceived comittedEvent)
 {
     return new CheckpointTag(comittedEvent.Position);
 }
 public void Handle(ProjectionMessage.Projections.CheckpointLoaded message)
 {
     throw new NotImplementedException();
 }
 public override string GetStatePartition(ProjectionMessage.Projections.CommittedEventReceived @event)
 {
     return @event.EventStreamId;
 }
 private void DistributeMessage(ProjectionMessage.Projections.CommittedEventReceived message)
 {
     foreach (var subscriber in _headSubscribers.Values)
         subscriber.Handle(message);
 }
Example #26
0
 public void Handle(ProjectionMessage.Projections.PauseRequested message)
 {
     _pauseRequestedMessages.Add(message);
 }
Example #27
0
 public void Handle(ProjectionMessage.Projections.CheckpointLoaded message)
 {
     _checkpointLoadedMessages.Add(message);
 }
 public void Handle(ProjectionMessage.Projections.CommittedEventDistributed message)
 {
     _receivedEvents.Add(message);
 }