]> git.mxchange.org Git - city.git/commitdiff
The console part of the game will become a daemon that is taking care of all
authorRoland Haeder <roland@mxchange.org>
Sun, 5 Apr 2015 14:41:57 +0000 (16:41 +0200)
committerRoland Haeder <roland@mxchange.org>
Sun, 5 Apr 2015 14:41:57 +0000 (16:41 +0200)
the "heavy work", like calculations of citizen happiness, land value and city
growth (and many more). So the HTML client (and later AJAX) will only have to
display the data and not do any heavy work (as this takes to long).

Signed-off-by: Roland Haeder <roland@mxchange.org>
application/city/config.php
application/city/main/city/class_BaseCity.php
application/city/main/commands/console/class_CityConsoleDaemonCommand.php [new file with mode: 0644]
application/city/main/commands/console/class_CityConsoleMainCommand.php [deleted file]

index 8a6298e93e1d700f4b32f4eb71abdf6a40dba1f3..580273eb8e964d982e4bf83059c038fca182dc9a 100644 (file)
@@ -73,10 +73,10 @@ $cfg->setConfigEntry('menu_template_extension', '.xml');
  ******************************************************************************/
 
 // CFG: DEFAULT-CITY-CONSOLE-COMMAND
-$cfg->setConfigEntry('default_city_console_command', 'main');
+$cfg->setConfigEntry('default_city_console_command', 'daemon');
 
-// CFG: CITY-CONSOLE-CMD-MAIN-RESOLVER-CLASS
-$cfg->setConfigEntry('city_console_cmd_main_resolver_class', 'CityConsoleCommandResolver');
+// CFG: CITY-CONSOLE-CMD-DAEMON-RESOLVER-CLASS
+$cfg->setConfigEntry('city_console_cmd_daemon_resolver_class', 'CityConsoleCommandResolver');
 
 // CFG: CITY-PHP-REQUIREMENTS-FILTER
 $cfg->setConfigEntry('city_php_requirements_filter', 'CityPhpRequirementsFilter');
