From 574060bd24fce7557acbd4dc3a4c5b9429f8846b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Sun, 24 Apr 2011 08:35:49 +0000 Subject: [PATCH] Renamed a lot 'Peer' classes to 'Node' or 'Client' depending on what they are written for --- .gitattributes | 5 + application/hub/config.php | 20 +- .../class_NodeStateLookupDatabaseWrapper.php | 172 ++++++++++++++++++ .../class_PeerStateLookupDatabaseWrapper.php | 171 +---------------- .../states/peer/class_PeerStateFactory.php | 2 +- .../main/listener/tcp/class_TcpListener.php | 2 +- .../class_ClientTcpListenerDecorator.php | 96 ++++++++++ .../class_PeerTcpListenerDecorator.php | 95 +--------- .../class_ClientUdpListenerDecorator.php | 96 ++++++++++ .../class_PeerUdpListenerDecorator.php | 95 +--------- .../peer/class_NodeStateLookupTable.php | 104 +++++++++++ .../peer/class_PeerStateLookupTable.php | 103 +---------- .../hub/main/nodes/class_BaseHubNode.php | 4 +- .../peer/new/class_NewConnectionNodeState.php | 50 +++++ .../peer/new/class_NewConnectionPeerState.php | 49 +---- 15 files changed, 542 insertions(+), 522 deletions(-) create mode 100644 application/hub/main/database/wrapper/states/class_NodeStateLookupDatabaseWrapper.php create mode 100644 application/hub/main/listener/tcp/decorators/class_ClientTcpListenerDecorator.php create mode 100644 application/hub/main/listener/udp/decorators/class_ClientUdpListenerDecorator.php create mode 100644 application/hub/main/lookup/peer/class_NodeStateLookupTable.php create mode 100644 application/hub/main/states/peer/new/class_NewConnectionNodeState.php diff --git a/.gitattributes b/.gitattributes index 28f043c99..1178a29f4 100644 --- a/.gitattributes +++ b/.gitattributes @@ -165,6 +165,7 @@ application/hub/main/database/wrapper/node/.htaccess svneol=native#text/plain application/hub/main/database/wrapper/node/class_NodeInformationDatabaseWrapper.php svneol=native#text/plain application/hub/main/database/wrapper/node/class_NodeListDatabaseWrapper.php svneol=native#text/plain application/hub/main/database/wrapper/states/.htaccess svneol=native#text/plain +application/hub/main/database/wrapper/states/class_NodeStateLookupDatabaseWrapper.php svneol=native#text/plain application/hub/main/database/wrapper/states/class_PeerStateLookupDatabaseWrapper.php svneol=native#text/plain application/hub/main/decorators/.htaccess -text svneol=unset#text/plain application/hub/main/discovery/.htaccess -text svneol=unset#text/plain @@ -324,12 +325,14 @@ application/hub/main/listener/tcp/.htaccess -text svneol=unset#text/plain application/hub/main/listener/tcp/class_ svneol=native#text/plain application/hub/main/listener/tcp/class_TcpListener.php svneol=native#text/plain application/hub/main/listener/tcp/decorators/.htaccess -text svneol=unset#text/plain +application/hub/main/listener/tcp/decorators/class_ClientTcpListenerDecorator.php svneol=native#text/plain application/hub/main/listener/tcp/decorators/class_HubTcpListenerDecorator.php svneol=native#text/plain application/hub/main/listener/tcp/decorators/class_PeerTcpListenerDecorator.php svneol=native#text/plain application/hub/main/listener/udp/.htaccess -text svneol=unset#text/plain application/hub/main/listener/udp/class_ svneol=native#text/plain application/hub/main/listener/udp/class_UdpListener.php svneol=native#text/plain application/hub/main/listener/udp/decorators/.htaccess -text svneol=unset#text/plain +application/hub/main/listener/udp/decorators/class_ClientUdpListenerDecorator.php svneol=native#text/plain application/hub/main/listener/udp/decorators/class_HubUdpListenerDecorator.php svneol=native#text/plain application/hub/main/listener/udp/decorators/class_PeerUdpListenerDecorator.php svneol=native#text/plain application/hub/main/lists/.htaccess -text svneol=unset#text/plain @@ -352,6 +355,7 @@ application/hub/main/lookup/.htaccess -text svneol=unset#text/plain application/hub/main/lookup/class_ svneol=native#text/plain application/hub/main/lookup/class_BaseLookupTable.php svneol=native#text/plain application/hub/main/lookup/peer/.htaccess -text svneol=unset#text/plain +application/hub/main/lookup/peer/class_NodeStateLookupTable.php svneol=native#text/plain application/hub/main/lookup/peer/class_PeerStateLookupTable.php svneol=native#text/plain application/hub/main/nodes/.htaccess -text svneol=unset#text/plain application/hub/main/nodes/boot/.htaccess -text svneol=unset#text/plain @@ -440,6 +444,7 @@ application/hub/main/states/peer/.htaccess -text svneol=unset#text/plain application/hub/main/states/peer/class_ svneol=native#text/plain application/hub/main/states/peer/class_BasePeerState.php svneol=native#text/plain application/hub/main/states/peer/new/.htaccess -text svneol=unset#text/plain +application/hub/main/states/peer/new/class_NewConnectionNodeState.php svneol=native#text/plain application/hub/main/states/peer/new/class_NewConnectionPeerState.php svneol=native#text/plain application/hub/main/streams/.htaccess svneol=native#text/plain application/hub/main/streams/package/.htaccess svneol=native#text/plain diff --git a/application/hub/config.php b/application/hub/config.php index 3264f81f6..92f467fd1 100644 --- a/application/hub/config.php +++ b/application/hub/config.php @@ -51,8 +51,8 @@ $cfg->setConfigEntry('node_info_db_wrapper_class', 'NodeInformationDatabaseWrapp // CFG: NODE-LIST-DB-WRAPPER-CLASS $cfg->setConfigEntry('node_list_db_wrapper_class', 'NodeListDatabaseWrapper'); -// CFG: PEER-LOOKUP-DB-WRAPPER-CLASS -$cfg->setConfigEntry('peer_state_lookup_db_wrapper_class', 'PeerStateLookupDatabaseWrapper'); +// CFG: NODE-LOOKUP-DB-WRAPPER-CLASS +$cfg->setConfigEntry('node_state_lookup_db_wrapper_class', 'NodeStateLookupDatabaseWrapper'); // CFG: WEB-CONTENT-TYPE $cfg->setConfigEntry('web_content_type', ''); @@ -79,13 +79,13 @@ $cfg->setConfigEntry('hub_tcp_listener_class', 'HubTcpListenerDecorator'); $cfg->setConfigEntry('hub_udp_listener_class', 'HubUdpListenerDecorator'); // CFG: CLIENT-TCP-LISTENER-CLASS -$cfg->setConfigEntry('peer_tcp_listener_class', 'PeerTcpListenerDecorator'); +$cfg->setConfigEntry('client_tcp_listener_class', 'ClientTcpListenerDecorator'); // CFG: CLIENT-UDP-LISTENER-CLASS -$cfg->setConfigEntry('peer_udp_listener_class', 'PeerUdpListenerDecorator'); +$cfg->setConfigEntry('client_udp_listener_class', 'ClientUdpListenerDecorator'); -// CFG: CLIENT-POOL-CLASS -$cfg->setConfigEntry('peer_pool_class', 'DefaultPeerPool'); +// CFG: NODE-POOL-CLASS +$cfg->setConfigEntry('node_pool_class', 'DefaultPeerPool'); // CFG: POOL-ENTRIES-LIST-CLASS $cfg->setConfigEntry('pool_entries_list_class', 'PoolEntriesList'); @@ -492,11 +492,11 @@ $cfg->setConfigEntry('tcp_connect_retry_max', 10); // CFG: UDP-CONNECT-RETRY-MAX $cfg->setConfigEntry('udp_connect_retry_max', 10); -// CFG: PEER-STATE-LOOKUP-TABLE-CLASS -$cfg->setConfigEntry('peer_state_lookup_table_class', 'PeerStateLookupTable'); +// CFG: NODE-STATE-LOOKUP-TABLE-CLASS +$cfg->setConfigEntry('node_state_lookup_table_class', 'NodeStateLookupTable'); -// CFG: PEER-STATE-CHECKED-PACKAGE-CLASS -$cfg->setConfigEntry('peer_state_checked_package_class', 'NewConnectionPeerState'); +// CFG: NODE-STATE-CHECKED-PACKAGE-CLASS +$cfg->setConfigEntry('node_state_checked_package_class', 'NewConnectionNodeState'); // CFG: SESSION-ID $cfg->setConfigEntry('session_id', ''); diff --git a/application/hub/main/database/wrapper/states/class_NodeStateLookupDatabaseWrapper.php b/application/hub/main/database/wrapper/states/class_NodeStateLookupDatabaseWrapper.php new file mode 100644 index 000000000..1e4b174ce --- /dev/null +++ b/application/hub/main/database/wrapper/states/class_NodeStateLookupDatabaseWrapper.php @@ -0,0 +1,172 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 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 . + */ +class NodeStateLookupDatabaseWrapper extends BaseDatabaseWrapper { + // Exception constants + const EXCEPTION_NODE_ALREADY_REGISTERED = 0x300; + + // Constants for database table names + const DB_TABLE_NODE_LOOKUP = 'node_states'; + + // Constants for database column names + const DB_COLUMN_NODE_IP = 'node_ip'; + const DB_COLUMN_NODE_PORT = 'node_port'; + const DB_COLUMN_NODE_SESSION_ID = 'node_session_id'; + + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Creates an instance of this database wrapper by a provided user class + * + * @return $wrapperInstance An instance of the created wrapper class + */ + public static final function createNodeStateLookupDatabaseWrapper () { + // Get a new instance + $wrapperInstance = new NodeStateLookupDatabaseWrapper(); + + // Set (primary!) table name + $wrapperInstance->setTableName(self::DB_TABLE_NODE_LOOKUP); + + // Return the instance + return $wrapperInstance; + } + + /** + * Getter for index key + * + * @return $indexKey Index key + */ + public final function getIndexKey () { + return $this->getDatabaseInstance()->getIndexKey(); + } + + /** + * Checks wether given 'sender' is a new node + * + * @param $packageData Raw package data + * @return $isNewPeer Wether 'sender' is a new node to this node + */ + public function isSenderNewPeer (array $packageData) { + // Is always new node by default + $isNewPeer = true; + + // Is the package valid? + if (!isset($packageData[NetworkPackage::INDEX_PACKAGE_SENDER])) { + // Invalid package found, please report this + die(__METHOD__ . ': packageData=' . print_r($packageData, true)); + } // END - if + + // Remove session id > IP:port + $ipPort = HubTools::resolveSessionId($packageData[NetworkPackage::INDEX_PACKAGE_SENDER]); + + // Is it not invalid:invalid? + if ($ipPort != 'invalid:invalid') { + // Get a search criteria instance + $searchInstance = ObjectFactory::createObjectByConfiguredName('search_criteria_class'); + + // Add 'sender' as the node's IP address + $searchInstance->addCriteria(self::DB_COLUMN_NODE_IP, $ipPort); + $searchInstance->setLimit(1); + + // Count the query + $entries = $this->doSelectCountByCriteria($searchInstance); + + // Is it there? + $isNewPeer = ($entries === 0); + } // END - if + + // Return the result + return $isNewPeer; + } + + /** + * Registers a new node with given package data. We use the session id from it. + * + * @param $packageData Raw package data + * @param $socketResource A valid socket resource + * @return void + * @throws PeerAlreadyRegisteredException If a node is already registered + * @throws InvalidSocketException If the socket resource was invalid + */ + public function registerPeerByPackageData (array $packageData, $socketResource) { + // Make sure only new nodes can be registered with package data + if (!$this->isSenderNewPeer($packageData)) { + // Throw an exception because this should normally not happen + throw new PeerAlreadyRegisteredException(array($this, $packageData), self::EXCEPTION_NODE_ALREADY_REGISTERED); + } // END - if + + // Generate a dataset instance + $dataSetInstance = ObjectFactory::createObjectByConfiguredName('dataset_criteria_class', array(self::DB_TABLE_NODE_LOOKUP)); + + // Session ids must be unique + $dataSetInstance->setUniqueKey(self::DB_COLUMN_NODE_SESSION_ID); + + // Add session id + $dataSetInstance->addCriteria(self::DB_COLUMN_NODE_SESSION_ID, $packageData[NetworkPackage::INDEX_PACKAGE_SENDER]); + + // Get node name + if (!socket_getnodename($socketResource, $nodeName, $nodePort)) { + // Get last error + $lastError = socket_last_error($socketResource); + + // Doesn't work! + throw new InvalidSocketException(array($this, gettype($socketResource), $lastError, socket_strerror($lastError)), BaseListener::EXCEPTION_INVALID_SOCKET); + } // END - if + + // Add ip address and port + $dataSetInstance->addCriteria(self::DB_COLUMN_NODE_IP , $nodeName); + $dataSetInstance->addCriteria(self::DB_COLUMN_NODE_PORT, $nodePort); + + // "Insert" the data set + $this->getDatabaseInstance()->queryInsertDataSet($dataSetInstance); + } + + /** + * Purges old entries of given socket resource. We use the IP address from that resource. + * + * @param $socketResource A valid socket resource + * @return void + * @throws InvalidSocketException If the socket resource was invalid + */ + public function purgeOldEntriesBySocketResource ($socketResource) { + // Get node name + if (!socket_getnodename($socketResource, $nodeName, $nodePort)) { + // Get last error + $lastError = socket_last_error($socketResource); + + // Doesn't work! + throw new InvalidSocketException(array($this, gettype($socketResource), $lastError, socket_strerror($lastError)), BaseListener::EXCEPTION_INVALID_SOCKET); + } // END - if + } +} + +// [EOF] +?> diff --git a/application/hub/main/database/wrapper/states/class_PeerStateLookupDatabaseWrapper.php b/application/hub/main/database/wrapper/states/class_PeerStateLookupDatabaseWrapper.php index 7450d228f..f551ef47b 100644 --- a/application/hub/main/database/wrapper/states/class_PeerStateLookupDatabaseWrapper.php +++ b/application/hub/main/database/wrapper/states/class_PeerStateLookupDatabaseWrapper.php @@ -1,172 +1,3 @@ - * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 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 . - */ -class PeerStateLookupDatabaseWrapper extends BaseDatabaseWrapper { - // Exception constants - const EXCEPTION_PEER_ALREADY_REGISTERED = 0x300; - - // Constants for database table names - const DB_TABLE_PEER_LOOKUP = 'peer_states'; - - // Constants for database column names - const DB_COLUMN_PEER_IP = 'peer_ip'; - const DB_COLUMN_PEER_PORT = 'peer_port'; - const DB_COLUMN_PEER_SESSION_ID = 'peer_session_id'; - - /** - * Protected constructor - * - * @return void - */ - protected function __construct () { - // Call parent constructor - parent::__construct(__CLASS__); - } - - /** - * Creates an instance of this database wrapper by a provided user class - * - * @return $wrapperInstance An instance of the created wrapper class - */ - public static final function createPeerStateLookupDatabaseWrapper () { - // Get a new instance - $wrapperInstance = new PeerStateLookupDatabaseWrapper(); - - // Set (primary!) table name - $wrapperInstance->setTableName(self::DB_TABLE_PEER_LOOKUP); - - // Return the instance - return $wrapperInstance; - } - - /** - * Getter for index key - * - * @return $indexKey Index key - */ - public final function getIndexKey () { - return $this->getDatabaseInstance()->getIndexKey(); - } - - /** - * Checks wether given 'sender' is a new peer - * - * @param $packageData Raw package data - * @return $isNewPeer Wether 'sender' is a new peer to this node - */ - public function isSenderNewPeer (array $packageData) { - // Is always new peer by default - $isNewPeer = true; - - // Is the package valid? - if (!isset($packageData[NetworkPackage::INDEX_PACKAGE_SENDER])) { - // Invalid package found, please report this - die(__METHOD__ . ': packageData=' . print_r($packageData, true)); - } // END - if - - // Remove session id > IP:port - $ipPort = HubTools::resolveSessionId($packageData[NetworkPackage::INDEX_PACKAGE_SENDER]); - - // Is it not invalid:invalid? - if ($ipPort != 'invalid:invalid') { - // Get a search criteria instance - $searchInstance = ObjectFactory::createObjectByConfiguredName('search_criteria_class'); - - // Add 'sender' as the peer's IP address - $searchInstance->addCriteria(self::DB_COLUMN_PEER_IP, $ipPort); - $searchInstance->setLimit(1); - - // Count the query - $entries = $this->doSelectCountByCriteria($searchInstance); - - // Is it there? - $isNewPeer = ($entries === 0); - } // END - if - - // Return the result - return $isNewPeer; - } - - /** - * Registers a new peer with given package data. We use the session id from it. - * - * @param $packageData Raw package data - * @param $socketResource A valid socket resource - * @return void - * @throws PeerAlreadyRegisteredException If a peer is already registered - * @throws InvalidSocketException If the socket resource was invalid - */ - public function registerPeerByPackageData (array $packageData, $socketResource) { - // Make sure only new peers can be registered with package data - if (!$this->isSenderNewPeer($packageData)) { - // Throw an exception because this should normally not happen - throw new PeerAlreadyRegisteredException(array($this, $packageData), self::EXCEPTION_PEER_ALREADY_REGISTERED); - } // END - if - - // Generate a dataset instance - $dataSetInstance = ObjectFactory::createObjectByConfiguredName('dataset_criteria_class', array(self::DB_TABLE_PEER_LOOKUP)); - - // Session ids must be unique - $dataSetInstance->setUniqueKey(self::DB_COLUMN_PEER_SESSION_ID); - - // Add session id - $dataSetInstance->addCriteria(self::DB_COLUMN_PEER_SESSION_ID, $packageData[NetworkPackage::INDEX_PACKAGE_SENDER]); - - // Get peer name - if (!socket_getpeername($socketResource, $peerName, $peerPort)) { - // Get last error - $lastError = socket_last_error($socketResource); - - // Doesn't work! - throw new InvalidSocketException(array($this, gettype($socketResource), $lastError, socket_strerror($lastError)), BaseListener::EXCEPTION_INVALID_SOCKET); - } // END - if - - // Add ip address and port - $dataSetInstance->addCriteria(self::DB_COLUMN_PEER_IP , $peerName); - $dataSetInstance->addCriteria(self::DB_COLUMN_PEER_PORT, $peerPort); - - // "Insert" the data set - $this->getDatabaseInstance()->queryInsertDataSet($dataSetInstance); - } - - /** - * Purges old entries of given socket resource. We use the IP address from that resource. - * - * @param $socketResource A valid socket resource - * @return void - * @throws InvalidSocketException If the socket resource was invalid - */ - public function purgeOldEntriesBySocketResource ($socketResource) { - // Get peer name - if (!socket_getpeername($socketResource, $peerName, $peerPort)) { - // Get last error - $lastError = socket_last_error($socketResource); - - // Doesn't work! - throw new InvalidSocketException(array($this, gettype($socketResource), $lastError, socket_strerror($lastError)), BaseListener::EXCEPTION_INVALID_SOCKET); - } // END - if - } -} - -// [EOF] +// @DEPRECATED ?> diff --git a/application/hub/main/factories/states/peer/class_PeerStateFactory.php b/application/hub/main/factories/states/peer/class_PeerStateFactory.php index a8db17ac6..eff9b8922 100644 --- a/application/hub/main/factories/states/peer/class_PeerStateFactory.php +++ b/application/hub/main/factories/states/peer/class_PeerStateFactory.php @@ -86,7 +86,7 @@ class PeerStateFactory extends ObjectFactory { // Is the instance null? if (is_null(self::$tableInstance)) { // Get a new one - self::$tableInstance = ObjectFactory::createObjectByConfiguredName('peer_state_lookup_table_class'); + self::$tableInstance = ObjectFactory::createObjectByConfiguredName('node_state_lookup_table_class'); } // END - if // Return it diff --git a/application/hub/main/listener/tcp/class_TcpListener.php b/application/hub/main/listener/tcp/class_TcpListener.php index bdc20b462..a1f87a766 100644 --- a/application/hub/main/listener/tcp/class_TcpListener.php +++ b/application/hub/main/listener/tcp/class_TcpListener.php @@ -146,7 +146,7 @@ class TcpListener extends BaseListener implements Listenable { $this->registerServerSocketResource($mainSocket); // Initialize the peer pool instance - $poolInstance = ObjectFactory::createObjectByConfiguredName('peer_pool_class', array($this)); + $poolInstance = ObjectFactory::createObjectByConfiguredName('node_pool_class', array($this)); // Add main socket $poolInstance->addPeer($mainSocket); diff --git a/application/hub/main/listener/tcp/decorators/class_ClientTcpListenerDecorator.php b/application/hub/main/listener/tcp/decorators/class_ClientTcpListenerDecorator.php new file mode 100644 index 000000000..f456e009d --- /dev/null +++ b/application/hub/main/listener/tcp/decorators/class_ClientTcpListenerDecorator.php @@ -0,0 +1,96 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 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 . + */ +class ClientTcpListenerDecorator extends BaseListenerDecorator implements Listenable { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + + // Set listener type + $this->setListenerType('peer'); + } + + /** + * Creates an instance of this class + * + * @param $listenerInstance A Listener instance + * @return $decoratorInstance An instance a prepared listener decorator class + */ + public static final function createClientTcpListenerDecorator (Listenable $listenerInstance) { + // Get new instance + $decoratorInstance = new ClientTcpListenerDecorator(); + + // Set the application instance + $decoratorInstance->setListenerInstance($listenerInstance); + + // Return the prepared instance + return $decoratorInstance; + } + + /** + * Initializes the listener by setting up the required socket server + * + * @return void + */ + public function initListener () { + $this->partialStub('WARNING: This method should not be called.'); + } + + /** + * "Listens" for incoming network packages + * + * @return void + */ + public function doListen () { + // Handle generic TCP package + $this->getListenerInstance()->doListen(); + + // Handle peer TCP package + $this->partialStub('Need to handle peer TCP package.'); + } + + /** + * Checks wether the listener would accept the given package data array + * + * @param $packageData Raw package data + * @return $accepts Wether this listener does accept + */ + public function ifListenerAcceptsPackageData (array $packageData) { + // Get a tags instance + $tagsInstance = PackageTagsFactory::createPackageTagsInstance(); + + // So is the package accepted with this listener? + $accepts = $tagsInstance->ifPackageDataIsAcceptedByListener($packageData, $this); + + // Return the result + return $accepts; + } +} + +// [EOF] +?> diff --git a/application/hub/main/listener/tcp/decorators/class_PeerTcpListenerDecorator.php b/application/hub/main/listener/tcp/decorators/class_PeerTcpListenerDecorator.php index fbcbaaa66..f551ef47b 100644 --- a/application/hub/main/listener/tcp/decorators/class_PeerTcpListenerDecorator.php +++ b/application/hub/main/listener/tcp/decorators/class_PeerTcpListenerDecorator.php @@ -1,96 +1,3 @@ - * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 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 . - */ -class PeerTcpListenerDecorator extends BaseListenerDecorator implements Listenable { - /** - * Protected constructor - * - * @return void - */ - protected function __construct () { - // Call parent constructor - parent::__construct(__CLASS__); - - // Set listener type - $this->setListenerType('peer'); - } - - /** - * Creates an instance of this class - * - * @param $listenerInstance A Listener instance - * @return $decoratorInstance An instance a prepared listener decorator class - */ - public static final function createPeerTcpListenerDecorator (Listenable $listenerInstance) { - // Get new instance - $decoratorInstance = new PeerTcpListenerDecorator(); - - // Set the application instance - $decoratorInstance->setListenerInstance($listenerInstance); - - // Return the prepared instance - return $decoratorInstance; - } - - /** - * Initializes the listener by setting up the required socket server - * - * @return void - */ - public function initListener () { - $this->partialStub('WARNING: This method should not be called.'); - } - - /** - * "Listens" for incoming network packages - * - * @return void - */ - public function doListen () { - // Handle generic TCP package - $this->getListenerInstance()->doListen(); - - // Handle peer TCP package - $this->partialStub('Need to handle peer TCP package.'); - } - - /** - * Checks wether the listener would accept the given package data array - * - * @param $packageData Raw package data - * @return $accepts Wether this listener does accept - */ - public function ifListenerAcceptsPackageData (array $packageData) { - // Get a tags instance - $tagsInstance = PackageTagsFactory::createPackageTagsInstance(); - - // So is the package accepted with this listener? - $accepts = $tagsInstance->ifPackageDataIsAcceptedByListener($packageData, $this); - - // Return the result - return $accepts; - } -} - -// [EOF] +// @DEPRECATED ?> diff --git a/application/hub/main/listener/udp/decorators/class_ClientUdpListenerDecorator.php b/application/hub/main/listener/udp/decorators/class_ClientUdpListenerDecorator.php new file mode 100644 index 000000000..6e6da327f --- /dev/null +++ b/application/hub/main/listener/udp/decorators/class_ClientUdpListenerDecorator.php @@ -0,0 +1,96 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 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 . + */ +class ClientUdpListenerDecorator extends BaseListenerDecorator implements Listenable { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + + // Set listener type + $this->setListenerType('peer'); + } + + /** + * Creates an instance of this class + * + * @param $listenerInstance A Listener instance + * @return $decoratorInstance An instance a prepared listener decorator class + */ + public static final function createClientUdpListenerDecorator (Listenable $listenerInstance) { + // Get new instance + $decoratorInstance = new ClientUdpListenerDecorator(); + + // Set the application instance + $decoratorInstance->setListenerInstance($listenerInstance); + + // Return the prepared instance + return $decoratorInstance; + } + + /** + * Initializes the listener by setting up the required socket server + * + * @return void + */ + public function initListener () { + $this->partialStub('WARNING: This method should not be called.'); + } + + /** + * "Listens" for incoming network packages + * + * @return void + */ + public function doListen () { + // Handle generic UDP packages first + $this->getListenerInstance()->doListen(); + + // Handle this peer UDP package + $this->partialStub('Need to handle peer UDP package.'); + } + + /** + * Checks wether the listener would accept the given package data array + * + * @param $packageData Raw package data + * @return $accepts Wether this listener does accept + */ + function ifListenerAcceptsPackageData (array $packageData) { + // Get a tags instance + $tagsInstance = PackageTagsFactory::createPackageTagsInstance(); + + // So is the package accepted with this listener? + $accepts = $tagsInstance->ifPackageDataIsAcceptedByListener($packageData, $this); + + // Return the result + return $accepts; + } +} + +// [EOF] +?> diff --git a/application/hub/main/listener/udp/decorators/class_PeerUdpListenerDecorator.php b/application/hub/main/listener/udp/decorators/class_PeerUdpListenerDecorator.php index 6459dd2e5..f551ef47b 100644 --- a/application/hub/main/listener/udp/decorators/class_PeerUdpListenerDecorator.php +++ b/application/hub/main/listener/udp/decorators/class_PeerUdpListenerDecorator.php @@ -1,96 +1,3 @@ - * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 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 . - */ -class PeerUdpListenerDecorator extends BaseListenerDecorator implements Listenable { - /** - * Protected constructor - * - * @return void - */ - protected function __construct () { - // Call parent constructor - parent::__construct(__CLASS__); - - // Set listener type - $this->setListenerType('peer'); - } - - /** - * Creates an instance of this class - * - * @param $listenerInstance A Listener instance - * @return $decoratorInstance An instance a prepared listener decorator class - */ - public static final function createPeerUdpListenerDecorator (Listenable $listenerInstance) { - // Get new instance - $decoratorInstance = new PeerUdpListenerDecorator(); - - // Set the application instance - $decoratorInstance->setListenerInstance($listenerInstance); - - // Return the prepared instance - return $decoratorInstance; - } - - /** - * Initializes the listener by setting up the required socket server - * - * @return void - */ - public function initListener () { - $this->partialStub('WARNING: This method should not be called.'); - } - - /** - * "Listens" for incoming network packages - * - * @return void - */ - public function doListen () { - // Handle generic UDP packages first - $this->getListenerInstance()->doListen(); - - // Handle this peer UDP package - $this->partialStub('Need to handle peer UDP package.'); - } - - /** - * Checks wether the listener would accept the given package data array - * - * @param $packageData Raw package data - * @return $accepts Wether this listener does accept - */ - function ifListenerAcceptsPackageData (array $packageData) { - // Get a tags instance - $tagsInstance = PackageTagsFactory::createPackageTagsInstance(); - - // So is the package accepted with this listener? - $accepts = $tagsInstance->ifPackageDataIsAcceptedByListener($packageData, $this); - - // Return the result - return $accepts; - } -} - -// [EOF] +// @DEPRECATED ?> diff --git a/application/hub/main/lookup/peer/class_NodeStateLookupTable.php b/application/hub/main/lookup/peer/class_NodeStateLookupTable.php new file mode 100644 index 000000000..89ff71284 --- /dev/null +++ b/application/hub/main/lookup/peer/class_NodeStateLookupTable.php @@ -0,0 +1,104 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 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 . + */ +class NodeStateLookupTable extends BaseLookupTable implements LookupablePeerState { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Creates an instance of this class + * + * @return $tableInstance An instance of a Lookupable class + */ + public static final function createNodeStateLookupTable () { + // Get new instance + $tableInstance = new NodeStateLookupTable(); + + // Get a database wrapper instance + $wrapperInstance = ObjectFactory::createObjectByConfiguredName('node_state_lookup_db_wrapper_class'); + + // Set it for later re-use + $tableInstance->setWrapperInstance($wrapperInstance); + + // Return the prepared instance + return $tableInstance; + } + + /** + * Checks wether given 'sender' is a new peer + * + * @param $packageData Raw package data + * @return $isNewPeer Wether 'sender' is a new peer to this node + */ + public function isSenderNewPeer (array $packageData) { + // Get our wrapper instance and ask for it + $isNewPeer = $this->getWrapperInstance()->isSenderNewPeer($packageData); + + // Return it + return $isNewPeer; + } + + /** + * Registers a peer with given package data. We use the session id from it + * + * @param $packageData Valid raw package data + * @param $socketResource A valid socket resource + * @return void + */ + public function registerPeerByPackageData (array $packageData, $socketResource) { + // Just handle it over + $this->getWrapperInstance()->registerPeerByPackageData($packageData, $socketResource); + } + + /** + * Registers the given peer state and raw package data + * + * @param $stateInstance A PeerStateable class instance + * @param $packageData Valid package data array + * @return void + */ + public function registerPeerState (PeerStateable $stateInstance, array $packageData) { + die(__METHOD__."\n"); + } + + /** + * Purges old entries of given socket resource. We use the IP address from that resource. + * + * @param $socketResource A valid socket resource + * @return void + */ + public function purgeOldEntriesBySocketResource ($socketResource) { + // Just handle it over + $this->getWrapperInstance()->purgeOldEntriesBySocketResource($socketResource); + } +} + +// [EOF] +?> diff --git a/application/hub/main/lookup/peer/class_PeerStateLookupTable.php b/application/hub/main/lookup/peer/class_PeerStateLookupTable.php index 068d588a5..f551ef47b 100644 --- a/application/hub/main/lookup/peer/class_PeerStateLookupTable.php +++ b/application/hub/main/lookup/peer/class_PeerStateLookupTable.php @@ -1,104 +1,3 @@ - * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 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 . - */ -class PeerStateLookupTable extends BaseLookupTable implements LookupablePeerState { - /** - * Protected constructor - * - * @return void - */ - protected function __construct () { - // Call parent constructor - parent::__construct(__CLASS__); - } - - /** - * Creates an instance of this class - * - * @return $tableInstance An instance of a Lookupable class - */ - public static final function createPeerStateLookupTable () { - // Get new instance - $tableInstance = new PeerStateLookupTable(); - - // Get a database wrapper instance - $wrapperInstance = ObjectFactory::createObjectByConfiguredName('peer_state_lookup_db_wrapper_class'); - - // Set it for later re-use - $tableInstance->setWrapperInstance($wrapperInstance); - - // Return the prepared instance - return $tableInstance; - } - - /** - * Checks wether given 'sender' is a new peer - * - * @param $packageData Raw package data - * @return $isNewPeer Wether 'sender' is a new peer to this node - */ - public function isSenderNewPeer (array $packageData) { - // Get our wrapper instance and ask for it - $isNewPeer = $this->getWrapperInstance()->isSenderNewPeer($packageData); - - // Return it - return $isNewPeer; - } - - /** - * Registers a peer with given package data. We use the session id from it - * - * @param $packageData Valid raw package data - * @param $socketResource A valid socket resource - * @return void - */ - public function registerPeerByPackageData (array $packageData, $socketResource) { - // Just handle it over - $this->getWrapperInstance()->registerPeerByPackageData($packageData, $socketResource); - } - - /** - * Registers the given peer state and raw package data - * - * @param $stateInstance A PeerStateable class instance - * @param $packageData Valid package data array - * @return void - */ - public function registerPeerState (PeerStateable $stateInstance, array $packageData) { - die(__METHOD__."\n"); - } - - /** - * Purges old entries of given socket resource. We use the IP address from that resource. - * - * @param $socketResource A valid socket resource - * @return void - */ - public function purgeOldEntriesBySocketResource ($socketResource) { - // Just handle it over - $this->getWrapperInstance()->purgeOldEntriesBySocketResource($socketResource); - } -} - -// [EOF] +// @DEPRECATED ?> diff --git a/application/hub/main/nodes/class_BaseHubNode.php b/application/hub/main/nodes/class_BaseHubNode.php index eace6673e..fbe8f50df 100644 --- a/application/hub/main/nodes/class_BaseHubNode.php +++ b/application/hub/main/nodes/class_BaseHubNode.php @@ -540,7 +540,7 @@ class BaseHubNode extends BaseHubSystem implements Updateable { $this->getListenerPoolInstance()->addListener($decoratorInstance); // Get a decorator class - $decoratorInstance = ObjectFactory::createObjectByConfiguredName('peer_tcp_listener_class', array($listenerInstance)); + $decoratorInstance = ObjectFactory::createObjectByConfiguredName('client_tcp_listener_class', array($listenerInstance)); // Add this listener to the pool $this->getListenerPoolInstance()->addListener($decoratorInstance); @@ -567,7 +567,7 @@ class BaseHubNode extends BaseHubSystem implements Updateable { $this->getListenerPoolInstance()->addListener($decoratorInstance); // Get a decorator class - $decoratorInstance = ObjectFactory::createObjectByConfiguredName('peer_udp_listener_class', array($listenerInstance)); + $decoratorInstance = ObjectFactory::createObjectByConfiguredName('client_udp_listener_class', array($listenerInstance)); // Add this listener to the pool $this->getListenerPoolInstance()->addListener($decoratorInstance); diff --git a/application/hub/main/states/peer/new/class_NewConnectionNodeState.php b/application/hub/main/states/peer/new/class_NewConnectionNodeState.php new file mode 100644 index 000000000..b6270bff5 --- /dev/null +++ b/application/hub/main/states/peer/new/class_NewConnectionNodeState.php @@ -0,0 +1,50 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 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 . + */ +class NewConnectionNodeState extends BasePeerState implements PeerStateable { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Creates an instance of this class + * + * @return $stateInstance An instance of a PeerStateable class + */ + public static final function createNewConnectionNodeState () { + // Get new instance + $stateInstance = new NewConnectionNodeState(); + + // Return the prepared instance + return $stateInstance; + } +} + +// [EOF] +?> diff --git a/application/hub/main/states/peer/new/class_NewConnectionPeerState.php b/application/hub/main/states/peer/new/class_NewConnectionPeerState.php index d72b8a359..f551ef47b 100644 --- a/application/hub/main/states/peer/new/class_NewConnectionPeerState.php +++ b/application/hub/main/states/peer/new/class_NewConnectionPeerState.php @@ -1,50 +1,3 @@ - * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 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 . - */ -class NewConnectionPeerState extends BasePeerState implements PeerStateable { - /** - * Protected constructor - * - * @return void - */ - protected function __construct () { - // Call parent constructor - parent::__construct(__CLASS__); - } - - /** - * Creates an instance of this class - * - * @return $stateInstance An instance of a PeerStateable class - */ - public static final function createNewConnectionPeerState () { - // Get new instance - $stateInstance = new NewConnectionPeerState(); - - // Return the prepared instance - return $stateInstance; - } -} - -// [EOF] +// @DEPRECATED ?> -- 2.39.5