]> git.mxchange.org Git - hub.git/commitdiff
Added missing XML, config entries for DHT bootstrap
authorRoland Häder <roland@mxchange.org>
Sun, 17 Feb 2013 22:40:05 +0000 (22:40 +0000)
committerRoland Häder <roland@mxchange.org>
Sun, 17 Feb 2013 22:40:05 +0000 (22:40 +0000)
17 files changed:
.gitattributes
application/hub/config.php
application/hub/interfaces/package/class_Deliverable.php
application/hub/main/connectors/class_BaseConnector.php
application/hub/main/connectors/query/class_
application/hub/main/connectors/query/class_BaseQueryConnector.php
application/hub/main/connectors/query/local/class_LocalQueryConnector.php
application/hub/main/connectors/queues/class_
application/hub/main/connectors/queues/class_BaseQueueConnector.php
application/hub/main/connectors/queues/local/class_LocalQueueConnector.php
application/hub/main/discovery/package/class_PackageRecipientDiscovery.php
application/hub/main/helper/class_BaseHubSystemHelper.php
application/hub/main/package/class_NetworkPackage.php
application/hub/main/template/bootstrap/class_XmlBootstrapTemplateEngine.php
application/hub/main/template/bootstrap/class_XmlDhtBootstrapTemplateEngine.php [new file with mode: 0644]
application/hub/templates/xml/dht_bootstrap/.htaccess [new file with mode: 0644]
application/hub/templates/xml/dht_bootstrap/bootstrap.xml [new file with mode: 0644]

index 535e7c302b3c7f4360fb3f293e01ba1b7f0a4daa..c3652a7fdb15edd665c7c00738e5fa8de7affb7d 100644 (file)
@@ -690,6 +690,7 @@ application/hub/main/template/answer/announcement/.htaccess -text svneol=unset#t
 application/hub/main/template/answer/requests/.htaccess -text svneol=unset#text/plain
 application/hub/main/template/bootstrap/.htaccess -text svneol=unset#text/plain
 application/hub/main/template/bootstrap/class_XmlBootstrapTemplateEngine.php svneol=native#text/plain
+application/hub/main/template/bootstrap/class_XmlDhtBootstrapTemplateEngine.php svneol=native#text/plain
 application/hub/main/template/connect/.htaccess -text svneol=unset#text/plain
 application/hub/main/template/connect/class_XmlSelfConnectTemplateEngine.php svneol=native#text/plain
 application/hub/main/template/entries/.htaccess -text svneol=unset#text/plain
@@ -734,6 +735,8 @@ application/hub/templates/xml/cruncher/.htaccess svneol=native#text/plain
 application/hub/templates/xml/cruncher/producer/.htaccess svneol=native#text/plain
 application/hub/templates/xml/cruncher/producer/test_unit.xml svneol=native#text/plain
 application/hub/templates/xml/cruncher/producer/work_unit.xml svneol=native#text/plain
+application/hub/templates/xml/dht_bootstrap/.htaccess -text svneol=unset#text/plain
+application/hub/templates/xml/dht_bootstrap/bootstrap.xml svneol=native#text/plain
 application/hub/templates/xml/entries/.htaccess -text svneol=unset#text/plain
 application/hub/templates/xml/node/.htaccess -text svneol=unset#text/plain
 application/hub/templates/xml/node/node_status.xml svneol=native#text/plain