@@ -96,8 +96,8 @@ $cfg->setConfigEntry('city_shutdown_task_handler_filter', 'CityShutdownTaskHandl
 // CFG: CITY-SHUTDOWN-CITY-FILTER
 $cfg->setConfigEntry('city_shutdown_city_filter', 'CityShutdownCityFilter');
 
-// CFG: NEWS-MAIN-LIMIT
-$cfg->setConfigEntry('news_main_limit', 5);
+// CFG: NEWS-DAEMON-LIMIT
+$cfg->setConfigEntry('news_daemon_limit', 5);
 
 // [EOF]
 ?>
index add017eed8af66b6ec6cf82a98e83f0df864e673..812d4263fc615badca4400bb89b42081a60da634 100644 (file)
@@ -80,7 +80,7 @@ class BaseCity extends BaseCitySystem implements Updateable, AddableCriteria {
 
                // Output all lines
                self::createDebugInstance(__CLASS__)->debugOutput(' ');
-               self::createDebugInstance(__CLASS__)->debugOutput($app->getAppName() . ' v' . $app->getAppVersion() . ' - ' . $this->getRequestInstance()->getRequestElement('mode') . ' mode active');
+               self::createDebugInstance(__CLASS__)->debugOutput($app->getAppName() . ' v' . $app->getAppVersion() . ' - ' . $this->getRequestInstance()->getRequestElement('mode') . ' daemon starting');
                self::createDebugInstance(__CLASS__)->debugOutput('Copyright (c) 2015 City Developer Team');
                self::createDebugInstance(__CLASS__)->debugOutput(' ');
                self::createDebugInstance(__CLASS__)->debugOutput('This program comes with ABSOLUTELY NO WARRANTY; for details see docs/COPYING.');
@@ -218,13 +218,13 @@ class BaseCity extends BaseCitySystem implements Updateable, AddableCriteria {
         * @param       $CityData                       An array with valid City data
         * @return      void
         */
-       public function addArrayToDataSet (StoreableCriteria $dataSetInstance, array $CityData) {
+       public function addArrayToDataSet (StoreableCriteria $dataSetInstance, array $cityData) {
                // Add all data the array provides
-               foreach (CityDistributedHashTableDatabaseWrapper::getAllElements() as $element) {
+               foreach (CityInformationDatabaseWrapper::getAllElements() as $element) {
                        // Is the element there?
-                       if (isset($CityData[$element])) {
+                       if (isset($cityData[$element])) {
                                // Add it
-                               $dataSetInstance->addCriteria($element, $CityData[$element]);
+                               $dataSetInstance->addCriteria($element, $cityData[$element]);
                        } else {
                                // Output warning message
                                /* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('City[' . __METHOD__ . ':' . __LINE__ . ']: addArrayToDataSet(): Element ' . $element . ' not found in CityData array.');
diff --git a/application/city/main/commands/console/class_CityConsoleDaemonCommand.php b/application/city/main/commands/console/class_CityConsoleDaemonCommand.php
new file mode 100644 (file)
index 0000000..53b0ea2
--- /dev/null
@@ -0,0 +1,137 @@
+<?php
+/**
+ * A command for the 'daemon' routine
+ *
+ * @author             Roland Haeder <webmaster@shipsimu.org>
+ * @version            0.0.0
+ * @copyright  Copyright (c) 2015 City 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 <http://www.gnu.org/licenses/>.
+ */
+class CityConsoleDaemonCommand extends BaseCommand implements Commandable {
+       /**
+        * Protected constructor
+        *
+        * @return      void
+        */
+       protected function __construct () {
+               // Call parent constructor
+               parent::__construct(__CLASS__);
+       }
+
+       /**
+        * Creates an instance of this class
+        *
+        * @param       $resolverInstance       An instance of a command resolver class
+        * @return      $commandInstance        An instance a prepared command class
+        */
+       public static final function createCityConsoleDaemonCommand (CommandResolver $resolverInstance) {
+               // Get new instance
+               $commandInstance = new CityConsoleDaemonCommand();
+
+               // Set the application instance
+               $commandInstance->setResolverInstance($resolverInstance);
+
+               // Return the prepared instance
+               return $commandInstance;
+       }
+
+       /**
+        * Executes the given command 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
+        * @todo        ~10% done?
+        */
+       public function execute (Requestable $requestInstance, Responseable $responseInstance) {
+               // Get a registry and the application instance from it
+               $applicationInstance = Registry::getRegistry()->getInstance('app');
+
+               /*
+                * ----------------------- Bootstrapping phase ------------------------
+                * Try to bootstrap the city and pass the request instance to it for
+                * extra arguments which mostly override config entries or enable special
+                * features within the hub (none is ready at this development stage)
+                */
+               self::createDebugInstance(__CLASS__)->debugOutput('BOOTSTRAP: Beginning with bootstrap...');
+               $applicationInstance->getControllerInstance()->executeBootstrapFilters($requestInstance, $responseInstance);
+               self::createDebugInstance(__CLASS__)->debugOutput('BOOTSTRAP: Bootstrap finished.');
+
+               // Get city instance
+               $cityInstance = CityObjectFactory::createCityInstance();
+
+               // Add some city-specific filters, e.g. announcement
+               $cityInstance->addExtraCityFilters();
+
+               /*
+                * -------------------------- City activation --------------------------
+                * Activates the city by doing some final preparation steps and setting
+                * the attribute $hubIsActive to TRUE.
+                */
+               $cityInstance->activateCity($requestInstance, $responseInstance);
+
+               // Get task handler instance
+               $handlerInstance = Registry::getRegistry()->getInstance('task_handler');
+
+               // Debug message
+               self::createDebugInstance(__CLASS__)->debugOutput('MAIN: --- Entering main loop. ---');
+
+               /*
+                * ----------------------------- Main loop ----------------------------
+                * 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 or all tasks are killed.
+                */
+               while (($cityInstance->isCityActive()) && ($handlerInstance->hasTasksLeft())) {
+                       // Handle all tasks here
+                       $handlerInstance->handleTasks();
+               } // END - while
+
+               // Debug message
+               self::createDebugInstance(__CLASS__)->debugOutput('MAIN: --- Leaving main loop. ---');
+       }
+
+       /**
+        * Adds extra filters to the given controller instance
+        *
+        * @param       $controllerInstance             A controller instance
+        * @param       $requestInstance                An instance of a class with an Requestable interface
+        * @return      void
+        * @todo        0% done
+        */
+       public function addExtraFilters (Controller $controllerInstance, Requestable $requestInstance) {
+               // Add pre filters
+               $controllerInstance->addPreFilter(ObjectFactory::createObjectByConfiguredName('city_php_requirements_filter'));
+               $controllerInstance->addPreFilter(ObjectFactory::createObjectByConfiguredName('city_initializer_filter'));
+               $controllerInstance->addPreFilter(ObjectFactory::createObjectByConfiguredName('city_welcome_teaser_filter'));
+
+               // Add bootstrap filters
+               //$controllerInstance->addBootstrapFilter(ObjectFactory::createObjectByConfiguredName('city_bootstrap_generate_cityid_filter'));
+
+               // Add city activation filters
+               $controllerInstance->addActivationFilter(ObjectFactory::createObjectByConfiguredName('city_activation_task_handler_initializer_filter'));
+
+               // Add shutdown filters
+               $controllerInstance->addShutdownFilter(ObjectFactory::createObjectByConfiguredName('city_shutdown_task_handler_filter'));
+
+               // This is the last generic shutdown filter
+               $controllerInstance->addShutdownFilter(ObjectFactory::createObjectByConfiguredName('city_shutdown_city_filter'));
+       }
+}
+
+// [EOF]
+?>
diff --git a/application/city/main/commands/console/class_CityConsoleMainCommand.php b/application/city/main/commands/console/class_CityConsoleMainCommand.php
deleted file mode 100644 (file)
index ea595f7..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-<?php
-/**
- * A command for the 'main' routine
- *
- * @author             Roland Haeder <webmaster@shipsimu.org>
- * @version            0.0.0
- * @copyright  Copyright (c) 2015 City 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 <http://www.gnu.org/licenses/>.
- */
-class CityConsoleMainCommand extends BaseCommand implements Commandable {
-       /**
-        * Protected constructor
-        *
-        * @return      void
-        */
-       protected function __construct () {
-               // Call parent constructor
-               parent::__construct(__CLASS__);
-       }
-
-       /**
-        * Creates an instance of this class
-        *
-        * @param       $resolverInstance       An instance of a command resolver class
-        * @return      $commandInstance        An instance a prepared command class
-        */
-       public static final function createCityConsoleMainCommand (CommandResolver $resolverInstance) {
-               // Get new instance
-               $commandInstance = new CityConsoleMainCommand();
-
-               // Set the application instance
-               $commandInstance->setResolverInstance($resolverInstance);
-
-               // Return the prepared instance
-               return $commandInstance;
-       }
-
-       /**
-        * Executes the given command 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
-        * @todo        ~10% done?
-        */
-       public function execute (Requestable $requestInstance, Responseable $responseInstance) {
-               // Get a registry and the application instance from it
-               $applicationInstance = Registry::getRegistry()->getInstance('app');
-
-               /*
-                * ----------------------- Bootstrapping phase ------------------------
-                * Try to bootstrap the city and pass the request instance to it for
-                * extra arguments which mostly override config entries or enable special
-                * features within the hub (none is ready at this development stage)
-                */
-               self::createDebugInstance(__CLASS__)->debugOutput('BOOTSTRAP: Beginning with bootstrap...');
-               $applicationInstance->getControllerInstance()->executeBootstrapFilters($requestInstance, $responseInstance);
-               self::createDebugInstance(__CLASS__)->debugOutput('BOOTSTRAP: Bootstrap finished.');
-
-               // Get city instance
-               $cityInstance = CityObjectFactory::createCityInstance();
-
-               // Add some city-specific filters, e.g. announcement
-               $cityInstance->addExtraCityFilters();
-
-               /*
-                * -------------------------- City activation --------------------------
-                * Activates the city by doing some final preparation steps and setting
-                * the attribute $hubIsActive to TRUE.
-                */
-               $cityInstance->activateCity($requestInstance, $responseInstance);
-
-               // Get task handler instance
-               $handlerInstance = Registry::getRegistry()->getInstance('task_handler');
-
-               // Debug message
-               self::createDebugInstance(__CLASS__)->debugOutput('MAIN: --- Entering main loop. ---');
-
-               /*
-                * ----------------------------- Main loop ----------------------------
-                * 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 or all tasks are killed.
-                */
-               while (($cityInstance->isCityActive()) && ($handlerInstance->hasTasksLeft())) {
-                       // Handle all tasks here
-                       $handlerInstance->handleTasks();
-               } // END - while
-
-               // Debug message
-               self::createDebugInstance(__CLASS__)->debugOutput('MAIN: --- Leaving main loop. ---');
-       }
-
-       /**
-        * Adds extra filters to the given controller instance
-        *
-        * @param       $controllerInstance             A controller instance
-        * @param       $requestInstance                An instance of a class with an Requestable interface
-        * @return      void
-        * @todo        0% done
-        */
-       public function addExtraFilters (Controller $controllerInstance, Requestable $requestInstance) {
-               // Add pre filters
-               $controllerInstance->addPreFilter(ObjectFactory::createObjectByConfiguredName('city_php_requirements_filter'));
-               $controllerInstance->addPreFilter(ObjectFactory::createObjectByConfiguredName('city_initializer_filter'));
-               $controllerInstance->addPreFilter(ObjectFactory::createObjectByConfiguredName('city_welcome_teaser_filter'));
-
-               // Add bootstrap filters
-               //$controllerInstance->addBootstrapFilter(ObjectFactory::createObjectByConfiguredName('city_bootstrap_generate_cityid_filter'));
-
-               // Add city activation filters
-               $controllerInstance->addActivationFilter(ObjectFactory::createObjectByConfiguredName('city_activation_task_handler_initializer_filter'));
-
-               // Add shutdown filters
-               $controllerInstance->addShutdownFilter(ObjectFactory::createObjectByConfiguredName('city_shutdown_task_handler_filter'));
-
-               // This is the last generic shutdown filter
-               $controllerInstance->addShutdownFilter(ObjectFactory::createObjectByConfiguredName('city_shutdown_city_filter'));
-       }
-}
-
-// [EOF]
-?>