]> git.mxchange.org Git - hub.git/blobdiff - application/hub/main/handler/network/tcp/class_TcpRawDataHandler.php
Now incoming, outgoing and 'server' pools are possible
[hub.git] / application / hub / main / handler / network / tcp / class_TcpRawDataHandler.php
index 304c9775a55ea1aef5cf249db93672f27869f2c3..e71b3f1511309f7a305c15f213fe18dc242aa106 100644 (file)
@@ -52,12 +52,12 @@ class TcpRawDataHandler extends BaseRawDataHandler implements Networkable {
         * Processes raw data from given resource. This is mostly useful for TCP
         * package handling and is implemented in the TcpListener class
         *
-        * @param       $resource       A valid resource identifier
+        * @param       $resource       A valid socket resource array
         * @return      void
         */
-       public function processRawDataFromResource ($resource) {
+       public function processRawDataFromResource (array $socketArray) {
                // Check the resource
-               if (!is_resource($resource)) {
+               if ((!isset($socketArray[BasePool::SOCKET_ARRAY_RESOURCE])) || (!is_resource($socketArray[BasePool::SOCKET_ARRAY_RESOURCE]))) {
                        // Throw an exception
                        throw new InvalidResourceException($this, self::EXCEPTION_INVALID_RESOURCE);
                } // END - if
@@ -69,32 +69,32 @@ class TcpRawDataHandler extends BaseRawDataHandler implements Networkable {
                $decodedData = false;
 
                // Debug message
-               /* NOISY-DEBUG: */ $this->debugOutput('TCP-HANDLER: Handling TCP package from peer ' . $resource . ',last error=' . socket_strerror(socket_last_error($resource)));
+               /* NOISY-DEBUG: */ $this->debugOutput('TCP-HANDLER: Handling TCP package from resource=' . $socketArray[BasePool::SOCKET_ARRAY_RESOURCE] . ',type=' . $socketArray[BasePool::SOCKET_ARRAY_CONN_TYPE] . ',last error=' . socket_strerror(socket_last_error($socketArray[BasePool::SOCKET_ARRAY_RESOURCE])));
 
                /*
                 * Read the raw data from socket. If you change PHP_BINARY_READ to
                 * PHP_NORMAL_READ, this line will endless block. This script does only
                 * provide simultanous threads, not real.
                 */
-               $rawData = socket_read($resource, $this->getConfigInstance()->getConfigEntry('tcp_buffer_length'), PHP_BINARY_READ);
+               $rawData = socket_read($socketArray[BasePool::SOCKET_ARRAY_RESOURCE], $this->getConfigInstance()->getConfigEntry('tcp_buffer_length'), PHP_BINARY_READ);
 
                // Debug output of read data length
-               /* NOISY-DEBUG: */ $this->debugOutput('TCP-HANDLER: rawData[' . gettype($rawData) . ']=' . strlen($rawData) . ',resource=' . $resource . ',error=' . socket_strerror(socket_last_error($resource)));
+               /* NOISY-DEBUG: */ $this->debugOutput('TCP-HANDLER: rawData[' . gettype($rawData) . ']=' . strlen($rawData) . ',resource=' . $socketArray[BasePool::SOCKET_ARRAY_RESOURCE] . ',error=' . socket_strerror(socket_last_error($socketArray[BasePool::SOCKET_ARRAY_RESOURCE])));
 
                // Is it valid?
-               if (socket_last_error($resource) == 11) {
+               if (socket_last_error($socketArray[BasePool::SOCKET_ARRAY_RESOURCE]) == 11) {
                        // Debug message
-                       /* NOISY-DEBUG: */ $this->debugOutput('TCP-HANDLER: Ignoring error 11 (Resource temporary unavailable) from socket resource=' . $resource);
+                       /* NOISY-DEBUG: */ $this->debugOutput('TCP-HANDLER: Ignoring error 11 (Resource temporary unavailable) from socket resource=' . $socketArray[BasePool::SOCKET_ARRAY_RESOURCE]);
 
                        /*
                         * Error code 11 (Resource temporary unavailable) can be safely
                         * ignored on non-blocking sockets. The socket is currently not
                         * sending any data.
                         */
-                        socket_clear_error($resource);
-               } elseif (($rawData === false) || (socket_last_error($resource) > 0)) {
+                        socket_clear_error($socketArray[BasePool::SOCKET_ARRAY_RESOURCE]);
+               } elseif (($rawData === false) || (socket_last_error($socketArray[BasePool::SOCKET_ARRAY_RESOURCE]) > 0)) {
                        // Network error or connection lost
-                       $this->setErrorCode(socket_last_error($resource));
+                       $this->setErrorCode(socket_last_error($socketArray[BasePool::SOCKET_ARRAY_RESOURCE]));
                } elseif (empty($rawData)) {
                        // The peer did send nothing to us
                        $this->setErrorCode(self::SOCKET_ERROR_EMPTY_DATA);