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);
}
}
}