]> git.mxchange.org Git - hub.git/blob - application/hub/main/connectors/queues/local/class_LocalQueueConnector.php
Copyright notice updated, our first hub application introduced (which is incomplete)
[hub.git] / application / hub / main / connectors / queues / local / class_LocalQueueConnector.php
1 <?php
2 /**
3  * A local queue connector class
4  *
5  * @author              Roland Haeder <webmaster@ship-simu.org>
6  * @version             0.0.0
7  * @copyright   Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 Hub Developer Team
8  * @license             GNU GPL 3.0 or any newer version
9  * @link                http://www.ship-simu.org
10  *
11  * This program is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation, either version 3 of the License, or
14  * (at your option) any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
23  */
24 class LocalQueueConnector extends BaseQueueConnector implements Connectable, Queueable, Visitable {
25         /**
26          * Protected constructor
27          *
28          * @param       $className      Name of the class
29          * @return      void
30          */
31         protected function __construct () {
32                 // Call parent constructor
33                 parent::__construct(__CLASS__);
34         }
35
36         /**
37          * Creates an instance of this queue connector class
38          *
39          * @param       $nodeInstance           An instance of a hub node
40          * @return      $connectorInstance      An instance of this queue connector class
41          */
42         public static final function createLocalQueueConnector (NodeHelper $nodeInstance) {
43                 // Create the instance
44                 $connectorInstance = new LocalQueueConnector();
45
46                 // Set the node instance
47                 $connectorInstance->setNodeInstance($nodeInstance);
48
49                 // Finally return it
50                 return $connectorInstance;
51         }
52
53         /**
54          * Handles the in the list avaiable queues (current) and hands it over to the
55          * queues processor instance
56          *
57          * @return      void
58          * @TODO        0% done: Unfinished work here
59          */
60         private function handleCurrentQueues () {
61                 // Is there a queues available?
62                 if (!$this->getIteratorInstance()->valid()) {
63                         // Simply abort here
64                         return;
65                 } // END - if
66
67                 // Get the current queues
68                 $currentQueues = $this->getIteratorInstance()->current();
69
70                 // Only while construction, else it would output to much!
71                 /* DEBUG: */ $this->debugOutput('CONNECTOR: Handling queue entry ' . $currentQueues);
72         }
73
74         /**
75          * Handles all pending queues. This method should be called by the
76          * ActiveTaskVisitor class and should use an iterator on all pending
77          * queues.
78          *
79          * @return      void
80          */
81         public function handlePanding () {
82                 // Should we rewind?
83                 if (!$this->getIteratorInstance()->valid()) {
84                         // Rewind to the beginning for next loop
85                         $this->getIteratorInstance()->rewind();
86                 } // END - if
87
88                 // Try to execute the task
89                 $this->handleCurrentQueue();
90
91                 // Go to next entry
92                 $this->getIteratorInstance()->next();
93         }
94
95         /**
96          * Accepts the visitor to process the visit "request"
97          *
98          * @param       $visitorInstance        An instance of a Visitor class
99          * @return      void
100          */
101         public function accept (Visitor $visitorInstance) {
102                 // Visit the query connector
103                 $visitorInstance->visitQueue($this);
104         }
105 }
106
107 // [EOF]
108 ?>