66 lines
2.2 KiB
C#
66 lines
2.2 KiB
C#
using System;
|
|
using ln.application;
|
|
using System.Threading;
|
|
using ln.logging;
|
|
using ln.application.service;
|
|
namespace ln.skyscanner.services
|
|
{
|
|
public class CheckService : ApplicationServiceBase
|
|
{
|
|
public CheckService()
|
|
:base("Check Service")
|
|
{
|
|
DependOnService<EntityService>();
|
|
}
|
|
|
|
public override void ServiceMain(IApplicationInterface applicationInterface)
|
|
{
|
|
long nextMinute = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
|
|
|
while (!StopRequested)
|
|
{
|
|
/*
|
|
List<CheckJob> checkJobs = new List<CheckJob>();
|
|
|
|
Logging.Log(LogLevel.INFO, "SkyChecker.scheduler(): scheduler save CheckStates");
|
|
|
|
lock (saveQueue)
|
|
{
|
|
foreach (SkyCheckState checkState in saveQueue)
|
|
{
|
|
SkyScanner.Instance.Entities.SkyCheckStates.Upsert(checkState);
|
|
}
|
|
saveQueue.Clear();
|
|
}
|
|
|
|
Logging.Log(LogLevel.INFO, "SkyChecker.scheduler(): scheduler starts");
|
|
|
|
foreach (Node node in SkyScanner.Instance.Entities.NodeCollection)
|
|
{
|
|
CheckJob checkJob = new CheckJob(node);
|
|
checkJobs.Add(checkJob);
|
|
}
|
|
Logging.Log(LogLevel.INFO, "SkyChecker.scheduler(): prepared {0} checks", checkJobs.Count);
|
|
Logging.Log(LogLevel.INFO, "SkyChecker.scheduler(): scheduled {0} checks", checkPool.Enqueue(checkJobs));
|
|
*/
|
|
|
|
while (true)
|
|
{
|
|
while ((nextMinute - DateTimeOffset.Now.ToUnixTimeMilliseconds()) < 0)
|
|
nextMinute += 60000;
|
|
|
|
try
|
|
{
|
|
Thread.Sleep((int)(nextMinute - DateTimeOffset.Now.ToUnixTimeMilliseconds()));
|
|
} catch (ThreadInterruptedException)
|
|
{
|
|
Logging.Log(LogLevel.INFO, "CheckService: scheduler was interrupted");
|
|
if (StopRequested)
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|