mirror of https://github.com/lidarr/Lidarr
RSS Sync Timer Implemented using System.Timers.Timer
This commit is contained in:
parent
1086404152
commit
57f5b3ddc2
|
@ -7,8 +7,11 @@ namespace NzbDrone.Core.Providers
|
||||||
{
|
{
|
||||||
public interface ITimerProvider
|
public interface ITimerProvider
|
||||||
{
|
{
|
||||||
void ResetTimer();
|
void ResetRssSyncTimer();
|
||||||
void StartTimer();
|
void StartRssSyncTimer();
|
||||||
void StopTimer();
|
void StopRssSyncTimer();
|
||||||
|
void SetRssSyncTimer(int minutes);
|
||||||
|
TimeSpan RssSyncTimeLeft();
|
||||||
|
DateTime NextRssSyncTime();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Timers;
|
using System.Timers;
|
||||||
|
using NLog;
|
||||||
using NzbDrone.Core.Model.Notification;
|
using NzbDrone.Core.Model.Notification;
|
||||||
using Timer = System.Threading.Timer;
|
using Timer = System.Threading.Timer;
|
||||||
|
|
||||||
|
@ -12,26 +13,65 @@ namespace NzbDrone.Core.Providers
|
||||||
public class TimerProvider : ITimerProvider
|
public class TimerProvider : ITimerProvider
|
||||||
{
|
{
|
||||||
private ProgressNotification _seriesSyncNotification;
|
private ProgressNotification _seriesSyncNotification;
|
||||||
private Thread _seriesSyncThread;
|
private IRssSyncProvider _rssSyncProvider;
|
||||||
|
private Thread _rssSyncThread;
|
||||||
private System.Timers.Timer _rssSyncTimer;
|
private System.Timers.Timer _rssSyncTimer;
|
||||||
|
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
|
private DateTime _rssSyncNextInterval;
|
||||||
|
|
||||||
|
public TimerProvider(IRssSyncProvider rssSyncProvider)
|
||||||
|
{
|
||||||
|
_rssSyncProvider = rssSyncProvider;
|
||||||
|
}
|
||||||
|
|
||||||
#region ITimerProvider Members
|
#region ITimerProvider Members
|
||||||
|
|
||||||
public void ResetTimer()
|
public void ResetRssSyncTimer()
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
double interval = _rssSyncTimer.Interval;
|
||||||
|
_rssSyncTimer .Interval= interval;
|
||||||
}
|
}
|
||||||
public void StartTimer()
|
public void StartRssSyncTimer()
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
if (_rssSyncTimer.Interval < 900000) //If Timer is less than 15 minutes, throw an error!
|
||||||
|
{
|
||||||
|
Logger.Error("RSS Sync Frequency is invalid, please set the interval first");
|
||||||
|
throw new InvalidOperationException("RSS Sync Frequency Invalid");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void StopTimer()
|
_rssSyncTimer.Elapsed +=new ElapsedEventHandler(RunSync);
|
||||||
|
_rssSyncTimer.Start();
|
||||||
|
_rssSyncNextInterval = DateTime.Now.AddMilliseconds(_rssSyncTimer.Interval);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StopRssSyncTimer()
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
_rssSyncTimer.Stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetRssSyncTimer(int minutes)
|
||||||
|
{
|
||||||
|
long ms = minutes*60*1000;
|
||||||
|
_rssSyncTimer.Interval = ms;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TimeSpan RssSyncTimeLeft()
|
||||||
|
{
|
||||||
|
return _rssSyncNextInterval.Subtract(DateTime.Now);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DateTime NextRssSyncTime()
|
||||||
|
{
|
||||||
|
return _rssSyncNextInterval;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
private void RunSync(object obj, ElapsedEventArgs args)
|
||||||
|
{
|
||||||
|
DateTime.Now.AddMilliseconds(_rssSyncTimer.Interval);
|
||||||
|
_rssSyncProvider.Begin();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue