From d00178d8f0002638d47174c0bd73ebcf1ac5f6fd Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 13 Dec 2013 10:48:35 -0500 Subject: support progress bar while splash window is up --- MediaBrowser.ServerApplication/ApplicationHost.cs | 37 +++++++++++------------ 1 file changed, 17 insertions(+), 20 deletions(-) (limited to 'MediaBrowser.ServerApplication/ApplicationHost.cs') diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs index 46a7430b0..d4b96b6b8 100644 --- a/MediaBrowser.ServerApplication/ApplicationHost.cs +++ b/MediaBrowser.ServerApplication/ApplicationHost.cs @@ -8,6 +8,7 @@ using MediaBrowser.Common.Implementations.ScheduledTasks; using MediaBrowser.Common.IO; using MediaBrowser.Common.MediaInfo; using MediaBrowser.Common.Net; +using MediaBrowser.Common.Progress; using MediaBrowser.Controller; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Drawing; @@ -170,8 +171,6 @@ namespace MediaBrowser.ServerApplication private IItemRepository ItemRepository { get; set; } private INotificationsRepository NotificationsRepository { get; set; } - private Task _httpServerCreationTask; - /// /// Initializes a new instance of the class. /// @@ -215,25 +214,15 @@ namespace MediaBrowser.ServerApplication }); } - /// - /// Called when [logger loaded]. - /// - protected override void OnLoggerLoaded() - { - base.OnLoggerLoaded(); - - _httpServerCreationTask = Task.Run(() => ServerFactory.CreateServer(this, LogManager, "Media Browser", "mediabrowser", "dashboard/index.html")); - } - /// /// Registers resources that classes will depend on /// /// Task. - protected override async Task RegisterResources() + protected override async Task RegisterResources(IProgress progress) { ServerKernel = new Kernel(); - await base.RegisterResources().ConfigureAwait(false); + await base.RegisterResources(progress).ConfigureAwait(false); RegisterSingleInstance(new HttpResultFactory(LogManager, FileSystemManager)); @@ -247,8 +236,6 @@ namespace MediaBrowser.ServerApplication RegisterSingleInstance(() => new BdInfoExaminer()); - var mediaEncoderTask = RegisterMediaEncoder(); - UserDataManager = new UserDataManager(LogManager); RegisterSingleInstance(UserDataManager); @@ -278,8 +265,9 @@ namespace MediaBrowser.ServerApplication SessionManager = new SessionManager(UserDataManager, ServerConfigurationManager, Logger, UserRepository, LibraryManager); RegisterSingleInstance(SessionManager); - HttpServer = await _httpServerCreationTask.ConfigureAwait(false); + HttpServer = ServerFactory.CreateServer(this, LogManager, "Media Browser", "mediabrowser", "dashboard/index.html"); RegisterSingleInstance(HttpServer, false); + progress.Report(10); ServerManager = new ServerManager(this, JsonSerializer, Logger, ServerConfigurationManager); RegisterSingleInstance(ServerManager); @@ -295,14 +283,23 @@ namespace MediaBrowser.ServerApplication LiveTvManager = new LiveTvManager(ApplicationPaths, FileSystemManager, Logger, ItemRepository, ImageProcessor, UserManager, LocalizationManager, UserDataManager, DtoService); RegisterSingleInstance(LiveTvManager); + progress.Report(15); + + var innerProgress = new ActionableProgress(); + innerProgress.RegisterAction(p => progress.Report((.75 * p) + 15)); + + await RegisterMediaEncoder(innerProgress).ConfigureAwait(false); + progress.Report(90); var displayPreferencesTask = Task.Run(async () => await ConfigureDisplayPreferencesRepositories().ConfigureAwait(false)); var itemsTask = Task.Run(async () => await ConfigureItemRepositories().ConfigureAwait(false)); var userdataTask = Task.Run(async () => await ConfigureUserDataRepositories().ConfigureAwait(false)); await ConfigureNotificationsRepository().ConfigureAwait(false); + progress.Report(92); - await Task.WhenAll(itemsTask, displayPreferencesTask, userdataTask, mediaEncoderTask).ConfigureAwait(false); + await Task.WhenAll(itemsTask, displayPreferencesTask, userdataTask).ConfigureAwait(false); + progress.Report(100); SetKernelProperties(); } @@ -321,9 +318,9 @@ namespace MediaBrowser.ServerApplication /// Registers the media encoder. /// /// Task. - private async Task RegisterMediaEncoder() + private async Task RegisterMediaEncoder(IProgress progress) { - var info = await new FFMpegDownloader(Logger, ApplicationPaths, HttpClient, ZipClient, FileSystemManager).GetFFMpegInfo().ConfigureAwait(false); + var info = await new FFMpegDownloader(Logger, ApplicationPaths, HttpClient, ZipClient, FileSystemManager).GetFFMpegInfo(progress).ConfigureAwait(false); MediaEncoder = new MediaEncoder(LogManager.GetLogger("MediaEncoder"), ApplicationPaths, JsonSerializer, info.Path, info.ProbePath, info.Version, FileSystemManager); RegisterSingleInstance(MediaEncoder); -- cgit v1.2.3