// 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
// 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());
// 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
}
/**
- * 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