continue reworking provider project

This commit is contained in:
Luke Pulverenti
2016-10-27 03:58:33 -04:00
parent 823e558ade
commit 872aec9352
14 changed files with 875 additions and 826 deletions

View File

@@ -863,8 +863,8 @@ namespace MediaBrowser.Providers.Manager
private readonly ConcurrentQueue<Tuple<Guid, MetadataRefreshOptions>> _refreshQueue =
new ConcurrentQueue<Tuple<Guid, MetadataRefreshOptions>>();
private readonly object _refreshTimerLock = new object();
private Timer _refreshTimer;
private readonly object _refreshQueueLock = new object();
private bool _isProcessingRefreshQueue;
public void QueueRefresh(Guid id, MetadataRefreshOptions options)
{
@@ -874,38 +874,18 @@ namespace MediaBrowser.Providers.Manager
}
_refreshQueue.Enqueue(new Tuple<Guid, MetadataRefreshOptions>(id, options));
StartRefreshTimer();
}
private void StartRefreshTimer()
{
if (_disposed)
lock (_refreshQueueLock)
{
return;
}
lock (_refreshTimerLock)
{
if (_refreshTimer == null)
if (!_isProcessingRefreshQueue)
{
_refreshTimer = new Timer(RefreshTimerCallback, null, 100, Timeout.Infinite);
_isProcessingRefreshQueue = true;
Task.Run(() => StartProcessingRefreshQueue());
}
}
}
private void StopRefreshTimer()
{
lock (_refreshTimerLock)
{
if (_refreshTimer != null)
{
_refreshTimer.Dispose();
_refreshTimer = null;
}
}
}
private async void RefreshTimerCallback(object state)
private async Task StartProcessingRefreshQueue()
{
Tuple<Guid, MetadataRefreshOptions> refreshItem;
var libraryManager = _libraryManagerFactory();
@@ -939,7 +919,10 @@ namespace MediaBrowser.Providers.Manager
}
}
StopRefreshTimer();
lock (_refreshQueueLock)
{
_isProcessingRefreshQueue = false;
}
}
private async Task RefreshItem(BaseItem item, MetadataRefreshOptions options, CancellationToken cancellationToken)
@@ -1018,7 +1001,6 @@ namespace MediaBrowser.Providers.Manager
public void Dispose()
{
_disposed = true;
StopRefreshTimer();
}
}
}