From 75dd40a2ea35af4f941d468f99506a7a131e2800 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 30 Sep 2013 18:18:44 -0400 Subject: add ability to install pismo --- .../BaseApplicationHost.cs | 44 +++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) (limited to 'MediaBrowser.Common.Implementations') diff --git a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs index 8bd203dcd7..fe0abcae02 100644 --- a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs +++ b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs @@ -1,6 +1,7 @@ using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Events; using MediaBrowser.Common.Implementations.Archiving; +using MediaBrowser.Common.Implementations.IO; using MediaBrowser.Common.Implementations.NetworkManagement; using MediaBrowser.Common.Implementations.ScheduledTasks; using MediaBrowser.Common.Implementations.Security; @@ -156,6 +157,8 @@ namespace MediaBrowser.Common.Implementations /// /// The zip client. protected IZipClient ZipClient { get; set; } + + protected IIsoManager IsoManager { get; set; } /// /// Initializes a new instance of the class. @@ -193,18 +196,54 @@ namespace MediaBrowser.Common.Implementations await RegisterResources().ConfigureAwait(false); FindParts(); + + await InstallIsoMounters(CancellationToken.None).ConfigureAwait(false); } + /// + /// Called when [logger loaded]. + /// protected virtual void OnLoggerLoaded() { } + /// + /// Installs the iso mounters. + /// + /// The cancellation token. + /// Task. + private async Task InstallIsoMounters(CancellationToken cancellationToken) + { + var list = new List(); + + foreach (var isoMounter in GetExports()) + { + try + { + if (isoMounter.RequiresInstallation && !isoMounter.IsInstalled) + { + Logger.Info("Installing {0}", isoMounter.Name); + + await isoMounter.Install(cancellationToken).ConfigureAwait(false); + } + + list.Add(isoMounter); + } + catch (Exception ex) + { + Logger.ErrorException("{0} failed to load.", ex, isoMounter.Name); + } + } + + IsoManager.AddParts(list); + } + /// /// Runs the startup tasks. /// /// Task. - public virtual Task RunStartupTasks() + public virtual Task RunStartupTasks() { return Task.Run(() => { @@ -307,6 +346,9 @@ namespace MediaBrowser.Common.Implementations ZipClient = new ZipClient(); RegisterSingleInstance(ZipClient); + + IsoManager = new IsoManager(); + RegisterSingleInstance(IsoManager); }); } -- cgit v1.2.3