public void Handle(ProjectionManagementMessage.SetRunAs message) { _lastAccessed = _timeProvider.Now; if ( !ProjectionManagementMessage.RunAs.ValidateRunAs( Mode, ReadWrite.Write, _runAs, message, message.Action == ProjectionManagementMessage.SetRunAs.SetRemove.Set)) { return; } Stop( () => { UpdateProjectionVersion(); _persistedState.RunAs = message.Action == ProjectionManagementMessage.SetRunAs.SetRemove.Set ? SerializePrincipal(message.RunAs) : null; _runAs = DeserializePrincipal(_persistedState.RunAs); Prepare( () => BeginWrite( () => { StartOrLoadStopped(() => { }); message.Envelope.ReplyWith( new ProjectionManagementMessage.Updated(message.Name)); })); }); }
public void Handle(ProjectionManagementMessage.SetRunAs message) { if (!_started) { return; } _logger.Info("Setting RunAs account for '{0}' projection", message.Name); var projection = GetProjection(message.Name); if (projection == null) { _logger.Error("DBG: PROJECTION *{0}* NOT FOUND!!!", message.Name); message.Envelope.ReplyWith(new ProjectionManagementMessage.NotFound()); } else { projection.Handle(message); } }