diff options
Diffstat (limited to 'MediaBrowser.Controller/Kernel.cs')
| -rw-r--r-- | MediaBrowser.Controller/Kernel.cs | 77 |
1 files changed, 60 insertions, 17 deletions
diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs index cf4450aec..2ea6a44cf 100644 --- a/MediaBrowser.Controller/Kernel.cs +++ b/MediaBrowser.Controller/Kernel.cs @@ -94,30 +94,51 @@ namespace MediaBrowser.Controller : base()
{
Instance = this;
+ }
+ /// <summary>
+ /// Performs initializations that only occur once
+ /// </summary>
+ protected override void InitializeInternal(IProgress<TaskProgress> progress)
+ {
ItemController = new ItemController();
DirectoryWatchers = new DirectoryWatchers();
- WeatherClient = new WeatherClient();
+
+ base.InitializeInternal(progress);
}
- public async override Task Init(IProgress<TaskProgress> progress)
+ /// <summary>
+ /// Performs initializations that can be reloaded at anytime
+ /// </summary>
+ public override async Task Reload(IProgress<TaskProgress> progress)
{
- ExtractFFMpeg();
+ await base.Reload(progress).ConfigureAwait(false);
- await base.Init(progress).ConfigureAwait(false);
+ ReloadWeatherClient();
- progress.Report(new TaskProgress() { Description = "Loading Users", PercentComplete = 15 });
+ ExtractFFMpeg();
+
+ progress.Report(new TaskProgress { Description = "Loading Users" });
ReloadUsers();
- progress.Report(new TaskProgress() { Description = "Loading Media Library", PercentComplete = 25 });
+ progress.Report(new TaskProgress { Description = "Loading Media Library" });
await ReloadRoot(allowInternetProviders: false).ConfigureAwait(false);
+ }
+
+ /// <summary>
+ /// Completely disposes the Kernel
+ /// </summary>
+ public override void Dispose()
+ {
+ base.Dispose();
- progress.Report(new TaskProgress() { Description = "Loading Complete", PercentComplete = 100 });
+ DirectoryWatchers.Stop();
- //watch the root folder children for changes
- RootFolder.ChildrenChanged += RootFolder_ChildrenChanged;
+ DisposeWeatherClient();
+ ItemController.PreBeginResolvePath -= ItemController_PreBeginResolvePath;
+ ItemController.BeginResolvePath -= ItemController_BeginResolvePath;
}
protected override void OnComposablePartsLoaded()
@@ -204,7 +225,7 @@ namespace MediaBrowser.Controller /// </summary>
public AuthenticationResult AuthenticateUser(User user, string password)
{
- AuthenticationResult result = new AuthenticationResult();
+ var result = new AuthenticationResult();
// When EnableUserProfiles is false, only the default User can login
if (!Configuration.EnableUserProfiles)
@@ -233,7 +254,7 @@ namespace MediaBrowser.Controller public async Task ReloadItem(BaseItem item)
{
- Folder folder = item as Folder;
+ var folder = item as Folder;
if (folder != null && folder.IsRoot)
{
@@ -279,16 +300,17 @@ namespace MediaBrowser.Controller /// </summary>
private IEnumerable<User> GetAllUsers()
{
- List<User> list = new List<User>();
+ var list = new List<User>();
// Return a dummy user for now since all calls to get items requre a userId
- User user = new User();
+ var user = new User { };
user.Name = "Default User";
user.Id = Guid.Parse("5d1cf7fce25943b790d140095457a42b");
+ user.PrimaryImagePath = "D:\\Video\\TV\\Archer (2009)\\backdrop.jpg";
list.Add(user);
- user = new User();
+ user = new User { };
user.Name = "Abobader";
user.Id = Guid.NewGuid();
user.LastLoginDate = DateTime.UtcNow.AddDays(-1);
@@ -296,12 +318,12 @@ namespace MediaBrowser.Controller user.Password = ("1234").GetMD5().ToString();
list.Add(user);
- user = new User();
+ user = new User { };
user.Name = "Scottisafool";
user.Id = Guid.NewGuid();
list.Add(user);
- user = new User();
+ user = new User { };
user.Name = "Redshirt";
user.Id = Guid.NewGuid();
list.Add(user);
@@ -377,11 +399,32 @@ namespace MediaBrowser.Controller // Extract exe
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MediaBrowser.Controller.FFMpeg." + Path.GetFileName(exe)))
{
- using (FileStream fileStream = new FileStream(exe, FileMode.Create))
+ using (var fileStream = new FileStream(exe, FileMode.Create))
{
stream.CopyTo(fileStream);
}
}
}
+
+ /// <summary>
+ /// Disposes the current WeatherClient
+ /// </summary>
+ private void DisposeWeatherClient()
+ {
+ if (WeatherClient != null)
+ {
+ WeatherClient.Dispose();
+ }
+ }
+
+ /// <summary>
+ /// Disposes the current WeatherClient and creates a new one
+ /// </summary>
+ private void ReloadWeatherClient()
+ {
+ DisposeWeatherClient();
+
+ WeatherClient = new WeatherClient();
+ }
}
}
|
