]> git.mxchange.org Git - hub.git/commitdiff
Introduced DHT (maybe own implementation, maybe Kademlia, who knows?). In the next...
authorRoland Häder <roland@mxchange.org>
Sun, 26 Aug 2012 20:52:08 +0000 (20:52 +0000)
committerRoland Häder <roland@mxchange.org>
Sun, 26 Aug 2012 20:52:08 +0000 (20:52 +0000)
.gitattributes
application/hub/config.php
application/hub/main/factories/class_ [new file with mode: 0644]
application/hub/main/factories/dht/.htaccess [new file with mode: 0644]
application/hub/main/factories/dht/class_DhtObjectFactory.php [new file with mode: 0644]
application/hub/main/helper/hub/answer/requests/class_NodeRequestNodeListMessageAnswerHelper.php

index 6c3e40acaced7d0176a3cd5a5d015109bb214ca9..5779dcfc66dedac2defabb7382964d89bab78ef0 100644 (file)
@@ -231,6 +231,9 @@ application/hub/main/factories/chain/.htaccess -text svneol=unset#text/plain
 application/hub/main/factories/chain/class_PackageFilterChainFactory.php svneol=native#text/plain
 application/hub/main/factories/chunks/.htaccess -text svneol=unset#text/plain
 application/hub/main/factories/chunks/class_ChunkHandlerFactory.php svneol=native#text/plain
+application/hub/main/factories/class_ svneol=native#text/plain
+application/hub/main/factories/dht/.htaccess -text svneol=unset#text/plain
+application/hub/main/factories/dht/class_DhtObjectFactory.php svneol=native#text/plain
 application/hub/main/factories/discovery/.htaccess -text svneol=unset#text/plain
 application/hub/main/factories/discovery/class_PackageDiscoveryFactory.php svneol=native#text/plain
 application/hub/main/factories/discovery/class_SocketDiscoveryFactory.php svneol=native#text/plain
index 4ba22e19459b988e20ec5bea1201266aedc1cd97..7a81eaf1fca0c1df68d1c6b70f10c955b0529576 100644 (file)
@@ -710,6 +710,9 @@ $cfg->setConfigEntry('package_decoder_class', 'PackageDecoder');
 // @TODO This is very static, rewrite it to more flexible
 $cfg->setConfigEntry('package_recipient_max_count', 3);
 
+// CFG: NODE-DHT-CLASS
+$cfg->setConfigEntry('node_dht_class', 'NodeDhtFacade');
+
 ///////////////////////////////////////////////////////////////////////////////
 //                              Peer states
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/application/hub/main/factories/class_ b/application/hub/main/factories/class_
new file mode 100644 (file)
index 0000000..71a957b
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+/**
+ * A factory class for !!!
+ *
+ * @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 ???Factory extends ObjectFactory {
+       /**
+        * Protected constructor
+        *
+        * @return      void
+        */
+       protected function __construct () {
+               // Call parent constructor
+               parent::__construct(__CLASS__);
+       }
+
+       /**
+        * Returns a singleton (registry-based) !!! instance
+        *
+        * @return      $handlerInstance        An instance of a !!! class
+        */
+       public static final function create???Instance () {
+               // If there is no handler?
+               if (Registry::getRegistry()->instanceExists('|||')) {
+                       // Get handler from registry
+                       $handlerInstance = Registry::getRegistry()->getInstance('|||');
+               } else {
+                       // Get the handler instance
+                       $handlerInstance = self::createObjectByConfiguredName('|||_class');
+
+                       // Add it to the registry
+                       Registry::getRegistry()->addInstance('|||', $handlerInstance);
+               }
+
+               // Return the instance
+               return $handlerInstance;
+       }
+}
+
+// [EOF]
+?>
diff --git a/application/hub/main/factories/dht/.htaccess b/application/hub/main/factories/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/dht/class_DhtObjectFactory.php b/application/hub/main/factories/dht/class_DhtObjectFactory.php
new file mode 100644 (file)
index 0000000..535e858
--- /dev/null
@@ -0,0 +1,63 @@
+<?php
+/**
+ * A factory class for DHT objects
+ *
+ * @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 DhtObjectFactory extends ObjectFactory {
+       /**
+        * Protected constructor
+        *
+        * @return      void
+        */
+       protected function __construct () {
+               // Call parent constructor
+               parent::__construct(__CLASS__);
+       }
+
+       /**
+        * Returns a singleton (registry-based) DHT object instance
+        *
+        * @param       $nodeInstance           An instance of a NodeHelper class
+        * @return      $dhtInstance    An instance of a DHT object class
+        */
+       public static final function createDhtObjectInstance (NodeHelper $nodeInstance) {
+               // If there is no handler?
+               if (Registry::getRegistry()->instanceExists('node_dht')) {
+                       // Get handler from registry
+                       $dhtInstance = Registry::getRegistry()->getInstance('node_dht');
+               } else {
+                       // Get the handler instance
+                       $dhtInstance = self::createObjectByConfiguredName('node_dht_class');
+
+                       // Add it to the registry
+                       Registry::getRegistry()->addInstance('node_dht', $dhtInstance);
+               }
+
+               // Set node instance in DHT instance
+               $dhtInstance->setNodeInstance($nodeInstance);
+
+               // Return the instance
+               return $dhtInstance;
+       }
+}
+
+// [EOF]
+?>
index 6926ed28f07a8b2154419913c69703182d2b46d4..553a9f8040c11240058d0c2f10f5fa3fdb7e6e9c 100644 (file)
@@ -81,6 +81,9 @@ class NodeRequestNodeListMessageAnswerHelper extends BaseHubAnswerHelper impleme
                // Is must not be NULL (then it can only be a template instance)
                assert(!is_null($entriesInstance));
 
+               // Get DHT instance
+               $dhtInstance = DhtObjectFactory::createDhtInstance($nodeInstance);
+
                // Render the XML content
                $templateInstance->renderXmlContent();
        }