/**
* A NodeMessageSelfConnect handler
*
- * @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
parent::__construct(__CLASS__);
// Set handler name
- $this->setHandlerName('message_type_self_connect');
-
- // Init message data array
- $this->messageDataElements = array(
- XmlSelfConnectTemplateEngine::SELF_CONNECT_DATA_NODE_ID,
- XmlSelfConnectTemplateEngine::SELF_CONNECT_DATA_SESSION_ID
- );
+ $this->setHandlerName('message_self_connect');
}
/**
* @return void
*/
public function handleMessageData (array $messageData, Receivable $packageInstance) {
- die(__METHOD__ . ':messageData=' . $messageData);
+ // Are node id and session id the same?
+ if (($messageData[XmlSelfConnectTemplateEngine::SELF_CONNECT_DATA_NODE_ID] == $this->getNodeId()) && ($messageData[XmlSelfConnectTemplateEngine::SELF_CONNECT_DATA_SESSION_ID] == $this->getSessionId())) {
+ // Both are equal
+ self::createDebugInstance(__CLASS__)->debugOutput('SELF-CONNECT[' . __METHOD__ . ':' . __LINE__ . ']: Have connected to myself, both node and session id are equal!');
+
+ // Get node instance ...
+ $nodeInstance = NodeObjectFactory::createNodeInstance();
+
+ // ... and change state
+ $nodeInstance->getStateInstance()->nodeHasSelfConnected();
+ } else {
+ // Something really horrible happened
+ // @TODO Throw an exception here instead of dying
+ $this->debugInstance(__METHOD__ . ': ids mismatching! messageData=' . print_r($messageData, TRUE));
+ }
}
/**
* @param $dataSetInstance An instance of a StoreableCriteria class
* @param $messageData An array with all message data
* @return void
+ * @throws UnsupportedOperationException If this method is called
*/
public function addArrayToDataSet (StoreableCriteria $dataSetInstance, array $messageData) {
- // Add all ements
- foreach ($this->messageDataElements as $key) {
- // Is it there?
- assert(isset($messageData[$key]));
+ // Add generic first
+ parent::addArrayToDataSet($dataSetInstance, $messageData);
+
+ // Please don't call this method!
+ throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION);
+ }
- // Add it
- $dataSetInstance->addCriteria('node_' . $key, $messageData[$key]);
- } // END - foreach
+ /**
+ * Initializes configuration data from given message data array
+ *
+ * @param $messageData An array with all message data
+ * @return void
+ * @throws UnsupportedOperationException If this method is called
+ */
+ protected function initMessageConfigurationData (array $messageData) {
+ // Please don't call this method!
+ throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION);
+ }
+
+ /**
+ * Removes configuration data with given message data array from global configuration
+ *
+ * @param $messageData An array with all message data
+ * @return void
+ * @throws UnsupportedOperationException If this method is called
+ */
+ protected function removeMessageConfigurationData (array $messageData) {
+ // Please don't call this method!
+ throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION);
}
}