]> git.mxchange.org Git - hub.git/commitdiff
Publication of DHT entries requires a fully booted DHT as else it will only find...
authorRoland Haeder <roland@mxchange.org>
Sun, 16 Feb 2014 01:23:00 +0000 (02:23 +0100)
committerRoland Haeder <roland@mxchange.org>
Sun, 16 Feb 2014 01:23:00 +0000 (02:23 +0100)
Signed-off-by: Roland Haeder <roland@mxchange.org>
application/hub/interfaces/distributable/class_Distributable.php
application/hub/main/dht/class_BaseDht.php
application/hub/main/factories/states/dht/.htaccess [new file with mode: 0644]
application/hub/main/factories/states/dht/class_DhtStateFactory.php [new file with mode: 0644]
application/hub/main/factories/states/state/.htaccess [deleted file]
application/hub/main/factories/states/state/class_DhtStateFactory.php [deleted file]
application/hub/main/states/peer/class_BasePeerState.php
application/hub/main/tasks/node/dht/class_NodeDhtPublicationCheckTask.php

index 81a85c3a6cdd3ee63e560bea7ded28fbca40b827..50bd97aec72fa94cc4062ee9db39778a925d248f 100644 (file)
@@ -83,6 +83,13 @@ interface Distributable extends FrameworkInterface {
         * @return      $recipients             An indexed array with DHT recipients
         */
        function findRecipientsByPackageData (array $packageData);
+
+       /**
+        * Whether the DHT has fully bootstrapped (after state 'booting')
+        *
+        * @return      $isFullyBooted  Whether the DHT is fully booted
+        */
+       function hasFullyBootstrapped ();
 }
 
 // [EOF]
index 76faf6952fdce9eeb68906cfcbe8f8fac69fc321..a1de47c6cc54c90b11b35a5fcbba822198ac5f91 100644 (file)
@@ -222,6 +222,16 @@ abstract class BaseDht extends BaseHubSystem {
                // "Publish" the descriptor by sending it to the bootstrap/list nodes
                $this->publishHelperInstance->sendPackage($this);
        }
+
+       /**
+        * Whether the DHT has fully bootstrapped (after state 'booting')
+        *
+        * @return      $isFullyBooted  Whether the DHT is fully booted
+        * @todo        0% done
+        */
+       public function hasFullyBootstrapped () {
+               // Get state and check it
+       }
 }
 
 // [EOF]