index 4c8e70e35ad82108963bd7c0a1646f5d9d8946b0..6f88c44399693f2bf34375aa214f0ac4bfabeb0d 100644 (file)
@@ -57,12 +57,6 @@ $cfg->setConfigEntry('peer_state_lookup_db_wrapper_class', 'PeerStateLookupDatab
 // CFG: WEB-CONTENT-TYPE
 $cfg->setConfigEntry('web_content_type', '');
 
-// CFG: QUERY-CONNECTOR-CLASS
-$cfg->setConfigEntry('query_connector_class', 'LocalQueryConnector');
-
-// CFG: QUEUE-CONNECTOR-CLASS
-$cfg->setConfigEntry('queue_connector_class', 'LocalQueueConnector');
-
 // CFG: LISTENER-POOL-CLAS
 $cfg->setConfigEntry('listener_pool_class', 'DefaultListenerPool');
 
@@ -253,11 +247,14 @@ $cfg->setConfigEntry('node_request_node_list_answer_template_class', 'XmlRequest
 $cfg->setConfigEntry('node_request_node_list_entries_template_class', 'XmlRequestNodeListEntryTemplateEngine');
 
 // CFG: DHT-BOOTSTRAP-TEMPLATE-CLASS
-$cfg->setConfigEntry('dht_bootstrap_template_class', 'XmlBootstrapTemplateEngine');
+$cfg->setConfigEntry('dht_bootstrap_template_class', 'XmlDhtBootstrapTemplateEngine');
 
 // CFG: NODE-MESSAGE-TEMPLATE-EXTENSION
 $cfg->setConfigEntry('node_message_template_extension', '.xml');
 
+// CFG: DHT-MESSAGE-TEMPLATE-EXTENSION
+$cfg->setConfigEntry('dht_message_template_extension', '.xml');
+
 // CFG: NODE-ANNOUNCEMENT-ANSWER-TEMPLATE-EXTENSION
 $cfg->setConfigEntry('node_announcement_answer_template_extension', '.xml');
 
@@ -312,6 +309,9 @@ $cfg->setConfigEntry('node_object_registry_stacker_class', 'FiLoStacker');
 // CFG: NODE-OBJECT-TYPE-REGISTRY-CLASS
 $cfg->setConfigEntry('node_object_type_registry_class', 'ObjectTypeRegistry');
 
+// CFG: DHT-BOOTSTRAP-TEMPLATE-TYPE
+$cfg->setConfigEntry('dht_bootstrap_template_type', 'xml/dht_bootstrap');
+
 // CFG: CODE-TEMPLATE-TYPE
 $cfg->setConfigEntry('code_template_type', 'xml');
 
@@ -327,6 +327,9 @@ $cfg->setConfigEntry('node_raw_data_stacker_class', 'FiFoStacker');
 // CFG: CHUNK-HANDLER-STACKER-CLASS
 $cfg->setConfigEntry('chunk_handler_stacker_class', 'FiFoStacker');
 
+// CFG: DHT-BOOTSTRAP-STACKER-CLASS
+$cfg->setConfigEntry('dht_bootstrap_stacker_class', 'FiFoStacker');
+
 // CFG: PRODUCER-OUTGOING-QUEUE
 $cfg->setConfigEntry('producer_outgoing_queue', 'FiFoStacker');
 
@@ -408,6 +411,9 @@ $cfg->setConfigEntry('stacker_chunk_raw_data_max_size', 100);
 // CFG: STACKER-DECODED-PACKAGE-MAX-SIZE
 $cfg->setConfigEntry('stacker_decoded_package_max_size', 100);
 
+// CFG: STACKER-DHT-BOOTSTRAP-MAX-SIZE
+$cfg->setConfigEntry('stacker_dht_bootstrap_max_size', 10);
+
 // CFG: NEWS-MAIN-LIMIT
 $cfg->setConfigEntry('news_main_limit', 5);
 
index bf854dc06b497aa3b3c4f1002ae38dbd22ee96e6..17f148c4ba3d161e8f0676fdc2a657504e6c0315 100644 (file)
@@ -27,11 +27,11 @@ interface Deliverable extends FrameworkInterface {
         * from given helper's template instance and pushing it on the 'undeclared'
         * stack.
         *
-        * @param       $helperInstance         An instance of a HelpableNode class
+        * @param       $helperInstance         An instance of a Helper class
         * @param       $protocol                       Name of used protocol (TCP/UDP)
         * @return      void
         */
-       function enqueueRawDataFromTemplate (HelpableNode $helperInstance, $protocol);
+       function enqueueRawDataFromTemplate (Helper $helperInstance, $protocol);
 
        /**
         * Checks whether a package has been enqueued for delivery.
index f294621632abb1fdf608376b7058560f2c9c97e1..f551ef47b7591c74e7b59193e56a1fa6505a87ab 100644 (file)
@@ -1,38 +1,3 @@
 <?php
-/**
- * A general connector class
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Hub Developer Team
- * @license            GNU GPL 3.0 or any newer version
- * @link               http://www.ship-simu.org
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-class BaseConnector extends BaseHubSystem {
-       /**
-        * Protected constructor
-        *
-        * @param       $className      Name of the class
-        * @return      void
-        */
-       protected function __construct ($className) {
-               // Call parent constructor
-               parent::__construct($className);
-       }
-}
-
-// [EOF]
+// @DEPRECATED
 ?>
index 720a18d6240d40304ecb4b412a6acbcda75fdaf9..f551ef47b7591c74e7b59193e56a1fa6505a87ab 100644 (file)
@@ -1,94 +1,3 @@
 <?php
-/**
- * A ??? query connector class
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Hub Developer Team
- * @license            GNU GPL 3.0 or any newer version
- * @link               http://www.ship-simu.org
- * @todo               Find an interface for: handleAllQueries()
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-class ???QueryConnector extends BaseQueryConnector implements Connectable, Visitable {
-       /**
-        * Protected constructor
-        *
-        * @return      void
-        */
-       protected function __construct () {
-               // Call parent constructor
-               parent::__construct(__CLASS__);
-       }
-
-       /**
-        * Creates an instance of this query connector class
-        *
-        * @param       $nodeInstance           An instance of a node
-        * @return      $connectorInstance      An instance of this query connector class
-        */
-       public final static function create???QueryConnector (NodeHelper $nodeInstance) {
-               // Create the instance
-               $connectorInstance = new ???QueryConnector();
-
-               // Set the node instance
-               $connectorInstance->setNodeInstance($nodeInstance);
-
-               // Get a list instance
-               $listInstance = ObjectFactory::createObjectByConfiguredName('!!!_query_list_class');
-
-               // Set it in the connector
-               $connectorInstance->setListInstance($listInstance);
-
-               // Finally return the connector
-               return $connectorInstance;
-       }
-
-       /**
-        * Accepts the visitor to process the visit "request"
-        *
-        * @param       $visitorInstance        An instance of a Visitor class
-        * @return      void
-        */
-       public function accept (Visitor $visitorInstance) {
-               // Visit the query connector
-               $visitorInstance->visitQuery($this);
-       }
-
-       /**
-        * Handles all unsent queries and should be called from a visitor
-        *
-        * @return      void
-        * @todo        0% done
-        */
-       public function handleAllQueries () {
-               $this->partialStub('Please implement this method.');
-       }
-
-       /**
-        * Processes all pending queries. This method should be called by the
-        * ActiveTaskVisitor class and should use an iterator on all pending
-        * queries.
-        *
-        * @return      void
-        * @todo        0% done
-        */
-       public function processAllPendingQueries () {
-               $this->partialStub('Please implement this method.');
-       }
-}
-
-// [EOF]
+// @DEPRECATED
 ?>
index 23f74daa2195c364ac47f3b6234df0a9bf33c1b5..f551ef47b7591c74e7b59193e56a1fa6505a87ab 100644 (file)
@@ -1,38 +1,3 @@
 <?php
-/**
- * A general query connector class
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Hub Developer Team
- * @license            GNU GPL 3.0 or any newer version
- * @link               http://www.ship-simu.org
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-class BaseQueryConnector extends BaseConnector {
-       /**
-        * Protected constructor
-        *
-        * @param       $className      Name of the class
-        * @return      void
-        */
-       protected function __construct ($className) {
-               // Call parent constructor
-               parent::__construct($className);
-       }
-}
-
-// [EOF]
+// @DEPRECATED
 ?>
