]> git.mxchange.org Git - hub.git/blobdiff - application/hub/main/handler/network/class_BaseRawDataHandler.php
Rewrites, some more methods:
[hub.git] / application / hub / main / handler / network / class_BaseRawDataHandler.php
index 50710956e097035576eb12a588ce0dd41c9830db..57857bfcdacb6815fbfe7203b213f2df1fc9f7e2 100644 (file)
@@ -4,7 +4,7 @@
  *
  * @author             Roland Haeder <webmaster@ship-simu.org>
  * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 Hub Developer Team
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Hub Developer Team
  * @license            GNU GPL 3.0 or any newer version
  * @link               http://www.ship-simu.org
  *
 class BaseRawDataHandler extends BaseHandler {
        // Error codes:
        // - Socket raw data stream errors
-       const SOCKET_ERROR_UNKNOWN                = 'unknown_error';        // Unknown error (should not happen)
-       const SOCKET_ERROR_TRANSPORT_ENDPOINT     = 'transport_endpoint';   // Transport endpoint has closed
-       const SOCKET_ERROR_EMPTY_DATA             = 'empty_data';           // Other peer has sent nothing
-       const SOCKET_ERROR_INVALID_BASE64_MODULO  = 'base64_modulo';        // Length is not modulo 4
-       const SOCKET_ERROR_INVALID_BASE64_MESSAGE = 'base64_message';       // Raw data is not Base64-encoded
-       const SOCKET_ERROR_UNHANDLED              = 'unhandled_package';    // Unhandled raw data (not bad)
-       const SOCKET_ERROR_CONNECTION_REFUSED     = 'connection_refused';   // The name says it: connection refused
-       const SOCKET_ERROR_CONNECTION_TIMED_OUT   = 'connection_timed_out'; // The name says it: connection attempt has timed-out
-       const SOCKET_CONNECTED                    = 'connected';            // Nothing errorous happens, socket is connected
+       const SOCKET_ERROR_UNKNOWN                    = 'unknown_error';              // Unknown error (should not happen)
+       const SOCKET_ERROR_TRANSPORT_ENDPOINT         = 'transport_endpoint';         // Transport endpoint has closed
+       const SOCKET_ERROR_INVALID_BASE64_MODULO      = 'base64_modulo';              // Length is not modulo 4
+       const SOCKET_ERROR_INVALID_BASE64_MESSAGE     = 'base64_message';             // Raw data is not Base64-encoded
+       const SOCKET_ERROR_UNHANDLED                  = 'unhandled_package';          // Unhandled raw data (not bad)
+       const SOCKET_ERROR_CONNECTION_REFUSED         = 'connection_refused';         // The name says it: connection refused
+       const SOCKET_ERROR_CONNECTION_TIMED_OUT       = 'connection_timed_out';       // The name says it: connection attempt has timed-out
+       const SOCKET_ERROR_OPERATION_IN_PROGRESS      = 'operation_in_progress';      // 'Operation now in progress'
+       const SOCKET_ERROR_OPERATION_ALREADY_PROGRESS = 'operation_already_progress'; // 'Operation already in progress'
+       const SOCKET_ERROR_RESOURCE_UNAVAILABLE       = 'resource_unavailable';       // 'Resource temporary unavailable'
+       const SOCKET_ERROR_NO_ROUTE_TO_HOST           = 'no_route_to_host';           // The name says it: no route to host
+       const SOCKET_CONNECTED                        = 'connected';                  // Nothing errorous happens, socket is connected
 
        // - Package errors
        const PACKAGE_ERROR_INVALID_DATA       = 'invalid_data';    // Invalid data in package found
@@ -42,13 +45,17 @@ class BaseRawDataHandler extends BaseHandler {
        const PACKAGE_LEVEL_CHECK_OKAY         = 'checked_package'; // Package is fine
 
        // Package data
-       const PACKAGE_DECODED_DATA = 'decoded_data';
-       const PACKAGE_ERROR_CODE   = 'error_code';
+       const PACKAGE_RAW_DATA   = 'raw_data';
+       const PACKAGE_ERROR_CODE = 'error_code';
+
+       // Start/end marker
+       const STREAM_START_MARKER = '[[S]]';
+       const STREAM_END_MARKER   = '[[E]]';
 
        /**
-        * Stacker for decoded data
+        * Stacker for raw data
         */
-       const STACKER_NAME_DECODED_DATA = 'decoded_data';
+       const STACKER_NAME_RAW_DATA = 'raw_data';
 
        /**
         * Error code from socket
@@ -68,12 +75,6 @@ class BaseRawDataHandler extends BaseHandler {
                // Set error code to 'unknown'
                $this->setErrorCode(self::SOCKET_ERROR_UNKNOWN);
 
-               // Get an input stream instance
-               $streamInstance = ObjectFactory::createObjectByConfiguredName('node_raw_data_input_stream_class', array($this));
-
-               // Set it in this network-package handler
-               $this->setInputStreamInstance($streamInstance);
-
                // Init stacker instance for processed raw data
                $stackerInstance = ObjectFactory::createObjectByConfiguredName('node_raw_data_stacker_class');
 
@@ -90,66 +91,65 @@ class BaseRawDataHandler extends BaseHandler {
         * @return      void
         */
        protected function initStacker () {
-               $this->getStackerInstance()->initStacker(self::STACKER_NAME_DECODED_DATA);
+               $this->getStackerInstance()->initStacker(self::STACKER_NAME_RAW_DATA);
        }
 
        /**
-        * Adds given decoded data to the raw data stacker
+        * Adds given raw data to the raw data stacker
         *
-        * @param       $decodedData    Decoded data from the socket resource
+        * @param       $rawData        raw data from the socket resource
         * @return      void
         */
-       protected function addDecodedDataToStacker ($decodedData) {
+       protected function addRawDataToStacker ($rawData) {
                /*
                 * Add the deocoded data and error code to the stacker so other classes
                 * (e.g. NetworkPackage) can "pop" it from the stacker.
                 */
-               $this->getStackerInstance()->pushNamed(self::STACKER_NAME_DECODED_DATA, array(
-                       self::PACKAGE_DECODED_DATA => $decodedData,
-                       self::PACKAGE_ERROR_CODE   => $this->getErrorCode()
+               $this->getStackerInstance()->pushNamed(self::STACKER_NAME_RAW_DATA, array(
+                       self::PACKAGE_RAW_DATA   => $rawData,
+                       self::PACKAGE_ERROR_CODE => $this->getErrorCode()
                ));
        }
 
        /**
-        * Checks wether decoded data is pending for further processing.
+        * Checks whether raw data is pending for further processing.
         *
-        * @return      $isPending      Wether decoded data is pending
+        * @return      $isPending      Whether raw data is pending
         */
-       public function isDecodedDataPending () {
+       public function isRawDataPending () {
                // Does the stacker have some entries (not empty)?
-               $isPending = (!$this->getStackerInstance()->isStackEmpty(self::STACKER_NAME_DECODED_DATA));
+               $isPending = (!$this->getStackerInstance()->isStackEmpty(self::STACKER_NAME_RAW_DATA));
 
                // Return it
                return $isPending;
        }
 
        /**
-        * "Getter" for next decoded data from the stacker
+        * "Getter" for next raw data from the stacker
         *
-        * @return      $decodedData    Decoded data from the stacker
+        * @return      $rawData        Raw data from the stacker
         */
-       public function getNextDecodedData () {
-               // "Pop" the decoded data from the stacker
-               $decodedData = $this->getStackerInstance()->popNamed(self::STACKER_NAME_DECODED_DATA);
+       public function getNextRawData () {
+               // "Pop" the raw data from the stacker
+               $rawData = $this->getStackerInstance()->popNamed(self::STACKER_NAME_RAW_DATA);
 
                // And return it
-               return $decodedData;
+               return $rawData;
        }
 
        /**
-        * Checks wether the 'recipient' field matches our own address:port
+        * Checks whether the 'recipient' field matches our own address:port
         * combination.
         *
         * @param       $packageData    Raw package data
-        * @return      $matches                Wether it matches
+        * @return      $matches                Whether it matches
         * @todo        This method will be moved to a better place
         */
        protected function ifRecipientMatchesOwnAddress (array $packageData) {
                // Construct own address first
-               $ownAddress = Registry::getRegistry()->getInstance('node')->getAddressPort($this);
+               $ownAddress = Registry::getRegistry()->getInstance('node')->getAddressPort();
 
                // Does it match?
-               // @TODO Numeric or alpha-numeric index?
                $matches = ($ownAddress === $packageData[NetworkPackage::PACKAGE_DATA_RECIPIENT]);
 
                // Return result
@@ -162,7 +162,7 @@ class BaseRawDataHandler extends BaseHandler {
         * @param       $errorCode      The error code we shall set
         * @return      void
         */
-       protected final function setErrorCode ($errorCode) {
+       public final function setErrorCode ($errorCode) {
                $this->errorCode = $errorCode;
        }