X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=framework%2Fmain%2Fclasses%2Fhandler%2Ftasks%2Fclass_TaskHandler.php;h=3bbe3938e686b4803e8e5a975beb39e5e62ca8b4;hb=ef7a7e55c59c9e887e6bb09c8c02b8126309f716;hp=dfdff9a295f6dba459b040ba8841ce83d12ab842;hpb=8c96c0cfa128e4d536788feec87d60719db198fa;p=core.git diff --git a/framework/main/classes/handler/tasks/class_TaskHandler.php b/framework/main/classes/handler/tasks/class_TaskHandler.php index dfdff9a2..3bbe3938 100644 --- a/framework/main/classes/handler/tasks/class_TaskHandler.php +++ b/framework/main/classes/handler/tasks/class_TaskHandler.php @@ -6,11 +6,12 @@ namespace Org\Mxchange\CoreFramework\Handler\Task; use Org\Mxchange\CoreFramework\Bootstrap\FrameworkBootstrap; use Org\Mxchange\CoreFramework\Factory\ObjectFactory; use Org\Mxchange\CoreFramework\Handler\BaseHandler; -use Org\Mxchange\CoreFramework\Lists\Listable; use Org\Mxchange\CoreFramework\Registry\Registerable; use Org\Mxchange\CoreFramework\Task\Taskable; +use Org\Mxchange\CoreFramework\Traits\Iterator\IteratorTrait; +use Org\Mxchange\CoreFramework\Traits\Lists\ListableTrait; +use Org\Mxchange\CoreFramework\Traits\Visitor\VisitorTrait; use Org\Mxchange\CoreFramework\Visitor\Visitable; -use Org\Mxchange\CoreFramework\Visitor\Visitor; /** * A Task handler @@ -35,19 +36,14 @@ use Org\Mxchange\CoreFramework\Visitor\Visitor; * along with this program. If not, see . */ class TaskHandler extends BaseHandler implements Registerable, HandleableTask { + // Load traits + use IteratorTrait; + use ListableTrait; + use VisitorTrait; + // Exception constants const EXCEPTION_TASK_IS_INVALID = 0xb00; - /** - * Visitor handler instance - */ - private $visitorInstance = NULL; - - /** - * Instance of the list - */ - private $listInstance = NULL; - /** * Protected constructor * @@ -93,44 +89,6 @@ class TaskHandler extends BaseHandler implements Registerable, HandleableTask { return $handlerInstance; } - /** - * Setter for visitor instance - * - * @param $visitorInstance An instance of a Visitor class - * @return void - */ - protected final function setVisitorInstance (Visitor $visitorInstance) { - $this->visitorInstance = $visitorInstance; - } - - /** - * Getter for visitor instance - * - * @return $visitorInstance An instance of a Visitor class - */ - protected final function getVisitorInstance () { - return $this->visitorInstance; - } - - /** - * Setter for the list instance - * - * @param $listInstance A list of Listable - * @return void - */ - protected final function setListInstance (Listable $listInstance) { - $this->listInstance = $listInstance; - } - - /** - * Getter for the list instance - * - * @return $listInstance A list of Listable - */ - protected final function getListInstance () { - return $this->listInstance; - } - /** * Tries to execute the given task. If as task should not be started (yet) * or the interval time (see task_interval_delay) is not yet reached the @@ -147,7 +105,7 @@ class TaskHandler extends BaseHandler implements Registerable, HandleableTask { if (!$this->getListInstance()->getIterator()->valid()) { // Not valid! throw new InvalidTaskException($this, self::EXCEPTION_TASK_IS_INVALID); - } // END - if + } // Get current task $currentTask = $this->getListInstance()->getIterator()->current(); @@ -162,7 +120,7 @@ class TaskHandler extends BaseHandler implements Registerable, HandleableTask { // Skip this silently //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('TASK-HANDLER: Task ' . $currentTask['id'] . ' not started: diff=' . $diff . ',task_startup_delay=' . $currentTask['task_startup_delay']); return; - } // END - if + } // Launch the task and mark it as updated $currentTask['task_started'] = true; @@ -170,7 +128,7 @@ class TaskHandler extends BaseHandler implements Registerable, HandleableTask { // Debug message self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('TASK-HANDLER: Task ' . $currentTask['id'] . ' started with startup_delay=' . $currentTask['task_startup_delay'] . 'ms'); - } // END - if + } // Get time difference from interval delay $diff = ($this->getMilliTime() - $currentTask['task_last_activity']) * 1000; @@ -184,11 +142,11 @@ class TaskHandler extends BaseHandler implements Registerable, HandleableTask { if ($updateTask === true) { // Update the task before leaving $this->updateTask($currentTask); - } // END - if + } // Skip this silently return; - } // END - if + } // Set last activity $currentTask['task_last_activity'] = $this->getMilliTime(); @@ -260,8 +218,8 @@ class TaskHandler extends BaseHandler implements Registerable, HandleableTask { // Abort here break; - } // END - if - } // END - foreach + } + } // Return found name return $taskName; @@ -271,10 +229,10 @@ class TaskHandler extends BaseHandler implements Registerable, HandleableTask { * Registers a task with a task handler. * * @param $taskName A task name to register the task on - * @param $taskInstance The instance that should be registered as a task + * @param $taskInstance An instance of a Taskable class * @return void */ - public function registerTask ($taskName, Visitable $taskInstance) { + public function registerTask (string $taskName, Taskable $taskInstance) { // Get interval delay $intervalDelay = FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('task_' . $taskName . '_interval_delay'); $startupDelay = FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('task_' . $taskName . '_startup_delay'); @@ -285,7 +243,7 @@ class TaskHandler extends BaseHandler implements Registerable, HandleableTask { assert(($taskName === 'idle_loop') || (($taskName != 'idle_loop') && ($startupDelay > 0))); // Create the entry - $taskEntry = array( + $taskEntry = [ // Identifier for the generateHash() method 'id' => $taskName, // Whether the task is started @@ -308,7 +266,7 @@ class TaskHandler extends BaseHandler implements Registerable, HandleableTask { 'task_interval_delay' => $intervalDelay, // How often should this task run? 'task_max_runs' => FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('task_' . $taskName . '_max_runs'), - ); + ]; // Add the entry $this->getListInstance()->addEntry('tasks', $taskEntry); @@ -348,7 +306,7 @@ class TaskHandler extends BaseHandler implements Registerable, HandleableTask { if (!$this->getListInstance()->getIterator()->valid()) { // Rewind to the beginning for next loop $this->getListInstance()->getIterator()->rewind(); - } // END - if + } // Try to execute the task $this->executeCurrentTask(); @@ -371,7 +329,7 @@ class TaskHandler extends BaseHandler implements Registerable, HandleableTask { self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('TASK-HANDLER: Shutting down all ' . $this->getListInstance()->count() . ' tasks...'); // Remember all tasks that has been shutdown for removal - $tasks = array(); + $tasks = []; // Instance a visitor $this->setVisitorInstance(ObjectFactory::createObjectByConfiguredName('shutdown_task_visitor_class')); @@ -392,7 +350,7 @@ class TaskHandler extends BaseHandler implements Registerable, HandleableTask { // Advance to next one $this->getListInstance()->getIterator()->next(); - } // END - while + } // Debug message self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('TASK-HANDLER: Shutdown of all tasks completed.'); @@ -400,7 +358,7 @@ class TaskHandler extends BaseHandler implements Registerable, HandleableTask { // Remove all tasks foreach ($tasks as $entry) { $this->unregisterTask($entry); - } // END - foreach + } } }