index 42121451e7a8bed5cbea7d34e637e0d6e7e63f09..f551ef47b7591c74e7b59193e56a1fa6505a87ab 100644 (file)
@@ -1,140 +1,3 @@
 <?php
-/**
- * A local query connector class
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Hub Developer Team
- * @license            GNU GPL 3.0 or any newer version
- * @link               http://www.ship-simu.org
- * @todo               Find an interface for: handleAllQueries()
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-class LocalQueryConnector extends BaseQueryConnector implements Connectable, Visitable {
-       /**
-        * The query class instance
-        */
-       private $queryInstance = NULL;
-
-       /**
-        * Protected constructor
-        *
-        * @return      void
-        */
-       protected function __construct () {
-               // Call parent constructor
-               parent::__construct(__CLASS__);
-
-               // Init query instance
-               $this->queryInstance = ObjectFactory::createObjectByConfiguredName('local_query_class');
-       }
-
-       /**
-        * Creates an instance of this query connector class
-        *
-        * @param       $nodeInstance           An instance of a node
-        * @return      $connectorInstance      An instance of this query connector class
-        */
-       public static final function createLocalQueryConnector (NodeHelper $nodeInstance) {
-               // Create the instance
-               $connectorInstance = new LocalQueryConnector();
-
-               // Set the node instance
-               $connectorInstance->setNodeInstance($nodeInstance);
-
-               // Get a list instance
-               $listInstance = ObjectFactory::createObjectByConfiguredName('local_query_list_class');
-
-               // Set it in the connector
-               $connectorInstance->setListInstance($listInstance);
-
-               // Prepare iterator instance
-               $iteratorInstance = $listInstance->getListIterator();
-
-               // Set it, too
-               $connectorInstance->setIteratorInstance($iteratorInstance);
-
-               // Finally return the connector
-               return $connectorInstance;
-       }
-
-       /**
-        * Handles the in the list avaiable query (current) and hands it over to the
-        * query processor instance
-        *
-        * @return      void
-        * @TODO        0% done: Unfinished work here
-        */
-       private function handleCurrentQuery () {
-               // Is there a query available?
-               if (!$this->getIteratorInstance()->valid()) {
-                       // Simply abort here
-                       return;
-               } // END - if
-
-               // Get the current query
-               $currentQuery = $this->getIteratorInstance()->current();
-
-               // Only while construction, else it would output to much!
-               /* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('CONNECTOR: Handling query ' . $currentQuery);
-       }
-
-       /**
-        * Accepts the visitor to process the visit "request"
-        *
-        * @param       $visitorInstance        An instance of a Visitor class
-        * @return      void
-        */
-       public function accept (Visitor $visitorInstance) {
-               // Visit the query connector
-               $visitorInstance->visitQueryConnector($this);
-
-               // Visit the query as well
-               $this->queryInstance->accept($visitorInstance);
-       }
-
-       /**
-        * Handles all pending queries. This method should be called by the
-        * ActiveTaskVisitor class and should use an iterator on all pending
-        * queries.
-        *
-        * @return      void
-        */
-       public function handlePending () {
-               // Should we rewind?
-               if (!$this->getIteratorInstance()->valid()) {
-                       // Rewind to the beginning for next loop
-                       $this->getIteratorInstance()->rewind();
-
-                       // Still not valid?
-                       if ($this->getIteratorInstance()->valid()) {
-                               /*
-                                * Then silently abort here because the queue is empty and to
-                                * save some calls.
-                                */
-                               return;
-                       } // END - if
-               } // END - if
-
-               // Try to execute the task
-               $this->handleCurrentQuery();
-
-               // Go to next entry
-               $this->getIteratorInstance()->next();
-       }
-}
-
-// [EOF]
+// @DEPRECATED
 ?>
