X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=application%2Fhub%2Fmain%2Ffilter%2Ftags%2Fclass_PackageAnnouncementTagFilter.php;h=7b992b654a75746835b3619d24c579974c4d9189;hb=73aff29b9bc78031853b0b8c0fe0a8e04f66ac29;hp=426664dc53d6a62df650782348f4eec4d58e08fe;hpb=4c4dbb818c6da362302cd02a601cce0c78413bfb;p=hub.git diff --git a/application/hub/main/filter/tags/class_PackageAnnouncementTagFilter.php b/application/hub/main/filter/tags/class_PackageAnnouncementTagFilter.php index 426664dc5..7b992b654 100644 --- a/application/hub/main/filter/tags/class_PackageAnnouncementTagFilter.php +++ b/application/hub/main/filter/tags/class_PackageAnnouncementTagFilter.php @@ -1,12 +1,12 @@ + * @author Roland Haeder * @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 @@ -21,12 +21,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -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); } }