using MediaBrowser.Model.Updates; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace MediaBrowser.Common.Kernel { /// /// An interface to be implemented by the applications hosting a kernel /// public interface IApplicationHost { /// /// Restarts this instance. /// void Restart(); /// /// Gets the application version. /// /// The application version. Version ApplicationVersion { get; } /// /// Gets or sets a value indicating whether this instance can self update. /// /// true if this instance can self update; otherwise, false. bool CanSelfUpdate { get; } /// /// Gets a value indicating whether this instance is first run. /// /// true if this instance is first run; otherwise, false. bool IsFirstRun { get; } /// /// Gets the failed assemblies. /// /// The failed assemblies. List FailedAssemblies { get; } /// /// Gets all concrete types. /// /// All concrete types. Type[] AllConcreteTypes { get; } /// /// Gets the exports. /// /// /// if set to true [manage liftime]. /// IEnumerable{``0}. IEnumerable GetExports(bool manageLiftime = true); /// /// Checks for update. /// /// Task{CheckForUpdateResult}. Task CheckForApplicationUpdate(CancellationToken cancellationToken, IProgress progress); /// /// Updates the application. /// /// Task. Task UpdateApplication(CancellationToken cancellationToken, IProgress progress); /// /// Creates an instance of type and resolves all constructor dependancies /// /// The type. /// System.Object. object CreateInstance(Type type); /// /// Resolves this instance. /// /// /// ``0. T Resolve(); /// /// Resolves this instance. /// /// /// ``0. T TryResolve(); /// /// Shuts down. /// void Shutdown(); } }