diff --git a/application/hub/main/factories/states/dht/.htaccess b/application/hub/main/factories/states/dht/.htaccess
new file mode 100644 (file)
index 0000000..3a42882
--- /dev/null
@@ -0,0 +1 @@
+Deny from all
diff --git a/application/hub/main/factories/states/dht/class_DhtStateFactory.php b/application/hub/main/factories/states/dht/class_DhtStateFactory.php
new file mode 100644 (file)
index 0000000..4685dc8
--- /dev/null
@@ -0,0 +1,65 @@
+<?php
+/**
+ * A factory class for DHT states
+ *
+ * @author             Roland Haeder <webmaster@shipsimu.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.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
+ * 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 DhtStateFactory extends ObjectFactory {
+       /**
+        * Protected constructor
+        *
+        * @return      void
+        */
+       protected function __construct () {
+               // Call parent constructor
+               parent::__construct(__CLASS__);
+       }
+
+       /**
+        * Creates an instance of a configurable DHT state and sets it in the
+        * given DHT instance.
+        *
+        * @param       $stateName              Name of the state
+        * @param       $dhtInstance    A Distributable class instance
+        * @return      $stateInstance  A Stateable class instance
+        */
+       public static final function createDhtStateInstanceByName ($stateName, Distributable $dhtInstance) {
+               // Then construct the class' configuraton entry
+               $className = 'dht_' . $stateName . '_state_class';
+
+               // Get a class from that configuration entry
+               $stateInstance = self::createObjectByConfiguredName($className, array($dhtInstance));
+
+               // Debug message
+               self::createDebugInstance(__CLASS__)->debugOutput('DHT-STATE-FACTORY[' . __METHOD__ . ':' . __LINE__ . ']: DHT state has changed from ' . $dhtInstance->getPrintableState() . ' to ' . $stateInstance->getStateName() . '.');
+
+               // Once we have that state, set it in the DHT instance
+               $dhtInstance->setStateInstance($stateInstance);
+
+               // Update DHT data
+               $dhtInstance->updateDhtData();
+
+               // For any purposes, return the state instance
+               return $stateInstance;
+       }
+}
+
+// [EOF]
+?>
diff --git a/application/hub/main/factories/states/state/.htaccess b/application/hub/main/factories/states/state/.htaccess
deleted file mode 100644 (file)
index 3a42882..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Deny from all
diff --git a/application/hub/main/factories/states/state/class_DhtStateFactory.php b/application/hub/main/factories/states/state/class_DhtStateFactory.php
deleted file mode 100644 (file)
index 4685dc8..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-/**
- * A factory class for DHT states
- *
- * @author             Roland Haeder <webmaster@shipsimu.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.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
- * 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 DhtStateFactory extends ObjectFactory {
-       /**
-        * Protected constructor
-        *
-        * @return      void
-        */
-       protected function __construct () {
-               // Call parent constructor
-               parent::__construct(__CLASS__);
-       }
-
-       /**
-        * Creates an instance of a configurable DHT state and sets it in the
-        * given DHT instance.
-        *
-        * @param       $stateName              Name of the state
-        * @param       $dhtInstance    A Distributable class instance
-        * @return      $stateInstance  A Stateable class instance
-        */
-       public static final function createDhtStateInstanceByName ($stateName, Distributable $dhtInstance) {
-               // Then construct the class' configuraton entry
-               $className = 'dht_' . $stateName . '_state_class';
-
-               // Get a class from that configuration entry
-               $stateInstance = self::createObjectByConfiguredName($className, array($dhtInstance));
-
-               // Debug message
-               self::createDebugInstance(__CLASS__)->debugOutput('DHT-STATE-FACTORY[' . __METHOD__ . ':' . __LINE__ . ']: DHT state has changed from ' . $dhtInstance->getPrintableState() . ' to ' . $stateInstance->getStateName() . '.');
-
-               // Once we have that state, set it in the DHT instance
-               $dhtInstance->setStateInstance($stateInstance);
-
-               // Update DHT data
-               $dhtInstance->updateDhtData();
-
-               // For any purposes, return the state instance
-               return $stateInstance;
-       }
-}
-
-// [EOF]
-?>
index 8f1a731ab97dc3fb0d5ac1738ea719aeba0700a0..9f2717f4c087fa4941e815bcf33b8067f5942a5b 100644 (file)
@@ -51,7 +51,7 @@ class BasePeerState extends BaseState {
        /**
         * Checks whether the peer's state is 'connected'
         *
-        * @return      $isConnected                    Whether the state is 'connected'
+        * @return      $isConnected    Whether the state is 'connected'
         */
        public function isPeerStateConnected () {
                // Just compare it...
index a37351cd14ca01293588535c95f1d6cc67fe1599..7037e08ceaa8ef672c7dc540dc6805bc0e6dcddb 100644 (file)
@@ -73,7 +73,7 @@ class NodeDhtPublicationCheckTask extends BaseTask implements Taskable, Visitabl
                $dhtInstance = $this->getDhtInstance();
 
                // Has the DHT some unpublished entries?
-               if ($dhtInstance->hasUnpublishedEntries()) {
+               if (($dhtInstance->hasFullyBootstrapped()) && ($dhtInstance->hasUnpublishedEntries())) {
                        // Then initiate publishing them
                        $dhtInstance->initEntryPublication();
                } // END - if