X-Git-Url: https://git.mxchange.org/?p=hub.git;a=blobdiff_plain;f=application%2Fhub%2Fmain%2Fnodes%2Fboot%2Fclass_HubBootNode.php;h=62342384d7297317b8eb4abdacc4b9aa0e17fbdf;hp=ee6faf45409933c80ac58f7892a356371f453bd8;hb=73aff29b9bc78031853b0b8c0fe0a8e04f66ac29;hpb=4396b4e074adb9087be26ab605f17c41915a5163 diff --git a/application/hub/main/nodes/boot/class_HubBootNode.php b/application/hub/main/nodes/boot/class_HubBootNode.php index ee6faf454..62342384d 100644 --- a/application/hub/main/nodes/boot/class_HubBootNode.php +++ b/application/hub/main/nodes/boot/class_HubBootNode.php @@ -2,11 +2,11 @@ /** * A hub-node class for the 'Boot' mode * - * @author Roland Haeder + * @author Roland Haeder * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 Hub Developer Team + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 Hub Developer Team * @license GNU GPL 3.0 or any newer version - * @link http://www.ship-simu.org + * @link http://www.shipsimu.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 @@ -58,52 +58,49 @@ class HubBootNode extends BaseHubNode implements NodeHelper, Registerable { * @todo add some more special bootstrap things for this boot node */ public function doBootstrapping () { + // Get UNL + $unl = $this->detectOwnUniversalNodeLocator(); + + // Debug message + //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('[' . __METHOD__ . ':' . __LINE__ . ']: unl=' . $unl); + // Now check if the IP address matches one of the bootstrap nodes - if ($this->ifAddressMatchesBootstrappingNodes($this->getConfigInstance()->detectServerAddress())) { + if ($this->ifAddressMatchesBootstrapNodes($unl)) { // Get our port from configuration - $ourPort = $this->getConfigInstance()->getConfigEntry('boot_node_tcp_listen_port'); + $ourPort = $this->getConfigInstance()->getConfigEntry('node_listen_port'); // Extract port - $bootPort = substr($this->getBootIpPort(), -strlen($ourPort), strlen($ourPort)); + $bootPort = substr($this->getBootUniversalNodeLocator(), -strlen($ourPort), strlen($ourPort)); // Is the port the same? if ($bootPort == $ourPort) { // It is the same! - $this->debugOutput('BOOTSTRAP: IP/port matches bootstrapping node ' . $this->getBootIpPort() . '.'); + self::createDebugInstance(__CLASS__)->debugOutput('BOOTSTRAP: UNL matches bootstrap node ' . $this->getBootUniversalNodeLocator() . '.'); - // Now, does the mode match (should be 'boot'!) - if ($this->getRequestInstance()->getRequestElement('mode') == 'boot') { + // Now, does the mode match + if ($this->getRequestInstance()->getRequestElement('mode') == self::NODE_TYPE_BOOT) { // Output debug message - $this->debugOutput('BOOTSTRAP: Our node is a valid bootstrapping node.'); + self::createDebugInstance(__CLASS__)->debugOutput('BOOTSTRAP: Our node is a valid bootstrap node.'); } else { // Output warning - $this->debugOutput('BOOTSTRAP: WARNING: Mismatching mode ' . $this->getRequestInstance()->getRequestElement('mode') . '!=boot detected.'); + self::createDebugInstance(__CLASS__)->debugOutput('BOOTSTRAP: WARNING: Mismatching mode ' . $this->getRequestInstance()->getRequestElement('mode') . '!=' . BaseHubNode::NODE_TYPE_BOOT . ' detected.'); } } else { // IP does match, but no port - $this->debugOutput('BOOTSTRAP: WARNING: Our IP ' . $this->getConfigInstance()->detectServerAddress() . ' does match a known bootstrap-node but not the port ' . $ourPort . '/' . $bootPort . '.'); + self::createDebugInstance(__CLASS__)->debugOutput('BOOTSTRAP: WARNING: Our UNL ' . $unl . ' does match a known bootstrap-node but not the port ' . $ourPort . '/' . $bootPort . '.'); } } else { // Node does not match any know bootstrap-node - $this->debugOutput('BOOTSTRAP: WARNING: Our IP ' . $this->getConfigInstance()->detectServerAddress() . ' does not match any known bootstrap-nodes.'); + self::createDebugInstance(__CLASS__)->debugOutput('BOOTSTRAP: WARNING: Our UNL ' . $unl . ' does not match any known bootstrap-nodes.'); } + // Enable acceptance of announcements + $this->enableAcceptingAnnouncements(); + // This might not be all... $this->partialStub('Please implement more bootsrapping steps.'); } - /** - * Initializes hub-specific queues - * - * @return void - * @todo Unfinished method - */ - public function initQueues () { - // Call generic queues every hub may have, like the core queue - parent::initGenericQueues(); - $this->partialStub('Please add some more hub-specific queues.'); - } - /** * Add some node-specific filters * @@ -119,6 +116,20 @@ class HubBootNode extends BaseHubNode implements NodeHelper, Registerable { // @TODO Add some filters here $this->partialStub('Add some filters here.'); } + + /** + * Adds extra tasks to the given handler for this node + * + * @param $handlerInstance An instance of a HandleableTask class + * @return void + */ + public function addExtraTasks (HandleableTask $handlerInstance) { + // Prepare a task for booting the DHT + $taskInstance = ObjectFactory::createObjectByConfiguredName('node_dht_bootstrap_task_class'); + + // Register it + $handlerInstance->registerTask('dht_bootstrap', $taskInstance); + } } // [EOF]