index faf079b1a42ba60794f36b63a63d3917e89e72e0..f551ef47b7591c74e7b59193e56a1fa6505a87ab 100644 (file)
@@ -1,61 +1,3 @@
 <?php
-/**
- * A ??? queue connector class
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Hub Developer Team
- * @license            GNU GPL 3.0 or any newer version
- * @link               http://www.ship-simu.org
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-class ???QueueConnector extends BaseQueueConnector implements Connectable, Queueable, Visitable {
-       /**
-        * Protected constructor
-        *
-        * @return      void
-        */
-       protected function __construct () {
-               // Call parent constructor
-               parent::__construct(__CLASS__);
-       }
-
-       /**
-        * Creates an instance of this queue connector class
-        *
-        * @return      $connectorInstance      An instance of this queue connector class
-        */
-       public final static function create???QueueConnector () {
-               // Create the instance
-               $connectorInstance = new ???QueueConnector();
-
-               // Finally return it
-               return $connectorInstance;
-       }
-
-       /**
-        * Accepts the visitor to process the visit "request"
-        *
-        * @param       $visitorInstance        An instance of a Visitor class
-        * @return      void
-        */
-       public function accept (Visitor $visitorInstance) {
-               // Visit the query connector
-               $visitorInstance->visitQueue($this);
-       }
-}
-
-// [EOF]
+// @DEPRECATED
 ?>
index 6e70c8618a168dcb8e5de08d6fa1a59f3c51301e..f551ef47b7591c74e7b59193e56a1fa6505a87ab 100644 (file)
@@ -1,38 +1,3 @@
 <?php
-/**
- * A general queue connector class
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Hub Developer Team
- * @license            GNU GPL 3.0 or any newer version
- * @link               http://www.ship-simu.org
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-class BaseQueueConnector extends BaseConnector {
-       /**
-        * Protected constructor
-        *
-        * @param       $className      Name of the class
-        * @return      void
-        */
-       protected function __construct ($className) {
-               // Call parent constructor
-               parent::__construct($className);
-       }
-}
-
-// [EOF]
+// @DEPRECATED
 ?>
index 6398afa346f8aed61bebf861b2ec21b4eafc8f81..f551ef47b7591c74e7b59193e56a1fa6505a87ab 100644 (file)
@@ -1,108 +1,3 @@
 <?php
-/**
- * A local queue connector class
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Hub Developer Team
- * @license            GNU GPL 3.0 or any newer version
- * @link               http://www.ship-simu.org
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-class LocalQueueConnector extends BaseQueueConnector implements Connectable, Queueable, Visitable {
-       /**
-        * Protected constructor
-        *
-        * @param       $className      Name of the class
-        * @return      void
-        */
-       protected function __construct () {
-               // Call parent constructor
-               parent::__construct(__CLASS__);
-       }
-
-       /**
-        * Creates an instance of this queue connector class
-        *
-        * @param       $nodeInstance           An instance of a hub node
-        * @return      $connectorInstance      An instance of this queue connector class
-        */
-       public static final function createLocalQueueConnector (NodeHelper $nodeInstance) {
-               // Create the instance
-               $connectorInstance = new LocalQueueConnector();
-
-               // Set the node instance
-               $connectorInstance->setNodeInstance($nodeInstance);
-
-               // Finally return it
-               return $connectorInstance;
-       }
-
-       /**
-        * Handles the in the list avaiable queues (current) and hands it over to the
-        * queues processor instance
-        *
-        * @return      void
-        * @TODO        0% done: Unfinished work here
-        */
-       private function handleCurrentQueues () {
-               // Is there a queues available?
-               if (!$this->getIteratorInstance()->valid()) {
-                       // Simply abort here
-                       return;
-               } // END - if
-
-               // Get the current queues
-               $currentQueues = $this->getIteratorInstance()->current();
-
-               // Only while construction, else it would output to much!
-               /* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('CONNECTOR: Handling queue entry ' . $currentQueues);
-       }
-
-       /**
-        * Handles all pending queues. This method should be called by the
-        * ActiveTaskVisitor class and should use an iterator on all pending
-        * queues.
-        *
-        * @return      void
-        */
-       public function handlePending () {
-               // Should we rewind?
-               if (!$this->getIteratorInstance()->valid()) {
-                       // Rewind to the beginning for next loop
-                       $this->getIteratorInstance()->rewind();
-               } // END - if
-
-               // Try to execute the task
-               $this->handleCurrentQueue();
-
-               // Go to next entry
-               $this->getIteratorInstance()->next();
-       }
-
-       /**
-        * Accepts the visitor to process the visit "request"
-        *
-        * @param       $visitorInstance        An instance of a Visitor class
-        * @return      void
-        */
-       public function accept (Visitor $visitorInstance) {
-               // Visit the query connector
-               $visitorInstance->visitQueue($this);
-       }
-}
-
-// [EOF]
+// @DEPRECATED
 ?>
