]> git.mxchange.org Git - hub.git/blobdiff - application/hub/main/database/wrapper/node/class_NodeDistributedHashTableDatabaseWrapper.php
Expanded debug lines, renamed 'node_type' to 'node_mode' (which makes your DHT databa...
[hub.git] / application / hub / main / database / wrapper / node / class_NodeDistributedHashTableDatabaseWrapper.php
index ffa6e4baa4a3e82d6268d95f27d23e01b1305d42..83c5ec4e424d67f2c3ebf60ce6de4e4ed2d63d1a 100644 (file)
@@ -28,10 +28,11 @@ class NodeDistributedHashTableDatabaseWrapper extends BaseDatabaseWrapper implem
        // Constants for database column names
        const DB_COLUMN_NODE_ID          = 'node_id';
        const DB_COLUMN_SESSION_ID       = 'session_id';
-       const DB_COLUMN_IP_PORT          = 'ip_port';
+       const DB_COLUMN_EXTERNAL_IP      = 'external_ip';
+       const DB_COLUMN_LISTEN_PORT      = 'listen_port';
        const DB_COLUMN_PRIVATE_KEY      = 'private_key';
        const DB_COLUMN_PRIVATE_KEY_HASH = 'private_key_hash';
-       const DB_COLUMN_NODE_TYPE        = 'node_type';
+       const DB_COLUMN_NODE_MODE        = 'node_mode';
 
        /**
         * Protected constructor
@@ -77,9 +78,16 @@ class NodeDistributedHashTableDatabaseWrapper extends BaseDatabaseWrapper implem
                // Set the primary key
                $dataSetInstance->setUniqueKey(self::DB_COLUMN_NODE_ID);
 
+               // Get ip:port combination and "explode" it
+               $ipPort = $nodeInstance->getAddressPortArray();
+
+               // Make sure both is valid
+               assert(($ipPort[0] !== 'invalid') && ($ipPort[1] !== 'invalid'));
+
                // Add public node data
-               $dataSetInstance->addCriteria(self::DB_COLUMN_NODE_TYPE       , $requestInstance->getRequestElement('mode'));
-               $dataSetInstance->addCriteria(self::DB_COLUMN_IP_PORT         , $nodeInstance->getAddressPort());
+               $dataSetInstance->addCriteria(self::DB_COLUMN_NODE_MODE       , $requestInstance->getRequestElement('mode'));
+               $dataSetInstance->addCriteria(self::DB_COLUMN_EXTERNAL_IP     , $ipPort[0]);
+               $dataSetInstance->addCriteria(self::DB_COLUMN_LISTEN_PORT     , $ipPort[1]);
                $dataSetInstance->addCriteria(self::DB_COLUMN_NODE_ID         , $nodeInstance->getNodeId());
                $dataSetInstance->addCriteria(self::DB_COLUMN_SESSION_ID      , $nodeInstance->getSessionId());
                $dataSetInstance->addCriteria(self::DB_COLUMN_PRIVATE_KEY_HASH, $nodeInstance->getPrivateKeyHash());
@@ -103,8 +111,16 @@ class NodeDistributedHashTableDatabaseWrapper extends BaseDatabaseWrapper implem
                        // Get node instance
                        $nodeInstance = Registry::getRegistry()->getInstance('node');
 
-                       // Add ip:port as criteria
-                       $searchInstance->addCriteria(self::DB_COLUMN_IP_PORT, $nodeInstance->getAddressPort());
+                       // Get ip:port combination and "explode" it
+                       $ipPort = $nodeInstance->getAddressPortArray();
+
+                       // Make sure both is valid
+                       assert(($ipPort[0] !== 'invalid') && ($ipPort[1] !== 'invalid'));
+
+                       // Add ip:port/node id as criteria
+                       $searchInstance->addCriteria(self::DB_COLUMN_EXTERNAL_IP, $ipPort[0]);
+                       $searchInstance->addCriteria(self::DB_COLUMN_LISTEN_PORT, $ipPort[1]);
+                       $searchInstance->addCriteria(self::DB_COLUMN_NODE_ID    , $nodeInstance->getNodeId());
                        $searchInstance->setLimit(1);
 
                        // Query database and get a result instance back
@@ -165,20 +181,17 @@ class NodeDistributedHashTableDatabaseWrapper extends BaseDatabaseWrapper implem
        }
 
        /**
-        * Finds a node by given session id
+        * Finds a node locally by given session id
         *
         * @param       $sessionId      Session id to lookup
         * @return      $nodeData       Node data array
         */
-       public function findNodeBySessionId ($sessionId) {
+       public function findNodeLocalBySessionId ($sessionId) {
                // Get search criteria
                $searchInstance = ObjectFactory::createObjectByConfiguredName('search_criteria_class');
 
-               // Get node instance
-               $nodeInstance = Registry::getRegistry()->getInstance('node');
-
                // Search for session id and limit it to one entry
-               $searchInstance->addCriteria(self::DB_COLUMN_SESSION_ID, $nodeInstance->getSessionId());
+               $searchInstance->addCriteria(self::DB_COLUMN_SESSION_ID, $sessionId);
                $searchInstance->setLimit(1);
 
                // Query database and get a result instance back