2013-07-19 03:47:55 +00:00
|
|
|
|
using System;
|
2011-10-07 06:36:04 +00:00
|
|
|
|
using System.Diagnostics;
|
2012-02-11 01:43:07 +00:00
|
|
|
|
using System.Threading;
|
2011-10-07 06:36:04 +00:00
|
|
|
|
using NLog;
|
2011-10-23 05:26:43 +00:00
|
|
|
|
using NzbDrone.Common;
|
2013-09-20 23:56:17 +00:00
|
|
|
|
using NzbDrone.Common.Processes;
|
2011-10-07 06:36:04 +00:00
|
|
|
|
|
2013-08-07 05:32:22 +00:00
|
|
|
|
namespace NzbDrone.Host
|
2011-10-07 06:36:04 +00:00
|
|
|
|
{
|
2013-03-01 00:50:50 +00:00
|
|
|
|
public class PriorityMonitor
|
2011-10-07 06:36:04 +00:00
|
|
|
|
{
|
2013-05-10 23:53:50 +00:00
|
|
|
|
private readonly IProcessProvider _processProvider;
|
2013-03-01 00:50:50 +00:00
|
|
|
|
private readonly Logger _logger;
|
2011-10-07 06:36:04 +00:00
|
|
|
|
|
2012-02-11 01:43:07 +00:00
|
|
|
|
private Timer _processPriorityCheckTimer;
|
2011-10-07 06:36:04 +00:00
|
|
|
|
|
2013-05-10 23:53:50 +00:00
|
|
|
|
public PriorityMonitor(IProcessProvider processProvider, Logger logger)
|
2011-10-07 06:36:04 +00:00
|
|
|
|
{
|
|
|
|
|
_processProvider = processProvider;
|
2013-03-01 00:50:50 +00:00
|
|
|
|
_logger = logger;
|
2011-10-07 06:36:04 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Start()
|
|
|
|
|
{
|
2012-02-11 01:43:07 +00:00
|
|
|
|
_processPriorityCheckTimer = new Timer(EnsurePriority);
|
|
|
|
|
_processPriorityCheckTimer.Change(TimeSpan.FromSeconds(15), TimeSpan.FromMinutes(30));
|
2011-10-07 06:36:04 +00:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2012-02-11 01:43:07 +00:00
|
|
|
|
public virtual void EnsurePriority(object sender)
|
2011-10-07 06:36:04 +00:00
|
|
|
|
{
|
2012-03-02 19:58:31 +00:00
|
|
|
|
try
|
2011-10-07 06:36:04 +00:00
|
|
|
|
{
|
2013-07-30 20:19:09 +00:00
|
|
|
|
if (_processProvider.GetCurrentProcessPriority() != ProcessPriorityClass.Normal)
|
2012-03-02 19:58:31 +00:00
|
|
|
|
{
|
2013-07-30 20:19:09 +00:00
|
|
|
|
_processProvider.SetPriority(_processProvider.GetCurrentProcess().Id, ProcessPriorityClass.Normal);
|
2012-03-02 19:58:31 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
2011-10-07 06:36:04 +00:00
|
|
|
|
{
|
2013-03-01 00:50:50 +00:00
|
|
|
|
_logger.WarnException("Unable to verify priority", e);
|
2011-10-07 06:36:04 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|