index f862936b69b52518664e7286d4d3c2f6b244a4c6..6bd982d83f09c8bb33a4930b8974dc469c2a6eb4 100644 (file)
@@ -57,12 +57,12 @@ class PackageRecipientDiscovery extends BaseHubDiscovery implements Discoverable
         *
         * @param       $packageData    Raw package data array
         * @return      void
+        * @todo        Find a better way than this switch/case/default thing
         */
        public function discoverRecipients (array $packageData) {
                // We do some rudimentary checks but this might be a bit ugly
                switch ($packageData[NetworkPackage::PACKAGE_DATA_RECIPIENT]) {
-                       // All upper hubs, these are currently the bootstrap nodes and later on prepended list-nodes
-                       case NetworkPackage::NETWORK_TARGET_UPPER_NODES:
+                       case NetworkPackage::NETWORK_TARGET_UPPER_NODES: // All upper hubs, these are currently the bootstrap nodes and later on prepended list-nodes
                                // Get all bootstrap nodes
                                foreach (explode(BaseHubSystem::BOOTSTRAP_NODES_SEPARATOR, $this->getConfigInstance()->getConfigEntry('hub_bootstrap_nodes')) as $ipPort) {
                                        // Is maximum reached?
@@ -82,8 +82,7 @@ class PackageRecipientDiscovery extends BaseHubDiscovery implements Discoverable
                                } // END - foreach
                                break;
 
-                       // The target 'self' is always the external IP address!
-                       case NetworkPackage::NETWORK_TARGET_SELF:
+                       case NetworkPackage::NETWORK_TARGET_SELF: // The target 'self' is always the external IP address!
                                // Determine own port
                                $port = $this->getConfigInstance()->getConfigEntry('node_listen_port');
 
@@ -97,8 +96,11 @@ class PackageRecipientDiscovery extends BaseHubDiscovery implements Discoverable
                                } // END - if
                                break;
 
-                       // This may be a direct recipient (node's session id)
-                       default:
+                       case NetworkPackage::NETWORK_TARGET_DHT: // The target 'dht' is a list from local DHT query
+                               $this->partialStub('DHT recipient unimplemented: packageData=' . print_r($packageData, true));
+                               break;
+
+                       default: // This may be a direct recipient (node's session id)
                                /*
                                 * Try to solve it, if an exception comes back, it is not a
                                 * session-id, nor IP:port and not a hostname:port combination.
index 79b80d1a5b3ed4d30f02f3e414ff74f5200aa69a..a2debcbf1f418ea57f3dd3af6d2bf6991fd9c551 100644 (file)
@@ -21,7 +21,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-class BaseHubSystemHelper extends BaseHubSystem {
+class BaseHubSystemHelper extends BaseHubSystem implements Helper {
        /**
         * Recipient type
         */
index 9aca332c010b0f11d1e0548f462bb07694a8c823..7ab871a128826ca5e0ec3a53a4e8942cc7daec0e 100644 (file)
@@ -592,11 +592,11 @@ class NetworkPackage extends BaseHubSystem implements Deliverable, Receivable, R
         * from given helper's template instance and pushing it on the 'undeclared'
         * stack.
         *
-        * @param       $helperInstance         An instance of a HelpableNode class
+        * @param       $helperInstance         An instance of a Helper class
         * @param       $protocol                       Name of used protocol (TCP/UDP)
         * @return      void
         */
-       public function enqueueRawDataFromTemplate (HelpableNode $helperInstance, $protocolName) {
+       public function enqueueRawDataFromTemplate (Helper $helperInstance, $protocolName) {
                // Get the raw content ...
                $content = $helperInstance->getTemplateInstance()->getRawTemplateData();
                //* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('content(' . strlen($content) . ')=' . $content);
index 50bf15e65a2b9d8bf2345b807dcbdfe99b42c252..f551ef47b7591c74e7b59193e56a1fa6505a87ab 100644 (file)
@@ -1,336 +1,3 @@
 <?php
-/**
- * An Bootstrap template engine class for XML templates
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Core Developer Team
- * @license            GNU GPL 3.0 or any newer version
- * @link               http://www.ship-simu.org
- * @todo               This template engine does not make use of setTemplateType()
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-class XmlBootstrapTemplateEngine extends BaseXmlTemplateEngine implements CompileableTemplate, Registerable {
-       /**
-        * Some XML nodes must be available for later data extraction
-        */
-       const BOOTSTRAP_DATA_SESSION_ID  = 'session-id';
-       const BOOTSTRAP_DATA_NODE_STATUS = 'node-status';
-       const BOOTSTRAP_DATA_NODE_MODE   = 'node-mode';
-       const BOOTSTRAP_DATA_EXTERNAL_IP = 'external-ip';
-       const BOOTSTRAP_DATA_INTERNAL_IP = 'internal-ip';
-       const BOOTSTRAP_DATA_LISTEN_PORT = 'listen-port';
-
-       /**
-        * Protected constructor
-        *
-        * @return      void
-        */
-       protected function __construct () {
-               // Call parent constructor
-               parent::__construct(__CLASS__);
-
-               // Init array
-               $this->subNodes = array(
-                       'bootstrap-data',
-                       'listener',
-                       self::BOOTSTRAP_DATA_NODE_STATUS,
-                       self::BOOTSTRAP_DATA_NODE_MODE,
-                       self::BOOTSTRAP_DATA_LISTEN_PORT,
-                       self::BOOTSTRAP_DATA_SESSION_ID,
-                       self::BOOTSTRAP_DATA_EXTERNAL_IP,
-                       self::BOOTSTRAP_DATA_INTERNAL_IP,
-                       'object-type-list',
-               );
-       }
-
-       /**
-        * Creates an instance of the class TemplateEngine and prepares it for usage
-        *
-        * @return      $templateInstance               An instance of TemplateEngine
-        * @throws      BasePathIsEmptyException                If the provided $templateBasePath is empty
-        * @throws      InvalidBasePathStringException  If $templateBasePath is no string
-        * @throws      BasePathIsNoDirectoryException  If $templateBasePath is no
-        *                                                                                      directory or not found
-        * @throws      BasePathReadProtectedException  If $templateBasePath is
-        *                                                                                      read-protected
-        */
-       public static final function createXmlBootstrapTemplateEngine () {
-               // Get a new instance
-               $templateInstance = new XmlBootstrapTemplateEngine();
-
-               // Init template instance
-               $templateInstance->initXmlTemplateEngine('node', 'bootstrap');
-
-               // Return the prepared instance
-               return $templateInstance;
-       }
-
-       /**
-        * Currently not used
-        *
-        * @param       $resource               XML parser resource (currently ignored)
-        * @param       $characters             Characters to handle
-        * @return      void
-        */
-       public function characterHandler ($resource, $characters) {
-               // Trim all spaces away
-               $characters = trim($characters);
-
-               // Is this string empty?
-               if (empty($characters)) {
-                       // Then skip it silently
-                       return false;
-               } // END - if
-
-               /*
-                * Assign the found characters to variable and use the last entry from
-                * stack as the name.
-                */
-               parent::assignVariable($this->getStackerInstance()->getNamed('node_bootstrap'), $characters);
-       }
-
-       /**
-        * Getter for cache file (FQFN)
-        *
-        * @return      $fqfn   Full-qualified file name of the menu cache
-        */
-       public function getMenuCacheFqfn () {
-               $this->partialStub('Please implement this method.');
-       }
-
-       /**
-        * Starts the bootstrap
-        *
-        * @return      void
-        */
-       protected function startBootstrap () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('node_bootstrap', 'node_bootstrap');
-       }
-
-       /**
-        * Starts the bootstrap data
-        *
-        * @return      void
-        */
-       protected function startBootstrapData () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('node_bootstrap', 'bootstrap-data');
-       }
-
-       /**
-        * Starts the node status
-        *
-        * @return      void
-        */
-       protected function startNodeStatus () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('node_bootstrap', self::BOOTSTRAP_DATA_NODE_STATUS);
-       }
-
-       /**
-        * Starts the node-mode
-        *
-        * @return      void
-        */
-       protected function startNodeMode () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('node_bootstrap', self::BOOTSTRAP_DATA_NODE_MODE);
-       }
-
-       /**
-        * Starts the listener
-        *
-        * @return      void
-        */
-       protected function startListener () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('node_bootstrap', 'listener');
-       }
-
-       /**
-        * Starts the TCP/UDP listen port
-        *
-        * @return      void
-        */
-       protected function startListenPort () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('node_bootstrap', self::BOOTSTRAP_DATA_LISTEN_PORT);
-       }
-
-       /**
-        * Starts the session id
-        *
-        * @return      void
-        */
-       protected function startSessionId () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('node_bootstrap', self::BOOTSTRAP_DATA_SESSION_ID);
-       }
-
-       /**
-        * Starts the public ip
-        *
-        * @return      void
-        */
-       protected function startExternalIp () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('node_bootstrap', self::BOOTSTRAP_DATA_EXTERNAL_IP);
-       }
-
-       /**
-        * Starts the private ip
-        *
-        * @return      void
-        */
-       protected function startInternalIp () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('node_bootstrap', self::BOOTSTRAP_DATA_INTERNAL_IP);
-       }
-
-       /**
-        * Starts the object type list
-        *
-        * @return      void
-        */
-       protected function startObjectTypeList () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('node_bootstrap', 'object-type-list');
-       }
-
-       /**
-        * Starts the object type
-        *
-        * @return      void
-        */
-       protected function startObjectType () {
-               // Push the node name on the stacker
-               $this->getStackerInstance()->pushNamed('node_bootstrap', 'object-type');
-       }
-
-       /**
-        * Finishes the object type
-        *
-        * @return      void
-        */
-       protected function finishObjectType () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('node_bootstrap');
-       }
-
-       /**
-        * Finishes the object type list
-        *
-        * @return      void
-        */
-       protected function finishObjectTypeList () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('node_bootstrap');
-       }
-
-       /**
-        * Finishes the session id
-        *
-        * @return      void
-        */
-       protected function finishSessionId () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('node_bootstrap');
-       }
-
-       /**
-        * Finishes the private ip
-        *
-        * @return      void
-        */
-       protected function finishInternalIp () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('node_bootstrap');
-       }
-
-       /**
-        * Finishes the public ip
-        *
-        * @return      void
-        */
-       protected function finishExternalIp () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('node_bootstrap');
-       }
-
-       /**
-        * Finishes the TCP/UDP listen port
-        *
-        * @return      void
-        */
-       protected function finishListenPort () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('node_bootstrap');
-       }
-
-       /**
-        * Finishes the listener
-        *
-        * @return      void
-        */
-       protected function finishListener () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('node_bootstrap');
-       }
-
-       /**
-        * Finishes the node mode
-        *
-        * @return      void
-        */
-       protected function finishNodeMode () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('node_bootstrap');
-       }
-
-       /**
-        * Finishes the node status
-        *
-        * @return      void
-        */
-       protected function finishNodeStatus () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('node_bootstrap');
-       }
-
-       /**
-        * Finishes the bootstrap data
-        *
-        * @return      void
-        */
-       protected function finishBootstrapData () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('node_bootstrap');
-       }
-
-       /**
-        * Finishes the bootstrap
-        *
-        * @return      void
-        */
-       protected function finishBootstrap () {
-               // Pop the last entry
-               $this->getStackerInstance()->popNamed('node_bootstrap');
-       }
-}
-
-// [EOF]
+// @DEPRECATED
 ?>
