From: Roland Haeder Date: Sat, 15 Feb 2014 12:09:55 +0000 (+0100) Subject: Some improvements: X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=a25d98d4afab8260e3dc706b6322b4c3aeb02a0c;p=hub.git Some improvements: - renamed BaseHubDiscovery -> BaseNodeDiscovery - moved list-related code to BaseNodeDiscovery as this is more generic code - Updated interface Discoverable with a missing public method from PackageRecipientDiscovery - Other minor improvements Signed-off-by: Roland Haeder --- diff --git a/application/hub/interfaces/discovery/class_Discoverable.php b/application/hub/interfaces/discovery/class_Discoverable.php index aa582a616..b10b10dc2 100644 --- a/application/hub/interfaces/discovery/class_Discoverable.php +++ b/application/hub/interfaces/discovery/class_Discoverable.php @@ -22,6 +22,26 @@ * along with this program. If not, see . */ interface Discoverable extends FrameworkInterface { + /** + * "Getter" for recipient iterator + * + * @return $iteratorInstance An instance of a Iterateable object + */ + function getIterator (); + + /** + * Clears all recipients for e.g. another package to deliver + * + * @return void + */ + function clearRecipients (); + + /** + * Checks whether the recipient list is empty + * + * @return $isEmpty Whether the recipient list is empty + */ + function isRecipientListEmpty (); } // [EOF] diff --git a/application/hub/main/discovery/class_BaseHubDiscovery.php b/application/hub/main/discovery/class_BaseHubDiscovery.php deleted file mode 100644 index 90b53869a..000000000 --- a/application/hub/main/discovery/class_BaseHubDiscovery.php +++ /dev/null @@ -1,61 +0,0 @@ - - * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Core Developer Team - * @license GNU GPL 3.0 or any newer version - * @link http://www.shipsimu.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 BaseHubDiscovery extends BaseDiscovery implements Discoverable { - /** - * Protected constructor - * - * @param $className Real class name - * @return void - */ - protected function __construct ($className) { - // Call parent constructor - parent::__construct($className); - } - - /** - * Determines the protoctol name - * - * @param $packageData Valid package data - * @return $protocolName Name of used protocol (TCP/UDP/etc.) - */ - protected function determineProtocolByPackageData (array $packageData) { - // First we need a tags instance - $tagsInstance = PackageTagsFactory::createPackageTagsInstance(); - - /* - * We need to decide here which socket (TCP or UDP) should be used for - * the actual data transmission. In this process we will find out if - * the recipient of this package has already a known (registered) socket - * and if so we can re-use it. If there is no socket registered, we try - * to make a new connection (TCP or UDP) to the given IP:port. - */ - $protocolName = $tagsInstance->chooseProtocolFromPackageData($packageData); - - // Return it - return $protocolName; - } -} - -// [EOF] -?> diff --git a/application/hub/main/discovery/class_BaseNodeDiscovery.php b/application/hub/main/discovery/class_BaseNodeDiscovery.php new file mode 100644 index 000000000..a608b7b07 --- /dev/null +++ b/application/hub/main/discovery/class_BaseNodeDiscovery.php @@ -0,0 +1,105 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Core Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.shipsimu.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 BaseNodeDiscovery extends BaseDiscovery implements Discoverable { + /** + * Protected constructor + * + * @param $className Real class name + * @return void + */ + protected function __construct ($className) { + // Call parent constructor + parent::__construct($className); + + /* + * Get recipients list instance and set it here for all discovery + * implementations. + */ + $listInstance = RecipientListFactory::createRecipientListInstance(); + $this->setListInstance($listInstance); + } + + /** + * Determines the protoctol name + * + * @param $packageData Valid package data + * @return $protocolName Name of used protocol (TCP/UDP/etc.) + */ + protected function determineProtocolByPackageData (array $packageData) { + // First we need a tags instance + $tagsInstance = PackageTagsFactory::createPackageTagsInstance(); + + /* + * We need to decide here which socket (TCP or UDP) should be used for + * the actual data transmission. In this process we will find out if + * the recipient of this package has already a known (registered) socket + * and if so we can re-use it. If there is no socket registered, we try + * to make a new connection (TCP or UDP) to the given IP:port. + */ + $protocolName = $tagsInstance->chooseProtocolFromPackageData($packageData); + + // Return it + return $protocolName; + } + + /** + * "Getter" for recipient iterator + * + * @return$iteratorInstance An instance of a Iterateable object + */ + public final function getIterator () { + // Get iterator from it + $iteratorInstance = $this->getListInstance()->getIterator(); + + // Return it + return $iteratorInstance; + } + + /** + * Clears all recipients for e.g. another package to deliver. This method + * simply clears the inner list instance. + * + * @return void + */ + public final function clearRecipients () { + // Clear the list + $this->getListInstance()->clearList(); + } + + /** + * Checks whether the recipient list is empty + * + * @return $isEmpty Whether the recipient list is empty + */ + public final function isRecipientListEmpty () { + // Check it ... + $isEmpty = ($this->getListInstance()->count() == 0); + + // Return it + return $isEmpty; + } +} + +// [EOF] +?> diff --git a/application/hub/main/discovery/dht/class_DhtRecipientDiscovery.php b/application/hub/main/discovery/dht/class_DhtRecipientDiscovery.php index c9726c48a..3ca916f90 100644 --- a/application/hub/main/discovery/dht/class_DhtRecipientDiscovery.php +++ b/application/hub/main/discovery/dht/class_DhtRecipientDiscovery.php @@ -21,7 +21,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -class DhtRecipientDiscovery extends BaseHubDiscovery implements DiscoverableDhtRecipient, Registerable { +class DhtRecipientDiscovery extends BaseNodeDiscovery implements DiscoverableDhtRecipient, Registerable { /** * Protected constructor * diff --git a/application/hub/main/discovery/package/class_PackageRecipientDiscovery.php b/application/hub/main/discovery/package/class_PackageRecipientDiscovery.php index d775e9995..bfbde19d8 100644 --- a/application/hub/main/discovery/package/class_PackageRecipientDiscovery.php +++ b/application/hub/main/discovery/package/class_PackageRecipientDiscovery.php @@ -21,7 +21,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -class PackageRecipientDiscovery extends BaseHubDiscovery implements DiscoverableNodeRecipient, Registerable { +class PackageRecipientDiscovery extends BaseNodeDiscovery implements DiscoverableNodeRecipient, Registerable { /** * Protected constructor * @@ -41,13 +41,6 @@ class PackageRecipientDiscovery extends BaseHubDiscovery implements Discoverable // Get an instance of this class $discoveryInstance = new PackageRecipientDiscovery(); - // Get recipients list instance and set it - $listInstance = RecipientListFactory::createRecipientListInstance(); - $discoveryInstance->setListInstance($listInstance); - - // Output debug message - self::createDebugInstance(__CLASS__)->debugOutput('RECIPIENT-DISCOVERY[' . __LINE__ . ']: Initialized.'); - // Return the prepared instance return $discoveryInstance; } @@ -121,43 +114,6 @@ class PackageRecipientDiscovery extends BaseHubDiscovery implements Discoverable $this->getListInstance()->addEntry('ip_port', $decodedData[NetworkPackage::PACKAGE_DATA_RECIPIENT]); } } - - /** - * "Getter" for recipient iterator - * - * @return $iteratorInstance An instance of a Iterateable object - */ - public function getIterator () { - // Get iterator from it - $iteratorInstance = $this->getListInstance()->getIterator(); - - // Return it - return $iteratorInstance; - } - - /** - * Checks whether the recipient list is empty - * - * @return $isEmpty Whether the recipient list is empty - */ - public function isRecipientListEmpty () { - // Check it ... - $isEmpty = ($this->getListInstance()->count() == 0); - - // Return it - return $isEmpty; - } - - /** - * Clears all recipients for e.g. another package to deliver. This method - * simply clears the inner list instance. - * - * @return void - */ - public function clearRecipients () { - // Clear the list - $this->getListInstance()->clearList(); - } } // [EOF] diff --git a/application/hub/main/discovery/socket/class_PackageSocketDiscovery.php b/application/hub/main/discovery/socket/class_PackageSocketDiscovery.php index 1872ab64f..26972e2da 100644 --- a/application/hub/main/discovery/socket/class_PackageSocketDiscovery.php +++ b/application/hub/main/discovery/socket/class_PackageSocketDiscovery.php @@ -21,7 +21,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -class PackageSocketDiscovery extends BaseHubDiscovery implements DiscoverableSocket, Registerable { +class PackageSocketDiscovery extends BaseNodeDiscovery implements DiscoverableSocket, Registerable { /** * Protected constructor *