From fb88e4d5fcd02ada0999a09b68a49617f4a35309 Mon Sep 17 00:00:00 2001 From: LukePulverenti Luke Pulverenti luke pulverenti Date: Mon, 17 Sep 2012 14:09:35 -0400 Subject: Added the ability to reload the server and created a Plugins solution --- MediaBrowser.Controller/Kernel.cs | 57 +++++++++++++++++++++++++++++++++++---- 1 file changed, 52 insertions(+), 5 deletions(-) (limited to 'MediaBrowser.Controller') diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs index 122660c96a..2756260e38 100644 --- a/MediaBrowser.Controller/Kernel.cs +++ b/MediaBrowser.Controller/Kernel.cs @@ -78,28 +78,53 @@ namespace MediaBrowser.Controller : base() { Instance = this; + } + /// + /// Performs initializations that only occur once + /// + protected override void InitializeInternal(IProgress progress) + { ItemController = new ItemController(); DirectoryWatchers = new DirectoryWatchers(); - WeatherClient = new WeatherClient(); ItemController.PreBeginResolvePath += ItemController_PreBeginResolvePath; ItemController.BeginResolvePath += ItemController_BeginResolvePath; + + base.InitializeInternal(progress); } - public async override Task Init(IProgress progress) + /// + /// Performs initializations that can be reloaded at anytime + /// + public override async Task Reload(IProgress progress) { - ExtractFFMpeg(); + await base.Reload(progress).ConfigureAwait(false); - await base.Init(progress).ConfigureAwait(false); + ReloadWeatherClient(); + + ExtractFFMpeg(); progress.Report(new TaskProgress { Description = "Loading Users", PercentComplete = 15 }); ReloadUsers(); progress.Report(new TaskProgress { Description = "Loading Media Library", PercentComplete = 25 }); await ReloadRoot(allowInternetProviders: false).ConfigureAwait(false); + } + + /// + /// Completely disposes the Kernel + /// + public override void Dispose() + { + base.Dispose(); - progress.Report(new TaskProgress { Description = "Loading Complete", PercentComplete = 100 }); + DirectoryWatchers.Stop(); + + DisposeWeatherClient(); + + ItemController.PreBeginResolvePath -= ItemController_PreBeginResolvePath; + ItemController.BeginResolvePath -= ItemController_BeginResolvePath; } protected override void OnComposablePartsLoaded() @@ -290,6 +315,7 @@ namespace MediaBrowser.Controller user.Name = "Default User"; user.Id = Guid.Parse("5d1cf7fce25943b790d140095457a42b"); + user.PrimaryImagePath = "D:\\Video\\TV\\Archer (2009)\\backdrop.jpg"; list.Add(user); user = new User { }; @@ -387,5 +413,26 @@ namespace MediaBrowser.Controller } } } + + /// + /// Disposes the current WeatherClient + /// + private void DisposeWeatherClient() + { + if (WeatherClient != null) + { + WeatherClient.Dispose(); + } + } + + /// + /// Disposes the current WeatherClient and creates a new one + /// + private void ReloadWeatherClient() + { + DisposeWeatherClient(); + + WeatherClient = new WeatherClient(); + } } } -- cgit v1.2.3