diff --git a/application/hub/main/template/bootstrap/class_XmlDhtBootstrapTemplateEngine.php b/application/hub/main/template/bootstrap/class_XmlDhtBootstrapTemplateEngine.php
new file mode 100644 (file)
index 0000000..fd16063
--- /dev/null
@@ -0,0 +1,336 @@
+<?php
+/**
+ * An Bootstrap template engine class for XML templates
+ *
+ * @author             Roland Haeder <webmaster@ship-simu.org>
+ * @version            0.0.0
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Core Developer Team
+ * @license            GNU GPL 3.0 or any newer version
+ * @link               http://www.ship-simu.org
+ * @todo               This template engine does not make use of setTemplateType()
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+class XmlDhtBootstrapTemplateEngine extends BaseXmlTemplateEngine implements CompileableTemplate, Registerable {
+       /**
+        * Some XML nodes must be available for later data extraction
+        */
+       const BOOTSTRAP_DATA_SESSION_ID  = 'session-id';
+       const BOOTSTRAP_DATA_NODE_STATUS = 'node-status';
+       const BOOTSTRAP_DATA_NODE_MODE   = 'node-mode';
+       const BOOTSTRAP_DATA_EXTERNAL_IP = 'external-ip';
+       const BOOTSTRAP_DATA_INTERNAL_IP = 'internal-ip';
+       const BOOTSTRAP_DATA_LISTEN_PORT = 'listen-port';
+
+       /**
+        * Protected constructor
+        *
+        * @return      void
+        */
+       protected function __construct () {
+               // Call parent constructor
+               parent::__construct(__CLASS__);
+
+               // Init array
+               $this->subNodes = array(
+                       'bootstrap-data',
+                       'listener',
+                       self::BOOTSTRAP_DATA_NODE_STATUS,
+                       self::BOOTSTRAP_DATA_NODE_MODE,
+                       self::BOOTSTRAP_DATA_LISTEN_PORT,
+                       self::BOOTSTRAP_DATA_SESSION_ID,
+                       self::BOOTSTRAP_DATA_EXTERNAL_IP,
+                       self::BOOTSTRAP_DATA_INTERNAL_IP,
+                       'object-type-list',
+               );
+       }
+
+       /**
+        * Creates an instance of the class TemplateEngine and prepares it for usage
+        *
+        * @return      $templateInstance               An instance of TemplateEngine
+        * @throws      BasePathIsEmptyException                If the provided $templateBasePath is empty
+        * @throws      InvalidBasePathStringException  If $templateBasePath is no string
+        * @throws      BasePathIsNoDirectoryException  If $templateBasePath is no
+        *                                                                                      directory or not found
+        * @throws      BasePathReadProtectedException  If $templateBasePath is
+        *                                                                                      read-protected
+        */
+       public static final function createXmlDhtBootstrapTemplateEngine () {
+               // Get a new instance
+               $templateInstance = new XmlDhtBootstrapTemplateEngine();
+
+               // Init template instance
+               $templateInstance->initXmlTemplateEngine('dht', 'bootstrap');
+
+               // Return the prepared instance
+               return $templateInstance;
+       }
+
+       /**
+        * Currently not used
+        *
+        * @param       $resource               XML parser resource (currently ignored)
+        * @param       $characters             Characters to handle
+        * @return      void
+        */
+       public function characterHandler ($resource, $characters) {
+               // Trim all spaces away
+               $characters = trim($characters);
+
+               // Is this string empty?
+               if (empty($characters)) {
+                       // Then skip it silently
+                       return false;
+               } // END - if
+
+               /*
+                * Assign the found characters to variable and use the last entry from
+                * stack as the name.
+                */
+               parent::assignVariable($this->getStackerInstance()->getNamed('dht_bootstrap'), $characters);
+       }
+
+       /**
+        * Getter for cache file (FQFN)
+        *
+        * @return      $fqfn   Full-qualified file name of the menu cache
+        */
+       public function getMenuCacheFqfn () {
+               $this->partialStub('Please implement this method.');
+       }
+
+       /**
+        * Starts the bootstrap
+        *
+        * @return      void
+        */
+       protected function startBootstrap () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('dht_bootstrap', 'bootstrap');
+       }
+
+       /**
+        * Starts the bootstrap data
+        *
+        * @return      void
+        */
+       protected function startBootstrapData () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('dht_bootstrap', 'bootstrap-data');
+       }
+
+       /**
+        * Starts the node status
+        *
+        * @return      void
+        */
+       protected function startNodeStatus () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('dht_bootstrap', self::BOOTSTRAP_DATA_NODE_STATUS);
+       }
+
+       /**
+        * Starts the node-mode
+        *
+        * @return      void
+        */
+       protected function startNodeMode () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('dht_bootstrap', self::BOOTSTRAP_DATA_NODE_MODE);
+       }
+
+       /**
+        * Starts the listener
+        *
+        * @return      void
+        */
+       protected function startListener () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('dht_bootstrap', 'listener');
+       }
+
+       /**
+        * Starts the TCP/UDP listen port
+        *
+        * @return      void
+        */
+       protected function startListenPort () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('dht_bootstrap', self::BOOTSTRAP_DATA_LISTEN_PORT);
+       }
+
+       /**
+        * Starts the session id
+        *
+        * @return      void
+        */
+       protected function startSessionId () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('dht_bootstrap', self::BOOTSTRAP_DATA_SESSION_ID);
+       }
+
+       /**
+        * Starts the public ip
+        *
+        * @return      void
+        */
+       protected function startExternalIp () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('dht_bootstrap', self::BOOTSTRAP_DATA_EXTERNAL_IP);
+       }
+
+       /**
+        * Starts the private ip
+        *
+        * @return      void
+        */
+       protected function startInternalIp () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('dht_bootstrap', self::BOOTSTRAP_DATA_INTERNAL_IP);
+       }
+
+       /**
+        * Starts the object type list
+        *
+        * @return      void
+        */
+       protected function startObjectTypeList () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('dht_bootstrap', 'object-type-list');
+       }
+
+       /**
+        * Starts the object type
+        *
+        * @return      void
+        */
+       protected function startObjectType () {
+               // Push the node name on the stacker
+               $this->getStackerInstance()->pushNamed('dht_bootstrap', 'object-type');
+       }
+
+       /**
+        * Finishes the object type
+        *
+        * @return      void
+        */
+       protected function finishObjectType () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('dht_bootstrap');
+       }
+
+       /**
+        * Finishes the object type list
+        *
+        * @return      void
+        */
+       protected function finishObjectTypeList () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('dht_bootstrap');
+       }
+
+       /**
+        * Finishes the session id
+        *
+        * @return      void
+        */
+       protected function finishSessionId () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('dht_bootstrap');
+       }
+
+       /**
+        * Finishes the private ip
+        *
+        * @return      void
+        */
+       protected function finishInternalIp () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('dht_bootstrap');
+       }
+
+       /**
+        * Finishes the public ip
+        *
+        * @return      void
+        */
+       protected function finishExternalIp () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('dht_bootstrap');
+       }
+
+       /**
+        * Finishes the TCP/UDP listen port
+        *
+        * @return      void
+        */
+       protected function finishListenPort () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('dht_bootstrap');
+       }
+
+       /**
+        * Finishes the listener
+        *
+        * @return      void
+        */
+       protected function finishListener () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('dht_bootstrap');
+       }
+
+       /**
+        * Finishes the node mode
+        *
+        * @return      void
+        */
+       protected function finishNodeMode () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('dht_bootstrap');
+       }
+
+       /**
+        * Finishes the node status
+        *
+        * @return      void
+        */
+       protected function finishNodeStatus () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('dht_bootstrap');
+       }
+
+       /**
+        * Finishes the bootstrap data
+        *
+        * @return      void
+        */
+       protected function finishBootstrapData () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('dht_bootstrap');
+       }
+
+       /**
+        * Finishes the bootstrap
+        *
+        * @return      void
+        */
+       protected function finishBootstrap () {
+               // Pop the last entry
+               $this->getStackerInstance()->popNamed('dht_bootstrap');
+       }
+}
+
+// [EOF]
+?>
diff --git a/application/hub/templates/xml/dht_bootstrap/.htaccess b/application/hub/templates/xml/dht_bootstrap/.htaccess
new file mode 100644 (file)
index 0000000..3a42882
--- /dev/null
@@ -0,0 +1 @@
+Deny from all
diff --git a/application/hub/templates/xml/dht_bootstrap/bootstrap.xml b/application/hub/templates/xml/dht_bootstrap/bootstrap.xml
new file mode 100644 (file)
index 0000000..709fa89
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+An XML for DHT bootstrapping
+
+@author                Roland Haeder <webmaster@ship-simu.org>
+@version       0.0.0
+@copyright     Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Hub Developer Team
+@license       GNU GPL 3.0 or any newer version
+@link          http://www.ship-simu.org
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>
+//-->
+<bootstrap>
+</bootstrap>