Newer
Older
using System;
using System.Collections.Generic;
using HaaSMiddleware.BusinessLogicTier.Factory;
using HaaSMiddleware.DataAccessTier.UnitOfWork;
using HaaSMiddleware.DomainObjects.JobManagement.JobInformation;
using HaaSMiddleware.ServiceTier.JobManagement;
using HaaSMiddleware.ServiceTier.DataTransfer;
using HaaSMiddleware.BusinessLogicTier.Logic.DataTransfer;
namespace HaaSMiddleware.BackgroundThread.Tasks {
/// <summary>
/// Close all open sockets to finished/failed/canceled jobs
/// </summary>
internal class CloseConnectionToFinishedJobs : AbstractTask, IBackgroundTask {
public CloseConnectionToFinishedJobs(TimeSpan interval) : base(interval) { }
protected override void RunTask() {
using (IUnitOfWork unitOfWork = new DatabaseUnitOfWork()) {
List<long> jobIds = LogicFactory.GetLogicFactory().CreateDataTransferLogic(unitOfWork).GetJobIdsForOpenSockets();
foreach (long jobId in jobIds)
{
//check the job's status
SubmittedJobInfo jobInfo = unitOfWork.SubmittedJobInfoRepository.GetById(jobId);
if (jobInfo.State >= JobState.Finished)
{
LogicFactory.GetLogicFactory().CreateDataTransferLogic(unitOfWork).CloseAllConnectionsForJob(jobInfo);
}
}
}
}
}
}