#!/usr/bin/env python
#
# This file is part of vospace-transfer-service
# Copyright (C) 2021 Istituto Nazionale di Astrofisica
# SPDX-License-Identifier: GPL-3.0-or-later
#

import time

from multiprocessing import Process

from config import Config
from job_queue import JobQueue


class TaskExecutor(Process):

    def __init__(self):
        config = Config("/etc/vos_ts/vos_ts.conf")
        params = config.loadSection("scheduling")
        self.maxPendingJobs = params.getint("max_pending_jobs")
        self.maxReadyJobs = params.getint("max_ready_jobs")
        self.maxTerminatedJobs = params.getint("max_terminated_jobs")
        self.maxCleanJobs = params.getint("max_clean_jobs")
        self.execWaitTime = params.getint("exec_wait_time")
        if self.execWaitTime < 10:
            self.execWaitTime = 10
        self.srcQueue = None
        self.destQueue = None
        super(TaskExecutor, self).__init__()

    def wait(self, timeout = None):
        if timeout is None:
            time.sleep(self.execWaitTime)
        else:
            time.sleep(timeout)

    def setSourceQueueName(self, srcQueueName):
        self.srcQueue = JobQueue(srcQueueName)

    def setDestinationQueueName(self, destQueueName):
        self.destQueue = JobQueue(destQueueName)

    def run(self):
        """
        This method must be implemented by
        inherited classes
        """
        pass