mirror of
https://github.com/lidarr/Lidarr
synced 2024-12-22 07:42:28 +00:00
RSS Sync Timer Implemented using System.Timers.Timer
This commit is contained in:
parent
1086404152
commit
57f5b3ddc2
2 changed files with 53 additions and 10 deletions
|
@ -7,8 +7,11 @@ namespace NzbDrone.Core.Providers
|
|||
{
|
||||
public interface ITimerProvider
|
||||
{
|
||||
void ResetTimer();
|
||||
void StartTimer();
|
||||
void StopTimer();
|
||||
void ResetRssSyncTimer();
|
||||
void StartRssSyncTimer();
|
||||
void StopRssSyncTimer();
|
||||
void SetRssSyncTimer(int minutes);
|
||||
TimeSpan RssSyncTimeLeft();
|
||||
DateTime NextRssSyncTime();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Timers;
|
||||
using NLog;
|
||||
using NzbDrone.Core.Model.Notification;
|
||||
using Timer = System.Threading.Timer;
|
||||
|
||||
|
@ -12,26 +13,65 @@ namespace NzbDrone.Core.Providers
|
|||
public class TimerProvider : ITimerProvider
|
||||
{
|
||||
private ProgressNotification _seriesSyncNotification;
|
||||
private Thread _seriesSyncThread;
|
||||
private IRssSyncProvider _rssSyncProvider;
|
||||
private Thread _rssSyncThread;
|
||||
private System.Timers.Timer _rssSyncTimer;
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
|
||||
private DateTime _rssSyncNextInterval;
|
||||
|
||||
public TimerProvider(IRssSyncProvider rssSyncProvider)
|
||||
{
|
||||
_rssSyncProvider = rssSyncProvider;
|
||||
}
|
||||
|
||||
#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
|
||||
|
||||
private void RunSync(object obj, ElapsedEventArgs args)
|
||||
{
|
||||
DateTime.Now.AddMilliseconds(_rssSyncTimer.Interval);
|
||||
_rssSyncProvider.Begin();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue