From fbea3b373356393e0146fee27d22caa1daf80f45 Mon Sep 17 00:00:00 2001 From: Roland Haeder Date: Sun, 16 Feb 2014 02:23:00 +0100 Subject: [PATCH] Publication of DHT entries requires a fully booted DHT as else it will only find itself. Signed-off-by: Roland Haeder --- .../interfaces/distributable/class_Distributable.php | 7 +++++++ application/hub/main/dht/class_BaseDht.php | 10 ++++++++++ .../hub/main/factories/states/{state => dht}/.htaccess | 0 .../states/{state => dht}/class_DhtStateFactory.php | 0 .../hub/main/states/peer/class_BasePeerState.php | 2 +- .../node/dht/class_NodeDhtPublicationCheckTask.php | 2 +- 6 files changed, 19 insertions(+), 2 deletions(-) rename application/hub/main/factories/states/{state => dht}/.htaccess (100%) rename application/hub/main/factories/states/{state => dht}/class_DhtStateFactory.php (100%) diff --git a/application/hub/interfaces/distributable/class_Distributable.php b/application/hub/interfaces/distributable/class_Distributable.php index 81a85c3a6..50bd97aec 100644 --- a/application/hub/interfaces/distributable/class_Distributable.php +++ b/application/hub/interfaces/distributable/class_Distributable.php @@ -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] diff --git a/application/hub/main/dht/class_BaseDht.php b/application/hub/main/dht/class_BaseDht.php index 76faf6952..a1de47c6c 100644 --- a/application/hub/main/dht/class_BaseDht.php +++ b/application/hub/main/dht/class_BaseDht.php @@ -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/state/.htaccess b/application/hub/main/factories/states/dht/.htaccess similarity index 100% rename from application/hub/main/factories/states/state/.htaccess rename to application/hub/main/factories/states/dht/.htaccess diff --git a/application/hub/main/factories/states/state/class_DhtStateFactory.php b/application/hub/main/factories/states/dht/class_DhtStateFactory.php similarity index 100% rename from application/hub/main/factories/states/state/class_DhtStateFactory.php rename to application/hub/main/factories/states/dht/class_DhtStateFactory.php diff --git a/application/hub/main/states/peer/class_BasePeerState.php b/application/hub/main/states/peer/class_BasePeerState.php index 8f1a731ab..9f2717f4c 100644 --- a/application/hub/main/states/peer/class_BasePeerState.php +++ b/application/hub/main/states/peer/class_BasePeerState.php @@ -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... diff --git a/application/hub/main/tasks/node/dht/class_NodeDhtPublicationCheckTask.php b/application/hub/main/tasks/node/dht/class_NodeDhtPublicationCheckTask.php index a37351cd1..7037e08ce 100644 --- a/application/hub/main/tasks/node/dht/class_NodeDhtPublicationCheckTask.php +++ b/application/hub/main/tasks/node/dht/class_NodeDhtPublicationCheckTask.php @@ -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 -- 2.39.5