using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Common.Plugins; using MediaBrowser.Model.Events; using MediaBrowser.Model.Updates; using Microsoft.Extensions.DependencyInjection; namespace MediaBrowser.Common { /// /// An interface to be implemented by the applications hosting a kernel /// public interface IApplicationHost { /// /// Gets the name. /// /// The name. string Name { get; } /// /// Gets the device identifier. /// /// The device identifier. string SystemId { get; } /// /// Occurs when [application updated]. /// event EventHandler> ApplicationUpdated; /// /// Gets or sets a value indicating whether this instance has pending kernel reload. /// /// true if this instance has pending kernel reload; otherwise, false. bool HasPendingRestart { get; } bool IsShuttingDown { get; } /// /// Gets a value indicating whether this instance can self restart. /// /// true if this instance can self restart; otherwise, false. bool CanSelfRestart { get; } /// /// Occurs when [has pending restart changed]. /// event EventHandler HasPendingRestartChanged; /// /// Notifies the pending restart. /// void NotifyPendingRestart(); /// /// Restarts this instance. /// void Restart(); /// /// Gets the application version. /// /// The application version. string ApplicationVersion { get; } /// /// Gets the application user agent. /// /// The application user agent. string ApplicationUserAgent { 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 the exports. /// /// /// if set to true [manage liftime]. /// IEnumerable{``0}. IEnumerable GetExports(bool manageLifetime = true); /// /// Updates the application. /// /// Task. Task UpdateApplication(PackageVersionInfo package, CancellationToken cancellationToken, IProgress progress); /// /// Resolves this instance. /// /// /// ``0. T Resolve(); /// /// Shuts down. /// Task Shutdown(); /// /// Gets the plugins. /// /// The plugins. IPlugin[] Plugins { get; } /// /// Removes the plugin. /// /// The plugin. void RemovePlugin(IPlugin plugin); /// /// Inits this instance. /// Task Init(IServiceCollection serviceCollection); /// /// Creates the instance. /// /// The type. /// System.Object. object CreateInstance(Type type); PackageVersionClass SystemUpdateLevel { get; } } }