aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common.Implementations/BaseApplicationHost.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Common.Implementations/BaseApplicationHost.cs')
-rw-r--r--MediaBrowser.Common.Implementations/BaseApplicationHost.cs44
1 files changed, 43 insertions, 1 deletions
diff --git a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs
index 8bd203dcd..fe0abcae0 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
/// </summary>
/// <value>The zip client.</value>
protected IZipClient ZipClient { get; set; }
+
+ protected IIsoManager IsoManager { get; set; }
/// <summary>
/// Initializes a new instance of the <see cref="BaseApplicationHost{TApplicationPathsType}"/> class.
@@ -193,18 +196,54 @@ namespace MediaBrowser.Common.Implementations
await RegisterResources().ConfigureAwait(false);
FindParts();
+
+ await InstallIsoMounters(CancellationToken.None).ConfigureAwait(false);
}
+ /// <summary>
+ /// Called when [logger loaded].
+ /// </summary>
protected virtual void OnLoggerLoaded()
{
}
/// <summary>
+ /// Installs the iso mounters.
+ /// </summary>
+ /// <param name="cancellationToken">The cancellation token.</param>
+ /// <returns>Task.</returns>
+ private async Task InstallIsoMounters(CancellationToken cancellationToken)
+ {
+ var list = new List<IIsoMounter>();
+
+ foreach (var isoMounter in GetExports<IIsoMounter>())
+ {
+ 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);
+ }
+
+ /// <summary>
/// Runs the startup tasks.
/// </summary>
/// <returns>Task.</returns>
- 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);
});
}