Skip to content
Snippets Groups Projects
CloseConnectionToFinishedJobs.cs 1.35 KiB
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);
                    }
                }
			}
		}

	}
}