Created ILibraryMonitor to replace IDirectoryWatchers

This commit is contained in:
Luke Pulverenti
2014-01-28 16:25:10 -05:00
parent 2ae17a8d52
commit 7c5b222463
16 changed files with 166 additions and 253 deletions

View File

@@ -3,7 +3,7 @@ using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.IO;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging;
@@ -36,7 +36,7 @@ namespace MediaBrowser.Providers.Manager
/// <summary>
/// The _directory watchers
/// </summary>
private readonly IDirectoryWatchers _directoryWatchers;
private readonly ILibraryMonitor _libraryMonitor;
private readonly IFileSystem _fileSystem;
private readonly ILogger _logger;
@@ -44,11 +44,11 @@ namespace MediaBrowser.Providers.Manager
/// Initializes a new instance of the <see cref="ImageSaver"/> class.
/// </summary>
/// <param name="config">The config.</param>
/// <param name="directoryWatchers">The directory watchers.</param>
public ImageSaver(IServerConfigurationManager config, IDirectoryWatchers directoryWatchers, IFileSystem fileSystem, ILogger logger)
/// <param name="libraryMonitor">The directory watchers.</param>
public ImageSaver(IServerConfigurationManager config, ILibraryMonitor libraryMonitor, IFileSystem fileSystem, ILogger logger)
{
_config = config;
_directoryWatchers = directoryWatchers;
_libraryMonitor = libraryMonitor;
_fileSystem = fileSystem;
_logger = logger;
_remoteImageCache = new FileSystemRepository(config.ApplicationPaths.DownloadedImagesDataPath);
@@ -160,7 +160,7 @@ namespace MediaBrowser.Providers.Manager
// Delete the current path
if (!string.IsNullOrEmpty(currentPath) && !paths.Contains(currentPath, StringComparer.OrdinalIgnoreCase))
{
_directoryWatchers.TemporarilyIgnore(currentPath);
_libraryMonitor.ReportFileSystemChangeBeginning(currentPath);
try
{
@@ -179,7 +179,7 @@ namespace MediaBrowser.Providers.Manager
}
finally
{
_directoryWatchers.RemoveTempIgnore(currentPath);
_libraryMonitor.ReportFileSystemChangeComplete(currentPath, false);
}
}
}
@@ -197,8 +197,8 @@ namespace MediaBrowser.Providers.Manager
var parentFolder = Path.GetDirectoryName(path);
_directoryWatchers.TemporarilyIgnore(path);
_directoryWatchers.TemporarilyIgnore(parentFolder);
_libraryMonitor.ReportFileSystemChangeBeginning(path);
_libraryMonitor.ReportFileSystemChangeBeginning(parentFolder);
try
{
@@ -223,8 +223,8 @@ namespace MediaBrowser.Providers.Manager
}
finally
{
_directoryWatchers.RemoveTempIgnore(path);
_directoryWatchers.RemoveTempIgnore(parentFolder);
_libraryMonitor.ReportFileSystemChangeComplete(path, false);
_libraryMonitor.ReportFileSystemChangeComplete(parentFolder, false);
}
}

View File

@@ -38,7 +38,6 @@ namespace MediaBrowser.Providers.Manager
public void AddParts(IEnumerable<IMetadataProvider> providers, IEnumerable<IImageProvider> imageProviders)
{
_providers = providers.OfType<IMetadataProvider<TItemType>>()
.OrderBy(GetSortOrder)
.ToArray();
_imageProviders = imageProviders.OrderBy(i => i.Order).ToArray();
@@ -179,21 +178,6 @@ namespace MediaBrowser.Providers.Manager
return providers;
}
/// <summary>
/// Gets the sort order.
/// </summary>
/// <param name="provider">The provider.</param>
/// <returns>System.Int32.</returns>
protected virtual int GetSortOrder(IMetadataProvider<TItemType> provider)
{
if (provider is IRemoteMetadataProvider)
{
return 1;
}
return 0;
}
/// <summary>
/// Determines whether this instance can refresh the specified provider.
/// </summary>
@@ -217,7 +201,7 @@ namespace MediaBrowser.Providers.Manager
protected abstract Task SaveItem(TItemType item, ItemUpdateType reason, CancellationToken cancellationToken);
protected virtual ItemId GetId(TItemType item)
protected virtual ItemId GetId(IHasMetadata item)
{
return new ItemId
{

View File

@@ -36,7 +36,7 @@ namespace MediaBrowser.Providers.Manager
/// <summary>
/// The _directory watchers
/// </summary>
private readonly IDirectoryWatchers _directoryWatchers;
private readonly ILibraryMonitor _libraryMonitor;
/// <summary>
/// Gets or sets the configuration manager.
@@ -57,23 +57,23 @@ namespace MediaBrowser.Providers.Manager
private readonly IItemRepository _itemRepo;
private IMetadataService[] _metadataServices = {};
private IMetadataService[] _metadataServices = { };
/// <summary>
/// Initializes a new instance of the <see cref="ProviderManager" /> class.
/// </summary>
/// <param name="httpClient">The HTTP client.</param>
/// <param name="configurationManager">The configuration manager.</param>
/// <param name="directoryWatchers">The directory watchers.</param>
/// <param name="libraryMonitor">The directory watchers.</param>
/// <param name="logManager">The log manager.</param>
/// <param name="fileSystem">The file system.</param>
/// <param name="itemRepo">The item repo.</param>
public ProviderManager(IHttpClient httpClient, IServerConfigurationManager configurationManager, IDirectoryWatchers directoryWatchers, ILogManager logManager, IFileSystem fileSystem, IItemRepository itemRepo)
public ProviderManager(IHttpClient httpClient, IServerConfigurationManager configurationManager, ILibraryMonitor libraryMonitor, ILogManager logManager, IFileSystem fileSystem, IItemRepository itemRepo)
{
_logger = logManager.GetLogger("ProviderManager");
_httpClient = httpClient;
ConfigurationManager = configurationManager;
_directoryWatchers = directoryWatchers;
_libraryMonitor = libraryMonitor;
_fileSystem = fileSystem;
_itemRepo = itemRepo;
}
@@ -315,7 +315,7 @@ namespace MediaBrowser.Providers.Manager
}
//Tell the watchers to ignore
_directoryWatchers.TemporarilyIgnore(path);
_libraryMonitor.ReportFileSystemChangeBeginning(path);
if (dataToSave.CanSeek)
{
@@ -338,7 +338,7 @@ namespace MediaBrowser.Providers.Manager
finally
{
//Remove the ignore
_directoryWatchers.RemoveTempIgnore(path);
_libraryMonitor.ReportFileSystemChangeComplete(path, false);
}
}
@@ -380,7 +380,7 @@ namespace MediaBrowser.Providers.Manager
/// <returns>Task.</returns>
public Task SaveImage(BaseItem item, Stream source, string mimeType, ImageType type, int? imageIndex, string sourceUrl, CancellationToken cancellationToken)
{
return new ImageSaver(ConfigurationManager, _directoryWatchers, _fileSystem, _logger).SaveImage(item, source, mimeType, type, imageIndex, sourceUrl, cancellationToken);
return new ImageSaver(ConfigurationManager, _libraryMonitor, _fileSystem, _logger).SaveImage(item, source, mimeType, type, imageIndex, sourceUrl, cancellationToken);
}
/// <summary>