]> git.mxchange.org Git - core.git/blob - framework/main/interfaces/handler/task/class_HandleableTask.php
0bdc518bf3ced72f6af3855f83c00ff58919e198
[core.git] / framework / main / interfaces / handler / task / class_HandleableTask.php
1 <?php
2 // Own namespace
3 namespace CoreFramework\Handler\Task;
4
5 /**
6  * A HandleableTask interface
7  *
8  * @author              Roland Haeder <webmaster@shipsimu.org>
9  * @version             0.0.0
10  * @copyright   Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2017 Core Developer Team
11  * @license             GNU GPL 3.0 or any newer version
12  * @link                http://www.shipsimu.org
13  * @todo                HandleableDataSet looks strange here
14  *
15  * This program is free software: you can redistribute it and/or modify
16  * it under the terms of the GNU General Public License as published by
17  * the Free Software Foundation, either version 3 of the License, or
18  * (at your option) any later version.
19  *
20  * This program is distributed in the hope that it will be useful,
21  * but WITHOUT ANY WARRANTY; without even the implied warranty of
22  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23  * GNU General Public License for more details.
24  *
25  * You should have received a copy of the GNU General Public License
26  * along with this program. If not, see <http://www.gnu.org/licenses/>.
27  */
28 interface HandleableTask extends HandleableDataSet {
29         /**
30          * Searches a task by given instance
31          *
32          * @param       $taskInstanc    An instanceof a Taskable class
33          * @return      $taskName               Name of the task as used while registration
34          */
35         function searchTask (Taskable $taskInstance);
36
37         /**
38          * Registers a task with a task handler.
39          *
40          * @param       $taskName               A task name to register the task on
41          * @param       $taskInstance   The instance we should register as a task
42          * @return      void
43          */
44         function registerTask ($taskName, Visitable $taskInstance);
45
46         /**
47          * Checks whether tasks are left including idle task
48          *
49          * @return      $tasksLeft      Whether there are tasks left to handle
50          */
51         function hasTasksLeft ();
52
53         /**
54          * Handles all tasks by checking if they should startup or if it is their
55          * turn to run. You should use this method in a while() loop in conjuntion
56          * with hasTasksLeft() so you can e.g. shutdown by adding a ShutdownTask
57          * which will attempt to remove all tasks from the task handler.
58          *
59          * @return      void
60          */
61         function handleTasks ();
62
63         /**
64          * Shuts down all tasks and the task handler itself. This method should be
65          * called from a corresponding filter class.
66          * 
67          * @return      void
68          */
69         function doShutdown ();
70
71 }