diff options
| author | Techywarrior <techywarrior@gmail.com> | 2013-05-02 21:39:34 -0700 |
|---|---|---|
| committer | Techywarrior <techywarrior@gmail.com> | 2013-05-02 21:39:34 -0700 |
| commit | 8095f7200b1bd79bc30572a3ebde03f34a6b9e01 (patch) | |
| tree | 42d664de774dc7744fc133be3f3a646e3db056eb /MediaBrowser.Server.Implementations | |
| parent | f58c26afaa94b812c06004145999336bb77e4629 (diff) | |
| parent | 9fdf5d1c4b488fe53e557870cacdf02b1b7fd4a2 (diff) | |
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Diffstat (limited to 'MediaBrowser.Server.Implementations')
5 files changed, 105 insertions, 79 deletions
diff --git a/MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs b/MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs index d45952d6f..51fbfd219 100644 --- a/MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs +++ b/MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs @@ -103,7 +103,8 @@ namespace MediaBrowser.Server.Implementations.IO /// </summary> public void Start() { - LibraryManager.LibraryChanged += Instance_LibraryChanged; + LibraryManager.ItemAdded += LibraryManager_ItemAdded; + LibraryManager.ItemRemoved += LibraryManager_ItemRemoved; var pathsToWatch = new List<string> { LibraryManager.RootFolder.Path }; @@ -138,6 +139,32 @@ namespace MediaBrowser.Server.Implementations.IO } /// <summary> + /// Handles the ItemRemoved event of the LibraryManager control. + /// </summary> + /// <param name="sender">The source of the event.</param> + /// <param name="e">The <see cref="ItemChangeEventArgs"/> instance containing the event data.</param> + void LibraryManager_ItemRemoved(object sender, ItemChangeEventArgs e) + { + if (e.Item.Parent is AggregateFolder) + { + StopWatchingPath(e.Item.Path); + } + } + + /// <summary> + /// Handles the ItemAdded event of the LibraryManager control. + /// </summary> + /// <param name="sender">The source of the event.</param> + /// <param name="e">The <see cref="ItemChangeEventArgs"/> instance containing the event data.</param> + void LibraryManager_ItemAdded(object sender, ItemChangeEventArgs e) + { + if (e.Item.Parent is AggregateFolder) + { + StartWatchingPath(e.Item.Path); + } + } + + /// <summary> /// Examine a list of strings assumed to be file paths to see if it contains a parent of /// the provided path. /// </summary> @@ -232,32 +259,6 @@ namespace MediaBrowser.Server.Implementations.IO } /// <summary> - /// Handles the LibraryChanged event of the Kernel - /// </summary> - /// <param name="sender">The source of the event.</param> - /// <param name="e">The <see cref="MediaBrowser.Controller.Library.ChildrenChangedEventArgs" /> instance containing the event data.</param> - void Instance_LibraryChanged(object sender, ChildrenChangedEventArgs e) - { - if (e.Folder is AggregateFolder && e.HasAddOrRemoveChange) - { - if (e.ItemsRemoved != null) - { - foreach (var item in e.ItemsRemoved.OfType<Folder>()) - { - StopWatchingPath(item.Path); - } - } - if (e.ItemsAdded != null) - { - foreach (var item in e.ItemsAdded.OfType<Folder>()) - { - StartWatchingPath(item.Path); - } - } - } - } - - /// <summary> /// Handles the Error event of the watcher control. /// </summary> /// <param name="sender">The source of the event.</param> @@ -497,7 +498,8 @@ namespace MediaBrowser.Server.Implementations.IO /// </summary> public void Stop() { - LibraryManager.LibraryChanged -= Instance_LibraryChanged; + LibraryManager.ItemAdded -= LibraryManager_ItemAdded; + LibraryManager.ItemRemoved -= LibraryManager_ItemRemoved; FileSystemWatcher watcher; diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index b78aa88f3..90b7850fb 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Common.Events; -using MediaBrowser.Common.Extensions; +using MediaBrowser.Common.Extensions; using MediaBrowser.Common.Progress; using MediaBrowser.Common.ScheduledTasks; using MediaBrowser.Controller.Configuration; @@ -69,24 +68,20 @@ namespace MediaBrowser.Server.Implementations.Library /// <value>The item repository.</value> public IItemRepository ItemRepository { get; set; } - #region LibraryChanged Event /// <summary> - /// Fires whenever any validation routine adds or removes items. The added and removed items are properties of the args. - /// *** Will fire asynchronously. *** + /// Occurs when [item added]. /// </summary> - public event EventHandler<ChildrenChangedEventArgs> LibraryChanged; + public event EventHandler<ItemChangeEventArgs> ItemAdded; /// <summary> - /// Reports the library changed. + /// Occurs when [item updated]. /// </summary> - /// <param name="args">The <see cref="ChildrenChangedEventArgs" /> instance containing the event data.</param> - public void ReportLibraryChanged(ChildrenChangedEventArgs args) - { - UpdateLibraryCache(args); + public event EventHandler<ItemChangeEventArgs> ItemUpdated; - EventHelper.FireEventIfNotNull(LibraryChanged, this, args, _logger); - } - #endregion + /// <summary> + /// Occurs when [item removed]. + /// </summary> + public event EventHandler<ItemChangeEventArgs> ItemRemoved; /// <summary> /// The _logger @@ -303,25 +298,6 @@ namespace MediaBrowser.Server.Implementations.Library } /// <summary> - /// Updates the library cache. - /// </summary> - /// <param name="args">The <see cref="ChildrenChangedEventArgs"/> instance containing the event data.</param> - private void UpdateLibraryCache(ChildrenChangedEventArgs args) - { - UpdateItemInLibraryCache(args.Folder); - - foreach (var item in args.ItemsAdded) - { - UpdateItemInLibraryCache(item); - } - - foreach (var item in args.ItemsUpdated) - { - UpdateItemInLibraryCache(item); - } - } - - /// <summary> /// Updates the item in library cache. /// </summary> /// <param name="item">The item.</param> @@ -1070,12 +1046,60 @@ namespace MediaBrowser.Server.Implementations.Library } /// <summary> + /// Creates the item. + /// </summary> + /// <param name="item">The item.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>Task.</returns> + public async Task CreateItem(BaseItem item, CancellationToken cancellationToken) + { + await SaveItem(item, cancellationToken).ConfigureAwait(false); + + UpdateItemInLibraryCache(item); + + if (ItemAdded != null) + { + ItemAdded(this, new ItemChangeEventArgs { Item = item }); + } + } + + /// <summary> + /// Updates the item. + /// </summary> + /// <param name="item">The item.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>Task.</returns> + public async Task UpdateItem(BaseItem item, CancellationToken cancellationToken) + { + await SaveItem(item, cancellationToken).ConfigureAwait(false); + + UpdateItemInLibraryCache(item); + + if (ItemUpdated != null) + { + ItemUpdated(this, new ItemChangeEventArgs { Item = item }); + } + } + + /// <summary> + /// Reports the item removed. + /// </summary> + /// <param name="item">The item.</param> + public void ReportItemRemoved(BaseItem item) + { + if (ItemRemoved != null) + { + ItemRemoved(this, new ItemChangeEventArgs { Item = item }); + } + } + + /// <summary> /// Saves the item. /// </summary> /// <param name="item">The item.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> - public Task SaveItem(BaseItem item, CancellationToken cancellationToken) + private Task SaveItem(BaseItem item, CancellationToken cancellationToken) { return ItemRepository.SaveItem(item, cancellationToken); } diff --git a/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs b/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs index ef9662d0b..891965f12 100644 --- a/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs +++ b/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs @@ -43,21 +43,21 @@ namespace MediaBrowser.Server.Implementations.Library //BaseItem.LibraryManager.LibraryChanged += LibraryChanged; } - public void LibraryChanged(object source, ChildrenChangedEventArgs changeInformation) - { - Task.Run(() => - { - if (changeInformation.ItemsAdded.Count + changeInformation.ItemsUpdated.Count > 0) - { - LuceneSearch.AddUpdateLuceneIndex(changeInformation.ItemsAdded.Concat(changeInformation.ItemsUpdated)); - } - - if (changeInformation.ItemsRemoved.Count > 0) - { - LuceneSearch.RemoveFromLuceneIndex(changeInformation.ItemsRemoved); - } - }); - } + //public void LibraryChanged(object source, ChildrenChangedEventArgs changeInformation) + //{ + // Task.Run(() => + // { + // if (changeInformation.ItemsAdded.Count + changeInformation.ItemsUpdated.Count > 0) + // { + // LuceneSearch.AddUpdateLuceneIndex(changeInformation.ItemsAdded.Concat(changeInformation.ItemsUpdated)); + // } + + // if (changeInformation.ItemsRemoved.Count > 0) + // { + // LuceneSearch.RemoveFromLuceneIndex(changeInformation.ItemsRemoved); + // } + // }); + //} public void AddItemsToIndex(IEnumerable<BaseItem> items) { diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/AudioImagesTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/AudioImagesTask.cs index 4d323ebd0..2d10917d3 100644 --- a/MediaBrowser.Server.Implementations/ScheduledTasks/AudioImagesTask.cs +++ b/MediaBrowser.Server.Implementations/ScheduledTasks/AudioImagesTask.cs @@ -150,7 +150,7 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks // Image is already in the cache item.PrimaryImagePath = path; - await _libraryManager.SaveItem(item, cancellationToken).ConfigureAwait(false); + await _libraryManager.UpdateItem(item, cancellationToken).ConfigureAwait(false); } } diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs index 74307b0d5..c1f3173ee 100644 --- a/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs +++ b/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs @@ -187,7 +187,7 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks // Image is already in the cache item.PrimaryImagePath = path; - await _libraryManager.SaveItem(item, cancellationToken).ConfigureAwait(false); + await _libraryManager.UpdateItem(item, cancellationToken).ConfigureAwait(false); } } |
