public void Handle(ProjectionManagementMessage.GetState message) { //TODO: allow requesting valid only state var state = GetProjectionState(); message.Envelope.ReplyWith(new ProjectionManagementMessage.ProjectionState(message.Name, state)); }
public void Handle(ProjectionManagementMessage.GetState message) { if (_state == ManagedProjectionState.Running) { var needRequest = false; if (_stateRequests == null) { _stateRequests = new Dictionary <string, List <IEnvelope> >(); } List <IEnvelope> partitionRequests; if (!_stateRequests.TryGetValue(message.Partition, out partitionRequests)) { partitionRequests = new List <IEnvelope>(); _stateRequests.Add(message.Partition, partitionRequests); needRequest = true; } partitionRequests.Add(message.Envelope); if (needRequest) { _coreQueue.Publish( new CoreProjectionManagementMessage.GetState( new PublishEnvelope(_inputQueue), _id, message.Partition)); } } else { //TODO: report right state here message.Envelope.ReplyWith( new ProjectionManagementMessage.ProjectionState(message.Name, "*** UNKNOWN ***")); } }
public void Handle(ProjectionManagementMessage.GetState message) { var projection = GetProjection(message.Name); if (projection == null) { message.Envelope.ReplyWith(new ProjectionManagementMessage.NotFound()); } else { projection.Handle(message); } }
public void Handle(ProjectionManagementMessage.GetState message) { _lastAccessed = _timeProvider.Now; if (_state >= ManagedProjectionState.Stopped) { _getStateDispatcher.Publish( new CoreProjectionManagementMessage.GetState( new PublishEnvelope(_inputQueue), Guid.NewGuid(), Id, message.Partition), m => message.Envelope.ReplyWith( new ProjectionManagementMessage.ProjectionState(_name, m.Partition, m.State, m.Position))); } else { message.Envelope.ReplyWith( new ProjectionManagementMessage.ProjectionState( message.Name, message.Partition, "*** UNKNOWN ***", position: null)); } }
public void Handle(ProjectionManagementMessage.GetState message) { if (_state == ManagedProjectionState.Running) { var needRequest = _stateRequests == null; if (_stateRequests == null) { _stateRequests = new List <IEnvelope>(); } _stateRequests.Add(message.Envelope); if (needRequest) { _coreQueue.Publish(new ProjectionMessage.Projections.Management.GetState(new PublishEnvelope(_inputQueue), _id)); } } else { //TODO: report right state here message.Envelope.ReplyWith(new ProjectionManagementMessage.ProjectionState(message.Name, "*** UNKNOWN ***")); } }