using System; using System.Collections.Generic; using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Logging; using Umbraco.Core.Persistence; namespace Umbraco.Core { /// /// Provides static options for the runtime. /// /// /// These options can be configured in PreApplicationStart or via appSettings. /// public static class RuntimeOptions { private static List> _onBoot; private static List> _onEssentials; /// /// Executes the RuntimeBoot handlers. /// internal static void DoRuntimeBoot(IProfilingLogger logger) { if (_onBoot == null) return; foreach (var action in _onBoot) action(logger); } /// /// Executes the RuntimeEssentials handlers. /// internal static void DoRuntimeEssentials(IFactory factory) { if (_onEssentials== null) return; foreach (var action in _onEssentials) action(factory); } /// /// Registers a RuntimeBoot handler. /// /// /// A RuntimeBoot handler runs when the runtime boots, right after the /// loggers have been created, but before anything else. /// public static void OnRuntimeBoot(Action action) { if (_onBoot == null) _onBoot = new List>(); _onBoot.Add(action); } /// /// Registers a RuntimeEssentials handler. /// /// /// A RuntimeEssentials handler runs after the runtime has created a few /// essential things (AppCaches, a TypeLoader, and a database factory) but /// before anything else. /// public static void OnRuntimeEssentials(Action action) { if (_onEssentials == null) _onEssentials = new List>(); _onEssentials.Add(action); } } }