From 8275e7d2152d529e9621dc7f1f5dc8f480931f54 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Mon, 3 Aug 2009 23:11:43 +0000 Subject: [PATCH] News Updated, filters renamed/commented: - NEWS file updated to reflact some latest changes - Filters for newly added 'shutdown' filter chain added - The main while() loop is commented out, which is fine at the momement - Some filter class templates renamed - Filter chain 'hub_activation' renamed to 'activation' --- .gitattributes | 8 +- application/hub/class_ApplicationHelper.php | 3 +- application/hub/config.php | 6 + .../console/class_HubConsoleMainCommand.php | 8 +- .../class_HubConsoleDefaultNewsController.php | 32 +++- .../{class_ => class_HubActivation} | 2 +- .../bootstrap/{class_ => class_HubBootstrap} | 0 .../class_HubBootstrapAquireHubIdFilter.php | 2 +- ...s_HubBootstrapExtraBootstrappingFilter.php | 2 +- .../class_HubBootstrapGenSessionIdFilter.php | 2 +- .../class_HubBootstrapInitQueuesFilter.php | 2 +- .../class_HubBootstrapListenerPoolFilter.php | 2 +- ...lass_HubBootstrapRestoreNodeListFilter.php | 2 +- application/hub/main/filter/class_ | 1 + .../hub/main/filter/console/class_Console | 1 + .../class_ConsoleWelcomeTeaserFilter.php | 2 +- .../hub/main/filter/shutdown/.htaccess | 2 + .../main/filter/shutdown/class_HubShutdown | 146 +++++++++++++++++ .../class_HubShutdownFlushNodeListFilter.php | 146 +++++++++++++++++ .../class_HubShutdownShutdownNodeFilter.php | 148 ++++++++++++++++++ .../listener/class_DefaultListenerPool.php | 3 - docs/NEWS | 10 ++ 22 files changed, 508 insertions(+), 22 deletions(-) rename application/hub/main/filter/activation/{class_ => class_HubActivation} (99%) rename application/hub/main/filter/bootstrap/{class_ => class_HubBootstrap} (100%) create mode 100644 application/hub/main/filter/shutdown/.htaccess create mode 100644 application/hub/main/filter/shutdown/class_HubShutdown create mode 100644 application/hub/main/filter/shutdown/class_HubShutdownFlushNodeListFilter.php create mode 100644 application/hub/main/filter/shutdown/class_HubShutdownShutdownNodeFilter.php diff --git a/.gitattributes b/.gitattributes index 2888cdc48..093115c13 100644 --- a/.gitattributes +++ b/.gitattributes @@ -60,9 +60,9 @@ application/hub/main/database/wrapper/class_NodeInformationDatabaseWrapper.php - application/hub/main/database/wrapper/class_NodeListDatabaseWrapper.php -text application/hub/main/filter/.htaccess -text application/hub/main/filter/activation/.htaccess -text -application/hub/main/filter/activation/class_ -text +application/hub/main/filter/activation/class_HubActivation -text application/hub/main/filter/bootstrap/.htaccess -text -application/hub/main/filter/bootstrap/class_ -text +application/hub/main/filter/bootstrap/class_HubBootstrap -text application/hub/main/filter/bootstrap/class_HubBootstrapAquireHubIdFilter.php -text application/hub/main/filter/bootstrap/class_HubBootstrapExtraBootstrappingFilter.php -text application/hub/main/filter/bootstrap/class_HubBootstrapGenSessionIdFilter.php -text @@ -76,6 +76,10 @@ application/hub/main/filter/console/class_ConsoleWelcomeTeaserFilter.php -text application/hub/main/filter/node/.htaccess -text application/hub/main/filter/node/class_Node -text application/hub/main/filter/node/class_NodeInitializationFilter.php -text +application/hub/main/filter/shutdown/.htaccess -text +application/hub/main/filter/shutdown/class_HubShutdown -text +application/hub/main/filter/shutdown/class_HubShutdownFlushNodeListFilter.php -text +application/hub/main/filter/shutdown/class_HubShutdownShutdownNodeFilter.php -text application/hub/main/listener/.htaccess -text application/hub/main/listener/class_ -text application/hub/main/listener/class_BaseListener.php -text diff --git a/application/hub/class_ApplicationHelper.php b/application/hub/class_ApplicationHelper.php index 61afb7bf9..74f32fea9 100644 --- a/application/hub/class_ApplicationHelper.php +++ b/application/hub/class_ApplicationHelper.php @@ -208,8 +208,7 @@ class ApplicationHelper extends BaseFrameworkSystem implements ManageableApplica // -------------------------- Shutdown phase -------------------------- // Shutting down the hub by saying "good bye" to all connected clients // and other hubs, flushing all queues and caches. - $this->controllerInstance->executeShutdownFilters($requestInstance, $responseInstance); - //$nodeInstance->doShutdown(); + $this->getControllerInstance()->executeShutdownFilters($requestInstance, $responseInstance); } /** diff --git a/application/hub/config.php b/application/hub/config.php index 075390038..977981122 100644 --- a/application/hub/config.php +++ b/application/hub/config.php @@ -123,6 +123,12 @@ $cfg->setConfigEntry('hub_bootstrap_extra_bootstrap_filter', 'HubBootstrapExtraB // CFG: HUB-BOOTSTRAP-LISTENER-POOL-FILTER $cfg->setConfigEntry('hub_bootstrap_listener_pool_filter', 'HubBootstrapListenerPoolFilter'); +// CFG: HUB-SHUTDOWN-FLUSH-NODE-LIST-FILTER +$cfg->setConfigEntry('hub_shutdown_flush_node_list_filter', 'HubShutdownFlushNodeListFilter'); + +// CFG: HUB-SHUTDOWN-SHUTDOWN-NODE-FILTER +$cfg->setConfigEntry('hub_shutdown_shutdown_node_filter', 'HubShutdownShutdownNodeFilter'); + // CFG: NEWS-READER-CLASS $cfg->setConfigEntry('news_reader_class', 'ConsoleNewsReader'); diff --git a/application/hub/main/commands/console/class_HubConsoleMainCommand.php b/application/hub/main/commands/console/class_HubConsoleMainCommand.php index 996298827..13bec9ac1 100644 --- a/application/hub/main/commands/console/class_HubConsoleMainCommand.php +++ b/application/hub/main/commands/console/class_HubConsoleMainCommand.php @@ -98,8 +98,8 @@ class HubConsoleMainCommand extends BaseCommand implements Commandable { // This is the main loop. Queried calls should come back here very fast // so the whole application runs on nice speed. This while-loop goes // until the hub is no longer active. - while ($nodeInstance->isHubActive()) { - } // END - while + //while ($nodeInstance->isHubActive()) { + //} // END - while } /** @@ -124,6 +124,10 @@ class HubConsoleMainCommand extends BaseCommand implements Commandable { $controllerInstance->addBootstrapFilter(ObjectFactory::createObjectByConfiguredName('hub_bootstrap_listener_pool_filter')); // Add hub activation filters + + // Add shutdown filters + $controllerInstance->addShutdownFilter(ObjectFactory::createObjectByConfiguredName('hub_shutdown_flush_node_list_filter')); + $controllerInstance->addShutdownFilter(ObjectFactory::createObjectByConfiguredName('hub_shutdown_shutdown_node_filter')); } } diff --git a/application/hub/main/controller/console/class_HubConsoleDefaultNewsController.php b/application/hub/main/controller/console/class_HubConsoleDefaultNewsController.php index ed9fbe8be..9c2068eb6 100644 --- a/application/hub/main/controller/console/class_HubConsoleDefaultNewsController.php +++ b/application/hub/main/controller/console/class_HubConsoleDefaultNewsController.php @@ -31,9 +31,10 @@ class HubConsoleDefaultNewsController extends BaseController implements Controll // Call parent constructor parent::__construct(__CLASS__); - // Init additional filter groups - $this->initFilterChain('bootstrap'); - $this->initFilterChain('hub_activation'); + // Init additional filter chains + foreach (array('bootstrap', 'activation', 'shutdown') as $filterChain) { + $this->initFilterChain($filterChain); + } // END - foreach } /** @@ -115,7 +116,7 @@ class HubConsoleDefaultNewsController extends BaseController implements Controll * @return void */ public function addHubActivationFilter (Filterable $filterInstance) { - $this->addFilter('hub_activation', $filterInstance); + $this->addFilter('activation', $filterInstance); } /** @@ -126,7 +127,28 @@ class HubConsoleDefaultNewsController extends BaseController implements Controll * @return void */ public function executeHubActivationFilters (Requestable $requestInstance, Responseable $responseInstance) { - $this->executeFilters('hub_activation', $requestInstance, $responseInstance); + $this->executeFilters('activation', $requestInstance, $responseInstance); + } + + /** + * Add a shutdown filter + * + * @param $filterInstance A Filterable class + * @return void + */ + public function addShutdownFilter (Filterable $filterInstance) { + $this->addFilter('shutdown', $filterInstance); + } + + /** + * Executes all shutdown filters + * + * @param $requestInstance A Requestable class + * @param $responseInstance A Responseable class + * @return void + */ + public function executeShutdownFilters (Requestable $requestInstance, Responseable $responseInstance) { + $this->executeFilters('shutdown', $requestInstance, $responseInstance); } } diff --git a/application/hub/main/filter/activation/class_ b/application/hub/main/filter/activation/class_HubActivation similarity index 99% rename from application/hub/main/filter/activation/class_ rename to application/hub/main/filter/activation/class_HubActivation index eae234f1f..5c3d3dd44 100644 --- a/application/hub/main/filter/activation/class_ +++ b/application/hub/main/filter/activation/class_HubActivation @@ -61,7 +61,7 @@ class HubActivation???Filter extends BaseFilter implements Filterable { if (is_null($nodeInstance)) { // Throws a FilterChainException to stop further processing throw new FilterChainException($this, self::EXCEPTION_FILTER_CHAIN_INTERCEPTED); - } // END - if + } // END if // Now do something $this->partialStub('Please implement this step.'); diff --git a/application/hub/main/filter/bootstrap/class_ b/application/hub/main/filter/bootstrap/class_HubBootstrap similarity index 100% rename from application/hub/main/filter/bootstrap/class_ rename to application/hub/main/filter/bootstrap/class_HubBootstrap diff --git a/application/hub/main/filter/bootstrap/class_HubBootstrapAquireHubIdFilter.php b/application/hub/main/filter/bootstrap/class_HubBootstrapAquireHubIdFilter.php index 7d3fed1bb..8046882d7 100644 --- a/application/hub/main/filter/bootstrap/class_HubBootstrapAquireHubIdFilter.php +++ b/application/hub/main/filter/bootstrap/class_HubBootstrapAquireHubIdFilter.php @@ -51,7 +51,7 @@ class HubBootstrapAquireHubIdFilter extends BaseFilter implements Filterable { * @param $requestInstance An instance of a class with an Requestable interface * @param $responseInstance An instance of a class with an Responseable interface * @return void - * @todo 0% done + * @throws FilterChainException If $nodeInstance is null (no NullPointerException here) */ public function execute (Requestable $requestInstance, Responseable $responseInstance) { // Get node instance diff --git a/application/hub/main/filter/bootstrap/class_HubBootstrapExtraBootstrappingFilter.php b/application/hub/main/filter/bootstrap/class_HubBootstrapExtraBootstrappingFilter.php index 9c77572a1..ed47a082f 100644 --- a/application/hub/main/filter/bootstrap/class_HubBootstrapExtraBootstrappingFilter.php +++ b/application/hub/main/filter/bootstrap/class_HubBootstrapExtraBootstrappingFilter.php @@ -51,7 +51,7 @@ class HubBootstrapExtraBootstrappingFilter extends BaseFilter implements Filtera * @param $requestInstance An instance of a class with an Requestable interface * @param $responseInstance An instance of a class with an Responseable interface * @return void - * @todo 0% done + * @throws FilterChainException If $nodeInstance is null (no NullPointerException here) */ public function execute (Requestable $requestInstance, Responseable $responseInstance) { // Get node instance diff --git a/application/hub/main/filter/bootstrap/class_HubBootstrapGenSessionIdFilter.php b/application/hub/main/filter/bootstrap/class_HubBootstrapGenSessionIdFilter.php index 7ebe0957f..62a8040b4 100644 --- a/application/hub/main/filter/bootstrap/class_HubBootstrapGenSessionIdFilter.php +++ b/application/hub/main/filter/bootstrap/class_HubBootstrapGenSessionIdFilter.php @@ -51,7 +51,7 @@ class HubBootstrapGenSessionIdFilter extends BaseFilter implements Filterable { * @param $requestInstance An instance of a class with an Requestable interface * @param $responseInstance An instance of a class with an Responseable interface * @return void - * @todo 0% done + * @throws FilterChainException If $nodeInstance is null (no NullPointerException here) */ public function execute (Requestable $requestInstance, Responseable $responseInstance) { // Get node instance diff --git a/application/hub/main/filter/bootstrap/class_HubBootstrapInitQueuesFilter.php b/application/hub/main/filter/bootstrap/class_HubBootstrapInitQueuesFilter.php index dff9651c6..27882b4c2 100644 --- a/application/hub/main/filter/bootstrap/class_HubBootstrapInitQueuesFilter.php +++ b/application/hub/main/filter/bootstrap/class_HubBootstrapInitQueuesFilter.php @@ -51,7 +51,7 @@ class HubBootstrapInitQueuesFilter extends BaseFilter implements Filterable { * @param $requestInstance An instance of a class with an Requestable interface * @param $responseInstance An instance of a class with an Responseable interface * @return void - * @todo 0% done + * @throws FilterChainException If $nodeInstance is null (no NullPointerException here) */ public function execute (Requestable $requestInstance, Responseable $responseInstance) { // Get node instance diff --git a/application/hub/main/filter/bootstrap/class_HubBootstrapListenerPoolFilter.php b/application/hub/main/filter/bootstrap/class_HubBootstrapListenerPoolFilter.php index c35aaef53..b083bcb40 100644 --- a/application/hub/main/filter/bootstrap/class_HubBootstrapListenerPoolFilter.php +++ b/application/hub/main/filter/bootstrap/class_HubBootstrapListenerPoolFilter.php @@ -51,7 +51,7 @@ class HubBootstrapListenerPoolFilter extends BaseFilter implements Filterable { * @param $requestInstance An instance of a class with an Requestable interface * @param $responseInstance An instance of a class with an Responseable interface * @return void - * @todo 0% done + * @throws FilterChainException If $nodeInstance is null (no NullPointerException here) */ public function execute (Requestable $requestInstance, Responseable $responseInstance) { // Get node instance diff --git a/application/hub/main/filter/bootstrap/class_HubBootstrapRestoreNodeListFilter.php b/application/hub/main/filter/bootstrap/class_HubBootstrapRestoreNodeListFilter.php index 82ad3c92a..b889d2b37 100644 --- a/application/hub/main/filter/bootstrap/class_HubBootstrapRestoreNodeListFilter.php +++ b/application/hub/main/filter/bootstrap/class_HubBootstrapRestoreNodeListFilter.php @@ -51,7 +51,7 @@ class HubBootstrapRestoreNodeListFilter extends BaseFilter implements Filterable * @param $requestInstance An instance of a class with an Requestable interface * @param $responseInstance An instance of a class with an Responseable interface * @return void - * @todo 0% done + * @throws FilterChainException If $nodeInstance is null (no NullPointerException here) */ public function execute (Requestable $requestInstance, Responseable $responseInstance) { // Get node instance diff --git a/application/hub/main/filter/class_ b/application/hub/main/filter/class_ index 405ba8ab8..382b6859d 100644 --- a/application/hub/main/filter/class_ +++ b/application/hub/main/filter/class_ @@ -51,6 +51,7 @@ class Hub!!!???Filter extends BaseFilter implements Filterable { * @param $requestInstance An instance of a class with an Requestable interface * @param $responseInstance An instance of a class with an Responseable interface * @return void + * @throws FilterChainException If $nodeInstance is null (no NullPointerException here) * @todo 0% done */ public function execute (Requestable $requestInstance, Responseable $responseInstance) { diff --git a/application/hub/main/filter/console/class_Console b/application/hub/main/filter/console/class_Console index 72f5657b2..6d5c26efe 100644 --- a/application/hub/main/filter/console/class_Console +++ b/application/hub/main/filter/console/class_Console @@ -51,6 +51,7 @@ class Console???Filter extends BaseFilter implements Filterable { * @param $requestInstance An instance of a class with an Requestable interface * @param $responseInstance An instance of a class with an Responseable interface * @return void + * @throws FilterChainException If $nodeInstance is null (no NullPointerException here) * @todo 0% done */ public function execute (Requestable $requestInstance, Responseable $responseInstance) { diff --git a/application/hub/main/filter/console/class_ConsoleWelcomeTeaserFilter.php b/application/hub/main/filter/console/class_ConsoleWelcomeTeaserFilter.php index 7f65b323c..065be4bf2 100644 --- a/application/hub/main/filter/console/class_ConsoleWelcomeTeaserFilter.php +++ b/application/hub/main/filter/console/class_ConsoleWelcomeTeaserFilter.php @@ -51,7 +51,7 @@ class ConsoleWelcomeTeaserFilter extends BaseFilter implements Filterable { * @param $requestInstance An instance of a class with an Requestable interface * @param $responseInstance An instance of a class with an Responseable interface * @return void - * @throws FilterChainException If the nodeInstance was not set + * @throws FilterChainException If $nodeInstance is null (no NullPointerException here) */ public function execute (Requestable $requestInstance, Responseable $responseInstance) { // Get node instance diff --git a/application/hub/main/filter/shutdown/.htaccess b/application/hub/main/filter/shutdown/.htaccess new file mode 100644 index 000000000..2effffd3a --- /dev/null +++ b/application/hub/main/filter/shutdown/.htaccess @@ -0,0 +1,2 @@ +Deny from all +Deny from all diff --git a/application/hub/main/filter/shutdown/class_HubShutdown b/application/hub/main/filter/shutdown/class_HubShutdown new file mode 100644 index 000000000..42421215c --- /dev/null +++ b/application/hub/main/filter/shutdown/class_HubShutdown @@ -0,0 +1,146 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Core 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 HubShutdown???Filter extends BaseFilter implements Filterable { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Creates an instance of this filter class + * + * @return $filterInstance An instance of this filter class + */ + public final static function createHubShutdown???Filter () { + // Get a new instance + $filterInstance = new HubShutdown???Filter(); + + // Return the instance + return $filterInstance; + } + + /** + * Executes the filter with given request and response objects + * + * @param $requestInstance An instance of a class with an Requestable interface + * @param $responseInstance An instance of a class with an Responseable interface + * @return void + * @throws FilterChainException If $nodeInstance is null (no NullPointerException here) + * @todo 0% done + */ + public function execute (Requestable $requestInstance, Responseable $responseInstance) { + // Get node instance + $nodeInstance = Registry::getRegistry()->getInstance('node'); + + // Sanity-check on it + if (is_null($nodeInstance)) { + // Throws a FilterChainException to stop further processing + throw new FilterChainException($this, self::EXCEPTION_FILTER_CHAIN_INTERCEPTED); + } // END - if + + // Now do something + $this->partialStub('Please implement this step.'); + } +} + +// [EOF] +?> + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Core 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 HubShutdown???Filter extends BaseFilter implements Filterable { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Creates an instance of this filter class + * + * @return $filterInstance An instance of this filter class + */ + public final static function createHubShutdown???Filter () { + // Get a new instance + $filterInstance = new HubShutdown???Filter(); + + // Return the instance + return $filterInstance; + } + + /** + * Executes the filter with given request and response objects + * + * @param $requestInstance An instance of a class with an Requestable interface + * @param $responseInstance An instance of a class with an Responseable interface + * @return void + * @throws FilterChainException If $nodeInstance is null (no NullPointerException here) + * @todo 0% done + */ + public function execute (Requestable $requestInstance, Responseable $responseInstance) { + // Get node instance + $nodeInstance = Registry::getRegistry()->getInstance('node'); + + // Sanity-check on it + if (is_null($nodeInstance)) { + // Throws a FilterChainException to stop further processing + throw new FilterChainException($this, self::EXCEPTION_FILTER_CHAIN_INTERCEPTED); + } // END - if + + // Now do something + $this->partialStub('Please implement this step.'); + } +} + +// [EOF] +?> diff --git a/application/hub/main/filter/shutdown/class_HubShutdownFlushNodeListFilter.php b/application/hub/main/filter/shutdown/class_HubShutdownFlushNodeListFilter.php new file mode 100644 index 000000000..bd1f1fc6c --- /dev/null +++ b/application/hub/main/filter/shutdown/class_HubShutdownFlushNodeListFilter.php @@ -0,0 +1,146 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Core 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 HubShutdownFlushNodeListFilter extends BaseFilter implements Filterable { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Creates an instance of this filter class + * + * @return $filterInstance An instance of this filter class + */ + public final static function createHubShutdownFlushNodeListFilter () { + // Get a new instance + $filterInstance = new HubShutdownFlushNodeListFilter(); + + // Return the instance + return $filterInstance; + } + + /** + * Executes the filter with given request and response objects + * + * @param $requestInstance An instance of a class with an Requestable interface + * @param $responseInstance An instance of a class with an Responseable interface + * @return void + * @throws FilterChainException If $nodeInstance is null (no NullPointerException please) + * @todo 0% done + */ + public function execute (Requestable $requestInstance, Responseable $responseInstance) { + // Get node instance + $nodeInstance = Registry::getRegistry()->getInstance('node'); + + // Sanity-check on it + if (is_null($nodeInstance)) { + // Throws a FilterChainException to stop further processing + throw new FilterChainException($this, self::EXCEPTION_FILTER_CHAIN_INTERCEPTED); + } // END - if + + // Now do something + $this->partialStub('Please implement this step.'); + } +} + +// [EOF] +?> + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Core 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 HubShutdownFlushNodeListFilter extends BaseFilter implements Filterable { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Creates an instance of this filter class + * + * @return $filterInstance An instance of this filter class + */ + public final static function createHubShutdownFlushNodeListFilter () { + // Get a new instance + $filterInstance = new HubShutdownFlushNodeListFilter(); + + // Return the instance + return $filterInstance; + } + + /** + * Executes the filter with given request and response objects + * + * @param $requestInstance An instance of a class with an Requestable interface + * @param $responseInstance An instance of a class with an Responseable interface + * @return void + * @throws FilterChainException If $nodeInstance is null (no NullPointerException please) + * @todo 0% done + */ + public function execute (Requestable $requestInstance, Responseable $responseInstance) { + // Get node instance + $nodeInstance = Registry::getRegistry()->getInstance('node'); + + // Sanity-check on it + if (is_null($nodeInstance)) { + // Throws a FilterChainException to stop further processing + throw new FilterChainException($this, self::EXCEPTION_FILTER_CHAIN_INTERCEPTED); + } // END - if + + // Now do something + $this->partialStub('Please implement this step.'); + } +} + +// [EOF] +?> diff --git a/application/hub/main/filter/shutdown/class_HubShutdownShutdownNodeFilter.php b/application/hub/main/filter/shutdown/class_HubShutdownShutdownNodeFilter.php new file mode 100644 index 000000000..19246bac1 --- /dev/null +++ b/application/hub/main/filter/shutdown/class_HubShutdownShutdownNodeFilter.php @@ -0,0 +1,148 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Core 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 HubShutdownShutdownNodeFilter extends BaseFilter implements Filterable { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Creates an instance of this filter class + * + * @return $filterInstance An instance of this filter class + */ + public final static function createHubShutdownShutdownNodeFilter () { + // Get a new instance + $filterInstance = new HubShutdownShutdownNodeFilter(); + + // Return the instance + return $filterInstance; + } + + /** + * Executes the filter with given request and response objects + * + * @param $requestInstance An instance of a class with an Requestable interface + * @param $responseInstance An instance of a class with an Responseable interface + * @return void + * @throws FilterChainException If $nodeInstance is null (no NullPointerException please) + */ + public function execute (Requestable $requestInstance, Responseable $responseInstance) { + // Get node instance + $nodeInstance = Registry::getRegistry()->getInstance('node'); + + // Sanity-check on it + if (is_null($nodeInstance)) { + // Throws a FilterChainException to stop further processing + throw new FilterChainException($this, self::EXCEPTION_FILTER_CHAIN_INTERCEPTED); + } // END - if + + // Shutdown the node. This should be the last line + $nodeInstance->doShutdown(); + } +} + +// [EOF] +?> + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Core 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 HubShutdownShutdownNodeFilter extends BaseFilter implements Filterable { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Creates an instance of this filter class + * + * @return $filterInstance An instance of this filter class + */ + public final static function createHubShutdownShutdownNodeFilter () { + // Get a new instance + $filterInstance = new HubShutdownShutdownNodeFilter(); + + // Return the instance + return $filterInstance; + } + + /** + * Executes the filter with given request and response objects + * + * @param $requestInstance An instance of a class with an Requestable interface + * @param $responseInstance An instance of a class with an Responseable interface + * @return void + * @throws FilterChainException If $nodeInstance is null (no NullPointerException please) + */ + public function execute (Requestable $requestInstance, Responseable $responseInstance) { + // Get node instance + $nodeInstance = Registry::getRegistry()->getInstance('node'); + + // Sanity-check on it + if (is_null($nodeInstance)) { + // Throws a FilterChainException to stop further processing + throw new FilterChainException($this, self::EXCEPTION_FILTER_CHAIN_INTERCEPTED); + } // END - if + + // Shutdown the node. This should be the last line + $nodeInstance->doShutdown(); + } +} + +// [EOF] +?> diff --git a/application/hub/main/pools/listener/class_DefaultListenerPool.php b/application/hub/main/pools/listener/class_DefaultListenerPool.php index c3d28b7f4..fce149e50 100644 --- a/application/hub/main/pools/listener/class_DefaultListenerPool.php +++ b/application/hub/main/pools/listener/class_DefaultListenerPool.php @@ -45,9 +45,6 @@ class DefaultListenerPool extends BasePool implements PoolableListener { // Set the application instance $listenerInstance->setNodeInstance($nodeInstance); - // This is the last line before the return statement to output some debug output - $listenerInstance->debugOutput('POOL: ' . __CLASS__ . ': Initialization finished.'); - // Return the prepared instance return $listenerInstance; } diff --git a/docs/NEWS b/docs/NEWS index c4eb118ad..a1dc3cf19 100644 --- a/docs/NEWS +++ b/docs/NEWS @@ -1,6 +1,16 @@ NEWS / ChangeLog ================ +[2009-08-03] +------------ +- More debugging (and grep-able) output added +- Complete rewrite of code to MVC & Intercepting Filter Pattern for flexible + code style. +- Rewrite of LocalFileDatabase to generate the FQFN on a central place. Please + see generateFqfnFromDataSetInstance() for details +- As of documentation the sesssion id is now stored in database (but will be + overwritten every time you relaunch the hub + [2009-04-30] ------------ - Detection of own IP address fixed (but might still be rewritten) -- 2.39.2