1
0
mirror of https://github.com/Radarr/Radarr.git synced 2024-10-05 15:47:20 +02:00

RSS Sync Timer Implemented using System.Timers.Timer

This commit is contained in:
markus101 2011-02-08 17:23:01 -08:00
parent 1086404152
commit 57f5b3ddc2
2 changed files with 53 additions and 10 deletions

View File

@ -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();
} }
} }

View File

@ -4,6 +4,7 @@
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");
}
_rssSyncTimer.Elapsed +=new ElapsedEventHandler(RunSync);
_rssSyncTimer.Start();
_rssSyncNextInterval = DateTime.Now.AddMilliseconds(_rssSyncTimer.Interval);
} }
public void StopTimer() 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();
}
} }
} }