public Task UpdateInstalledStateAsync(EngineFeatureState featureState, EngineFeatureState.States value) { if (Logger.IsEnabled(LogLevel.Debug)) { Logger.LogDebug("Feature '{FeatureName}' InstallState changed from '{FeatureState}' to '{FeatureState}'", featureState.Id, featureState.InstallState, value); } return(Task.CompletedTask); }
private static bool FeatureIsChanging(EngineFeatureState engineFeatureState) { if (engineFeatureState.EnableState == EngineFeatureState.States.Rising || engineFeatureState.EnableState == EngineFeatureState.States.Falling) { return(true); } if (engineFeatureState.InstallState == EngineFeatureState.States.Rising || engineFeatureState.InstallState == EngineFeatureState.States.Falling) { return(true); } return(false); }
private async Task <EngineFeatureState> GetOrCreateFeatureStateAsync(string id) { var engineState = await GetEngineStateAsync(); var featureState = engineState.Features.FirstOrDefault(x => x.Id == id); if (featureState == null) { featureState = new EngineFeatureState() { Id = id }; _engineState.Features.Add(featureState); } return(featureState); }
async Task IEngineDescriptorManagerEventHandler.Changed(EngineDescriptor descriptor, string tenant) { var engineState = await _stateManager.GetEngineStateAsync(); foreach (var feature in descriptor.Features) { var featureId = feature.Id; var featureState = engineState.Features.SingleOrDefault(f => f.Id == featureId); if (featureState == null) { featureState = new EngineFeatureState { Id = featureId }; } if (!featureState.IsInstalled) { await _stateManager.UpdateInstalledStateAsync(featureState, EngineFeatureState.States.Rising); } if (!featureState.IsEnabled) { await _stateManager.UpdateEnabledStateAsync(featureState, EngineFeatureState.States.Rising); } } foreach (var featureState in engineState.Features) { var featureId = featureState.Id; if (descriptor.Features.Any(f => f.Id == featureId)) { continue; } if (!featureState.IsDisabled) { await _stateManager.UpdateEnabledStateAsync(featureState, EngineFeatureState.States.Falling); } } FireApplyChangesIfNeeded(); }
public async Task UpdateInstalledStateAsync(EngineFeatureState featureState, EngineFeatureState.States value) { if (Logger.IsEnabled(LogLevel.Debug)) { Logger.LogDebug("Feature '{FeatureName}' InstallState changed from '{FeatureState}' to '{FeatureState}'", featureState.Id, featureState.InstallState, value); } var previousFeatureState = await GetOrCreateFeatureStateAsync(featureState.Id); if (previousFeatureState.InstallState != featureState.InstallState) { if (Logger.IsEnabled(LogLevel.Warning)) { Logger.LogWarning("Feature '{FeatureName}' prior InstallState was '{FeatureState}' when '{FeatureState}' was expected", featureState.Id, previousFeatureState.InstallState, featureState.InstallState); } } previousFeatureState.InstallState = value; featureState.InstallState = value; UpdateEngineState(); }
static bool IsRising(EngineFeatureState state) { return(state.InstallState == EngineFeatureState.States.Rising || state.EnableState == EngineFeatureState.States.Rising); }
private static bool FeatureShouldBeLoadedForStateChangeNotifications(EngineFeatureState engineFeatureState) { return(FeatureIsChanging(engineFeatureState) || engineFeatureState.EnableState == EngineFeatureState.States.Up); }