From 63c9104e624d0d22e6c5baf79db2d7bb9deb74d0 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 6 Dec 2013 15:07:34 -0500 Subject: Pull ProviderData out of memory --- .../Providers/BaseMetadataProvider.cs | 39 ++++++++-------------- 1 file changed, 13 insertions(+), 26 deletions(-) (limited to 'MediaBrowser.Controller/Providers/BaseMetadataProvider.cs') diff --git a/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs b/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs index 07bb7d5b2..40afe0b54 100644 --- a/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs +++ b/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs @@ -36,7 +36,7 @@ namespace MediaBrowser.Controller.Providers /// /// The _id /// - protected readonly Guid Id; + public readonly Guid Id; /// /// The true task result @@ -132,41 +132,33 @@ namespace MediaBrowser.Controller.Providers /// The item. /// The value. /// The provider version. + /// The provider information. /// The status. /// item public virtual void SetLastRefreshed(BaseItem item, DateTime value, string providerVersion, - ProviderRefreshStatus status = ProviderRefreshStatus.Success) + BaseProviderInfo providerInfo, ProviderRefreshStatus status = ProviderRefreshStatus.Success) { if (item == null) { throw new ArgumentNullException("item"); } - BaseProviderInfo data; - - if (!item.ProviderData.TryGetValue(Id, out data)) - { - data = new BaseProviderInfo(); - } - - data.LastRefreshed = value; - data.LastRefreshStatus = status; - data.ProviderVersion = providerVersion; + providerInfo.LastRefreshed = value; + providerInfo.LastRefreshStatus = status; + providerInfo.ProviderVersion = providerVersion; // Save the file system stamp for future comparisons if (RefreshOnFileSystemStampChange && item.LocationType == LocationType.FileSystem) { try { - data.FileStamp = GetCurrentFileSystemStamp(item); + providerInfo.FileStamp = GetCurrentFileSystemStamp(item); } catch (IOException ex) { Logger.ErrorException("Error getting file stamp for {0}", ex, item.Path); } } - - item.ProviderData[Id] = data; } /// @@ -174,11 +166,12 @@ namespace MediaBrowser.Controller.Providers /// /// The item. /// The value. + /// The provider information. /// The status. public void SetLastRefreshed(BaseItem item, DateTime value, - ProviderRefreshStatus status = ProviderRefreshStatus.Success) + BaseProviderInfo providerInfo, ProviderRefreshStatus status = ProviderRefreshStatus.Success) { - SetLastRefreshed(item, value, ProviderVersion, status); + SetLastRefreshed(item, value, ProviderVersion, providerInfo, status); } /// @@ -189,20 +182,13 @@ namespace MediaBrowser.Controller.Providers /// The item. /// true if XXXX, false otherwise /// - public bool NeedsRefresh(BaseItem item) + public bool NeedsRefresh(BaseItem item, BaseProviderInfo data) { if (item == null) { throw new ArgumentNullException(); } - BaseProviderInfo data; - - if (!item.ProviderData.TryGetValue(Id, out data)) - { - data = new BaseProviderInfo(); - } - return NeedsRefreshInternal(item, data); } @@ -299,10 +285,11 @@ namespace MediaBrowser.Controller.Providers /// /// The item. /// if set to true [force]. + /// The provider information. /// The cancellation token. /// Task{System.Boolean}. /// - public abstract Task FetchAsync(BaseItem item, bool force, CancellationToken cancellationToken); + public abstract Task FetchAsync(BaseItem item, bool force, BaseProviderInfo providerInfo, CancellationToken cancellationToken); /// /// Gets the priority. -- cgit v1.2.3