]> git.mxchange.org Git - hub.git/commitdiff
Added 'active' state for DHTs
authorRoland Häder <roland@mxchange.org>
Thu, 14 Feb 2013 22:50:55 +0000 (22:50 +0000)
committerRoland Häder <roland@mxchange.org>
Thu, 14 Feb 2013 22:50:55 +0000 (22:50 +0000)
.gitattributes
application/hub/config.php
application/hub/main/states/dht/active/.htaccess [new file with mode: 0644]
application/hub/main/states/dht/active/class_DhtActiveState.php [new file with mode: 0644]
application/hub/main/states/dht/virgin/class_DhtVirginState.php

index a071e24ddc75182708d59a84f70c7e64eed9cdf5..535e7c302b3c7f4360fb3f293e01ba1b7f0a4daa 100644 (file)
@@ -578,6 +578,8 @@ application/hub/main/states/cruncher/init/class_CruncherInitState.php svneol=nat
 application/hub/main/states/cruncher/virgin/.htaccess svneol=native#text/plain
 application/hub/main/states/cruncher/virgin/class_CruncherVirginState.php svneol=native#text/plain
 application/hub/main/states/dht/.htaccess -text svneol=unset#text/plain
+application/hub/main/states/dht/active/.htaccess -text svneol=unset#text/plain
+application/hub/main/states/dht/active/class_DhtActiveState.php svneol=native#text/plain
 application/hub/main/states/dht/class_ svneol=native#text/plain
 application/hub/main/states/dht/class_BaseDhtState.php svneol=native#text/plain
 application/hub/main/states/dht/init/.htaccess -text svneol=unset#text/plain
index 7de51c2a65bbf6547b35b6549a0a9b6d5e525eab..4c8e70e35ad82108963bd7c0a1646f5d9d8946b0 100644 (file)
@@ -639,6 +639,9 @@ $cfg->setConfigEntry('dht_init_state_class', 'DhtInitState');
 // CFG: DHT-VIRGIN-STATE-CLASS
 $cfg->setConfigEntry('dht_virgin_state_class', 'DhtVirginState');
 
+// CFG: DHT-ACTIVE-STATE-CLASS
+$cfg->setConfigEntry('dht_active_state_class', 'DhtActiveState');
+
 // CFG: NETWORK-PACKAGE-CLASS
 $cfg->setConfigEntry('network_package_class', 'NetworkPackage');
 
diff --git a/application/hub/main/states/dht/active/.htaccess b/application/hub/main/states/dht/active/.htaccess
new file mode 100644 (file)
index 0000000..3a42882
--- /dev/null
@@ -0,0 +1 @@
+Deny from all
diff --git a/application/hub/main/states/dht/active/class_DhtActiveState.php b/application/hub/main/states/dht/active/class_DhtActiveState.php
new file mode 100644 (file)
index 0000000..0a5f438
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+/**
+ * A Active dht state 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 DhtActiveState extends BaseDhtState implements Stateable {
+       /**
+        * Protected constructor
+        *
+        * @return      void
+        */
+       protected function __construct () {
+               // Call parent constructor
+               parent::__construct(__CLASS__);
+
+               // Set state name
+               $this->setStateName('active');
+       }
+
+       /**
+        * Creates an instance of this class
+        *
+        * @param       $dhtInstance    An instance of a Distributable class
+        * @return      $stateInstance  An instance of a Stateable class
+        */
+       public final static function createDhtActiveState (Distributable $dhtInstance) {
+               // Get new instance
+               $stateInstance = new DhtActiveState();
+
+               // Debug message
+               self::createDebugInstance(__CLASS__)->debugOutput('DHT-STATE: Has changed from ' . $dhtInstance->getPrintableState() . ' to ' . $stateInstance->getStateName() . '.');
+
+               // Set the dht instance
+               $stateInstance->setDhtInstance($dhtInstance);
+
+               // Return the prepared instance
+               return $stateInstance;
+       }
+}
+
+// [EOF]
+?>
index ff461d5732c2144ab25787e90c62ad1b6eca3ea8..bef834318c1eb7063f794d088fc05e3ade9fedde 100644 (file)
@@ -54,6 +54,18 @@ class DhtVirginState extends BaseDhtState implements Stateable {
                // Return the prepared instance
                return $stateInstance;
        }
+
+       /**
+        * Called when the DHT has booted. This means that the bootstrap message
+        * has been sent out to other nodes. This will changed the DHT's state
+        * to 'active'.
+        *
+        * @return      void
+        */
+       public function dhtHasBooted () {
+               // Get new instance and set it
+               DhtStateFactory::createDhtStateInstanceByName('active', $this->getDhtInstance());
+       }
 }
 
 // [EOF]