Skip to content
Snippets Groups Projects
CloseConnectionToFinishedJobs.cs 1.35 KiB
Newer Older
  • Learn to ignore specific revisions
  • Vaclav Svaton's avatar
    Vaclav Svaton committed
    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);
                        }
                    }
    			}
    		}
    
    	}
    }