]> git.mxchange.org Git - hub.git/blobdiff - application/hub/main/filter/tags/class_PackageAnnouncementTagFilter.php
Updated 'core'.
[hub.git] / application / hub / main / filter / tags / class_PackageAnnouncementTagFilter.php
index 426664dc53d6a62df650782348f4eec4d58e08fe..7b992b654a75746835b3619d24c579974c4d9189 100644 (file)
@@ -1,12 +1,12 @@
 <?php
 /**
- * A AnnouncementTag filter for Package
+ * A AnnouncementTag filter for packages
  *
- * @author             Roland Haeder <webmaster@ship-simu.org>
+ * @author             Roland Haeder <webmaster@shipsimu.org>
  * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Hub Developer Team
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 Hub Developer Team
  * @license            GNU GPL 3.0 or any newer version
- * @link               http://www.ship-simu.org
+ * @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
  * 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 PackageAnnouncementTagFilter extends BaseFilter implements FilterablePackage {
-       /**
-        * Array with all data XML nodes (which hold the actual data) and their values
-        */
-       private $dataXmlNodes = array();
-
+class PackageAnnouncementTagFilter extends BaseNodeFilter implements FilterablePackage {
        /**
         * Protected constructor
         *
@@ -38,12 +33,13 @@ class PackageAnnouncementTagFilter extends BaseFilter implements FilterablePacka
 
                // Init array
                $this->dataXmlNodes = array(
-                       XmlAnnouncementTemplateEngine::ANNOUNCEMENT_DATA_EXTERNAL_IP => '',
-                       XmlAnnouncementTemplateEngine::ANNOUNCEMENT_DATA_INTERNAL_IP => '',
-                       XmlAnnouncementTemplateEngine::ANNOUNCEMENT_DATA_NODE_STATUS => '',
-                       XmlAnnouncementTemplateEngine::ANNOUNCEMENT_DATA_SESSION_ID  => '',
-                       XmlAnnouncementTemplateEngine::ANNOUNCEMENT_DATA_TCP_PORT    => 9060,
-                       XmlAnnouncementTemplateEngine::ANNOUNCEMENT_DATA_UDP_PORT    => 9060
+                       XmlAnnouncementTemplateEngine::ANNOUNCEMENT_DATA_EXTERNAL_ADDRESS => '',
+                       XmlAnnouncementTemplateEngine::ANNOUNCEMENT_DATA_INTERNAL_ADDRESS => '',
+                       XmlAnnouncementTemplateEngine::ANNOUNCEMENT_DATA_NODE_STATUS      => '',
+                       XmlAnnouncementTemplateEngine::ANNOUNCEMENT_DATA_NODE_MODE        => '',
+                       XmlAnnouncementTemplateEngine::ANNOUNCEMENT_DATA_NODE_ID          => '',
+                       XmlAnnouncementTemplateEngine::ANNOUNCEMENT_DATA_SESSION_ID       => '',
+                       XmlAnnouncementTemplateEngine::ANNOUNCEMENT_DATA_PRIVATE_KEY_HASH => '',
                );
        }
 
@@ -84,57 +80,26 @@ class PackageAnnouncementTagFilter extends BaseFilter implements FilterablePacka
         * XmlParserException       - If the XML message is damaged or not
         *                            well-formed
         *
-        * @param       $messageContent         Raw message content
+        * @param       $messageData            Raw message data array
         * @param       $packageInstance        An instance of a Receivable class
         * @return      void
-        * @todo        Exceptions from renderXmlContent() are currently unhandled
         */
-       public function processMessage ($messageContent, Receivable $packageInstance) {
-               // Get a template instance from the factory
-               $templateInstance = XmlTemplateEngineFactory::createXmlTemplateEngineInstance('node_announcement_template_class');
-
-               // And render the XML content (aka message)
-               $templateInstance->renderXmlContent($messageContent);
-
-               /*
-                * The template system now stores all required data as 'general'
-                * variables, so simply get them. If there is an invalid XML node
-                * inside the message, the above method call will cause exceptions.
-                */
-               foreach ($this->dataXmlNodes as $key => $dummy) {
-                       // Get the variable from template engine
-                       $value = $templateInstance->readAnnouncementData($key);
-
-                       /*
-                        * If value is NULL, a variable hasn't been found. This could mean
-                        * that *this* node is running an out-dated software or the other
-                        * peer is using an out-dated announcement.xml template.
-                        */
-                       if (is_null($value)) {
-                               // Output a warning
-                               $this->debugOutput('ANNOUNCEMENT-TAG: Found not fully supported variable ' . $key . ' - skipping.');
-
-                               // Skip this part, don't write NULLs to the array
-                               continue;
-                       } // END - if
-
-                       // Debug message
-                       $this->debugOutput('ANNOUNCEMENT-TAG: key=' . $key . ',value=' . $value);
-
-                       // Set it now
-                       $this->dataXmlNodes[$key] = $value;
-               } // END - foreach
-
-               // Construct an array for pushing it on next stack
-               $messageArray = array(
-                       // Message data itself
-                       NetworkPackage::MESSAGE_ARRAY_DATA => $this->dataXmlNodes,
-                       // Message type (which is 'announcement')
-                       NetworkPackage::MESSAGE_ARRAY_TYPE => 'announcement'
-               );
+       public function processMessage (array $messageData, Receivable $packageInstance) {
+               // Process message generic
+               $this->genericProcessMessage('announcement', $messageData, $packageInstance);
+       }
 
-               // Push the processed message back on stack
-               $packageInstance->getStackerInstance()->pushNamed(NetworkPackage::STACKER_NAME_PROCESSED_MESSAGE, $messageArray);
+       /**
+        * Post-processes the stacked message. Do not call popNamed() as then no
+        * other class can process the message.
+        *
+        * @param       $packageInstance        An instance of a Receivable class
+        * @return      void
+        * @throws      UnsupportedOperationException   If this method is called, please use processMessage() instead!
+        */
+       public function postProcessMessage (Receivable $packageInstance) {
+               // Please don't call this method
+               throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION);
        }
 }