private Task Execute(IEnumerable<PackageId> packages) { var deferredContext = new DeferredContext(); foreach (var package in packages) { var config = ConfigurationProvider.GetPackageConfiguration(package); HandlePackage(config, deferredContext, false); } RaiseRuntimeEvent(new AllRegularPackagesLoadedEvent()); return Task.Factory.StartNew(HandleDeferredContext, deferredContext); }
private void LoadPackageInfo(IPackageConfiguration configurationProvider, DeferredContext deferredContext, bool ignoreEntityActivationMode) { var packageStartupHandlerInfos = configurationProvider.GetPackageStartupHandlers(); if (packageStartupHandlerInfos != null) { foreach (var startupHandlerInfo in packageStartupHandlerInfos) { var startupHandler = EntityActivator.Current.GetPackageStartupHandler(startupHandlerInfo); startupHandler.Start(RuntimeContext); } } var runtimeEventsHandlerInfos = configurationProvider.GetRuntimeEventHandlers(); if (runtimeEventsHandlerInfos != null) { foreach (var eventsHandlerInfo in runtimeEventsHandlerInfos) { var eventsHandler = EntityActivator.Current.GetRuntimeEventsHandler(eventsHandlerInfo); RuntimeContext.RegisterRuntimeEventHandler(eventsHandler); } } var extensions = configurationProvider.GetExtensions(); if (extensions != null) { foreach (var extension in extensions) { RuntimeContext.RegisterExtension(extension); } } var extensibilityPoints = configurationProvider.GetExtensibilityPoints(); foreach (var extensibilityPointInfo in extensibilityPoints) { if (extensibilityPointInfo.ActivationMode == EntityActivationMode.Immediate || ignoreEntityActivationMode) { ActivateAndRegisterExtensibilityPoint(extensibilityPointInfo); } else { deferredContext.ExtensibilityPoints.Add(extensibilityPointInfo); } } }
private void HandlePackage(IPackageConfiguration config, DeferredContext deferredContext, bool ignoreEntityActivationMode) { if (!config.IsPackageEnabled) return; if (config.GetPackageActivationMode() == EntityActivationMode.Immediate) { RaiseRuntimeEvent(new BeforePackageLoadedEvent {Package = config.Id}); LoadPackageInfo(config, deferredContext, ignoreEntityActivationMode); RaiseRuntimeEvent(new AfterPackageLoadedEvent { Package = config.Id }); } else { deferredContext.PackageConfigurations.Add(config); } }
protected virtual Task OnStart() { RaiseRuntimeEvent(new RuntimeStartEvent()); var deferredContext = new DeferredContext(); var configurations = _configurationProvider.GetPackageConfigurations(DependencyOrdering.BottomToTop); foreach (var config in configurations) { HandlePackage(config, deferredContext, false); } RaiseRuntimeEvent(new AllRegularPackagesLoadedEvent()); return(Task.Factory.StartNew(HandleDeferredContext, deferredContext)); }