aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations
diff options
context:
space:
mode:
authorTechywarrior <techywarrior@gmail.com>2013-05-02 21:39:34 -0700
committerTechywarrior <techywarrior@gmail.com>2013-05-02 21:39:34 -0700
commit8095f7200b1bd79bc30572a3ebde03f34a6b9e01 (patch)
tree42d664de774dc7744fc133be3f3a646e3db056eb /MediaBrowser.Server.Implementations
parentf58c26afaa94b812c06004145999336bb77e4629 (diff)
parent9fdf5d1c4b488fe53e557870cacdf02b1b7fd4a2 (diff)
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Diffstat (limited to 'MediaBrowser.Server.Implementations')
-rw-r--r--MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs58
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs92
-rw-r--r--MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs30
-rw-r--r--MediaBrowser.Server.Implementations/ScheduledTasks/AudioImagesTask.cs2
-rw-r--r--MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs2
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);
}
}