]> git.mxchange.org Git - hub.git/commitdiff
Hub software cleared (prepared for full rewrite)
authorRoland Häder <roland@mxchange.org>
Tue, 3 Feb 2009 21:25:15 +0000 (21:25 +0000)
committerRoland Häder <roland@mxchange.org>
Tue, 3 Feb 2009 21:25:15 +0000 (21:25 +0000)
30 files changed:
.gitattributes
application/hub/class_ApplicationHelper.php
application/hub/config.php
application/hub/exceptions/client/.htaccess [deleted file]
application/hub/exceptions/client/class_HubHelloException.php [deleted file]
application/hub/exceptions/client/class_HubPeerAuthorizationException.php [deleted file]
application/hub/exceptions/client/class_HubPeerTimeoutException.php [deleted file]
application/hub/exceptions/commands/.htaccess [deleted file]
application/hub/exceptions/commands/class_UnexpectedAwaitCommandException.php [deleted file]
application/hub/exceptions/master/.htaccess [deleted file]
application/hub/exceptions/master/class_HubMasterDisconnectedException.php [deleted file]
application/hub/exceptions/socket/.htaccess [deleted file]
application/hub/exceptions/socket/class_SocketException.php [deleted file]
application/hub/exceptions/socket/connector/.htaccess [deleted file]
application/hub/exceptions/socket/connector/class_SocketAcceptException.php [deleted file]
application/hub/exceptions/socket/connector/class_SocketSelectorException.php [deleted file]
application/hub/exceptions/socket/init/.htaccess [deleted file]
application/hub/exceptions/socket/init/class_SocketBindException.php [deleted file]
application/hub/exceptions/socket/init/class_SocketConnectException.php [deleted file]
application/hub/exceptions/socket/init/class_SocketCreationException.php [deleted file]
application/hub/exceptions/socket/init/class_SocketListeningException.php [deleted file]
application/hub/exceptions/socket/init/class_SocketSetupException.php [deleted file]
application/hub/exceptions/socket/peer/.htaccess [deleted file]
application/hub/exceptions/socket/peer/class_BrokenPipeException.php [deleted file]
application/hub/exceptions/socket/peer/class_IPSpoofingException.php [deleted file]
application/hub/exceptions/socket/peer/class_PeerSocketException.php [deleted file]
application/hub/main/class_HubCommandProcessor.php [deleted file]
application/hub/main/class_HubConnector.php [deleted file]
application/hub/main/class_HubCoreLoop.php [deleted file]
application/hub/main/class_HubPeer.php [deleted file]

index e2949f98f7e119f8da828ef437d4e96ecb5494a7..71e36d256dd209284a107567a042442d65d2eb4e 100644 (file)
@@ -8,37 +8,10 @@ application/hub/debug.php -text
 application/hub/exceptions.php -text
 application/hub/exceptions/.htaccess -text
 application/hub/exceptions/class_HubException.php -text
-application/hub/exceptions/client/.htaccess -text
-application/hub/exceptions/client/class_HubHelloException.php -text
-application/hub/exceptions/client/class_HubPeerAuthorizationException.php -text
-application/hub/exceptions/client/class_HubPeerTimeoutException.php -text
-application/hub/exceptions/commands/.htaccess -text
-application/hub/exceptions/commands/class_UnexpectedAwaitCommandException.php -text
-application/hub/exceptions/master/.htaccess -text
-application/hub/exceptions/master/class_HubMasterDisconnectedException.php -text
-application/hub/exceptions/socket/.htaccess -text
-application/hub/exceptions/socket/class_SocketException.php -text
-application/hub/exceptions/socket/connector/.htaccess -text
-application/hub/exceptions/socket/connector/class_SocketAcceptException.php -text
-application/hub/exceptions/socket/connector/class_SocketSelectorException.php -text
-application/hub/exceptions/socket/init/.htaccess -text
-application/hub/exceptions/socket/init/class_SocketBindException.php -text
-application/hub/exceptions/socket/init/class_SocketConnectException.php -text
-application/hub/exceptions/socket/init/class_SocketCreationException.php -text
-application/hub/exceptions/socket/init/class_SocketListeningException.php -text
-application/hub/exceptions/socket/init/class_SocketSetupException.php -text
-application/hub/exceptions/socket/peer/.htaccess -text
-application/hub/exceptions/socket/peer/class_BrokenPipeException.php -text
-application/hub/exceptions/socket/peer/class_IPSpoofingException.php -text
-application/hub/exceptions/socket/peer/class_PeerSocketException.php -text
 application/hub/init.php -text
 application/hub/interfaces/.htaccess -text
 application/hub/loader.php -text
 application/hub/main/.htaccess -text
-application/hub/main/class_HubCommandProcessor.php -text
-application/hub/main/class_HubConnector.php -text
-application/hub/main/class_HubCoreLoop.php -text
-application/hub/main/class_HubPeer.php -text
 application/hub/middleware/.htaccess -text
 application/hub/starter.php -text
 /chat-server.php -text
index 24aab7c80c41fedb2ff2663d3386510366dbe65d..665b5489cfba505f2d449a83a6d144f865aea455 100644 (file)
@@ -76,7 +76,7 @@ class ApplicationHelper extends BaseFrameworkSystem implements ManageableApplica
        /**
         * Getter for an instance of this class
         *
-        * @return      $thisInstance           An instance of this class
+        * @return      $thisInstance   An instance of this class
         */
        public final static function getInstance () {
                // Is the instance there?
@@ -99,13 +99,12 @@ class ApplicationHelper extends BaseFrameworkSystem implements ManageableApplica
        /**
         * Setter for the version number
         *
-        * @param               $appVersion     The application's version number
+        * @param       $appVersion     The application's version number
         * @return      void
         */
        public final function setAppVersion ($appVersion) {
                // Cast and set it
-               $appVersion = (string) $appVersion;
-               $this->appVersion = $appVersion;
+               $this->appVersion = (string) $appVersion;
        }
 
        /**
@@ -120,13 +119,12 @@ class ApplicationHelper extends BaseFrameworkSystem implements ManageableApplica
        /**
         * Setter for human-readable name
         *
-        * @param               $appName        The application's human-readable name
+        * @param       $appName        The application's human-readable name
         * @return      void
         */
        public final function setAppName ($appName) {
                // Cast and set it
-               $appName = (string) $appName;
-               $this->appName = $appName;
+               $this->appName = (string) $appName;;
        }
 
        /**
@@ -141,13 +139,12 @@ class ApplicationHelper extends BaseFrameworkSystem implements ManageableApplica
        /**
         * Setter for short uni*-like name
         *
-        * @param               $shortName      The application's short uni*-like name
+        * @param       $shortName      The application's short uni*-like name
         * @return      void
         */
        public final function setAppShortName ($shortName) {
                // Cast and set it
-               $shortName = (string) $shortName;
-               $this->shortName = $shortName;
+               $this->shortName = (string) $shortName;
        }
 
        /**
@@ -156,29 +153,7 @@ class ApplicationHelper extends BaseFrameworkSystem implements ManageableApplica
         * @return      void
         */
        public final function entryPoint () {
-               // Get a core loop instance
-               $hubInstance = HubCoreLoop::createHubCoreLoop();
-
-               // Output some text
-               $hubInstance->outputIntro();
-
-               // Contact the master hub
-               $hubInstance->contactMasterHub();
-
-               // The main loop begins here
-               $hubInstance->coreLoop();
-
-               // Shutdown the hub
-               $hubInstance->shutdownHub();
-       }
-
-       /**
-        * Getter for master template name
-        *
-        * @return      $masterTemplate         Name of the master template
-        */
-       public final function getMasterTemplate () {
-               return "hub_main";
+               trigger_error(__METHOD__.": Cleared!");
        }
 
        /**
@@ -194,6 +169,15 @@ class ApplicationHelper extends BaseFrameworkSystem implements ManageableApplica
                        die("MSG:".$message);
                }
        }
+
+       /**
+        * Builds the master template's name
+        *
+        * @return      $masterTemplateName             Name of the master template
+        */
+       public function buildMasterTemplateName () {
+               return "hub_main";
+       }
 }
 
 // [EOF]
index e5ca83a159d15f2c0417ad65bccfb75e6cef2e72..c8da2e4243d39b381bbb4de27f57b05721c14599 100644 (file)
@@ -42,62 +42,5 @@ $cfg->setConfigEntry("debug_engine", "DebugErrorLogOutput");
 // CFG: WEB-CONTENT-TYPE
 $cfg->setConfigEntry("web_content_type", "");
 
-// CFG: HUB-INTRO-ENABLED
-$cfg->setConfigEntry("hub_intro_enabled", "Y");
-
-// CFG: HUB-MAX-AUTH-TRIES
-$cfg->setConfigEntry("hub_max_auth_tries", 3);
-
-// CFG: HUB-MSG-AUTH-TRIES
-$cfg->setConfigEntry("hub_msg_auth_tries", "AUTH_MAX_TRIES");
-
-// CFG: HUB-MSG-SPOOFING
-$cfg->setConfigEntry("hub_msg_spoofing", "SPOOFING");
-
-// CFG: HUB-MSG-AUTH-REPLY
-$cfg->setConfigEntry("hub_msg_auth_reply_timeout", "TIMEOUT_AUTH");
-
-// CFG: HUB-MSG-BYE
-$cfg->setConfigEntry("hub_msg_bye", "BYE");
-
-// CFG: HUB-MASTER-IP
-$cfg->setConfigEntry("hub_master_ip", "192.168.1.17");
-
-// CFG: HUB-MASTER-PORT
-$cfg->setConfigEntry("hub_master_port", 9060);
-
-// CFG: HUB-AUTH-REQUEST
-$cfg->setConfigEntry("hub_auth_request", "AUTH");
-
-// CFG: HUB-AUTH-REQUEST-TIMEOUT (5 seconds for whole auth procedure shall be fine)
-$cfg->setConfigEntry("hub_auth_request_timeout", 5);
-
-// CFG: HUB-PEER-HELLO
-$cfg->setConfigEntry("hub_peer_hello", "HELLO");
-
-// CFG: HUB-HELLO-REPLY
-$cfg->setConfigEntry("hub_hello_reply", "ELHO");
-
-// CFG: HUB-HELLO-TIMEOUT
-$cfg->setConfigEntry("hub_hello_timeout", 30);
-
-// CFG: HUB-HELLO-RETRIES
-$cfg->setConfigEntry("hub_hello_retires", 3);
-
-// CFG: HUB-PEER-PING
-$cfg->setConfigEntry("hub_peer_ping", "PING");
-
-// CFG: HUB-PING-REPLY
-$cfg->setConfigEntry("hub_ping_reply", "PONG");
-
-// CFG: HUB-PING-TIMEOUT
-$cfg->setConfigEntry("hub_ping_timeout", 10);
-
-// CFG: HUB-PING-MAXDROPS
-$cfg->setConfigEntry("hub_ping_maxdrops", 3);
-
-// CFG: HUB-PEER-MISS-PONG
-$cfg->setConfigEntry("hub_peer_miss_pong", "PONG_MISS");
-
 // [EOF]
 ?>
diff --git a/application/hub/exceptions/client/.htaccess b/application/hub/exceptions/client/.htaccess
deleted file mode 100644 (file)
index 3a42882..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Deny from all
diff --git a/application/hub/exceptions/client/class_HubHelloException.php b/application/hub/exceptions/client/class_HubHelloException.php
deleted file mode 100644 (file)
index 505cae5..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/**
- * An exception thrown when the "hello" command was not received
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
- * @license            GNU GPL 3.0 or any newer version
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * 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 HubHelloException extends HubException {
-       /**
-        * The constructor
-        *
-        * @param               $message                Message from the exception
-        * @param               $code           Code number for the exception
-        * @return      void
-        */
-       public final function __construct (array $msgArray, $code) {
-               // Construct the message
-               $message = sprintf("[%s:%d] Peer <u>%s</u> has not replyed our %s request within %d retries.<br />\n",
-                       $msgArray['this']->__toString(),
-                       $this->getLine(),
-                       $msgArray['peer']->getValidatedIP(),
-                       $msgArray['this']->getConfigInstance()->readConfig("hub_peer_hello"),
-                       $msgArray['this']->getConfigInstance()->readConfig("hub_hello_retires")
-               );
-
-               // Call parent constructor
-               parent::__construct($message, $code);
-       }
-}
-
-// [EOF]
-?>
diff --git a/application/hub/exceptions/client/class_HubPeerAuthorizationException.php b/application/hub/exceptions/client/class_HubPeerAuthorizationException.php
deleted file mode 100644 (file)
index 3df17be..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/**
- * An exception thrown then hub peer is not authorized
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
- * @license            GNU GPL 3.0 or any newer version
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * 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 HubPeerAuthorizationException extends HubException {
-       /**
-        * The constructor
-        *
-        * @param               $message                Message from the exception
-        * @param               $code           Code number for the exception
-        * @return      void
-        */
-       public final function __construct (array $msgArray, $code) {
-               // Construct the message
-               $message = sprintf("[%s:%d] Peer <u>%s</u> has reached the maximum of <u>%d</u> authorization tries. Disconnecting peer....<br />\n",
-                       $msgArray['this']->__toString(),
-                       $this->getLine(),
-                       $msgArray['peer']->getValidatedIP(),
-                       $msgArray['max']
-               );
-
-               // Call parent constructor
-               parent::__construct($message, $code);
-       }
-}
-
-// [EOF]
-?>
diff --git a/application/hub/exceptions/client/class_HubPeerTimeoutException.php b/application/hub/exceptions/client/class_HubPeerTimeoutException.php
deleted file mode 100644 (file)
index 312ea50..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/**
- * An exception when a hub peer has timed out
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
- * @license            GNU GPL 3.0 or any newer version
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * 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 HubPeerTimeoutException extends HubException {
-       /**
-        * The constructor
-        *
-        * @param               $message                Message from the exception
-        * @param               $code           Code number for the exception
-        * @return      void
-        */
-       public final function __construct (array $msgArray, $code) {
-               // Construct the message
-               $message = sprintf("[%s:%d] Peer <u>%s</u> is no longer responding. Trying to disconnect the peer...<br />\n",
-                       $msgArray['this']->__toString(),
-                       $this->getLine(),
-                       $msgArray['peer']->getValidatedIP()
-               );
-
-               // Call parent constructor
-               parent::__construct($message, $code);
-       }
-}
-
-// [EOF]
-?>
diff --git a/application/hub/exceptions/commands/.htaccess b/application/hub/exceptions/commands/.htaccess
deleted file mode 100644 (file)
index 3a42882..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Deny from all
diff --git a/application/hub/exceptions/commands/class_UnexpectedAwaitCommandException.php b/application/hub/exceptions/commands/class_UnexpectedAwaitCommandException.php
deleted file mode 100644 (file)
index bbde25a..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/**
- * An exception thrown when the received command is unexpected
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
- * @license            GNU GPL 3.0 or any newer version
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * 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 UnexpectedAwaitCommandException extends HubException {
-       /**
-        * The constructor
-        *
-        * @param               $message                Message from the exception
-        * @param               $code           Code number for the exception
-        * @return      void
-        */
-       public final function __construct (array $msgArray, $code) {
-               // Construct the message
-               $message = sprintf("[%s:%d] Not awaiting command %s from peer %s<br />\n",
-                       $msgArray['this']->__toString(),
-                       $this->getLine(),
-                       $msgArray['await'],
-                       $msgArray['this']->getPeerInstance()->getValidatedIP()
-               );
-
-               // Call parent constructor
-               parent::__construct($message, $code);
-       }
-}
-
-// [EOF]
-?>
diff --git a/application/hub/exceptions/master/.htaccess b/application/hub/exceptions/master/.htaccess
deleted file mode 100644 (file)
index 3a42882..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Deny from all
diff --git a/application/hub/exceptions/master/class_HubMasterDisconnectedException.php b/application/hub/exceptions/master/class_HubMasterDisconnectedException.php
deleted file mode 100644 (file)
index 782aa1a..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/**
- * An exception thrown when the master hub has disconnected
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
- * @license            GNU GPL 3.0 or any newer version
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * 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 HubMasterDisconnectedException extends HubException {
-       /**
-        * The constructor
-        *
-        * @param               $message                Message from the exception
-        * @param               $code           Code number for the exception
-        * @return      void
-        */
-       public final function __construct (array $msgArray, $code) {
-               // Construct the message
-               $message = sprintf("[%s:%d] Raw message received: %s<br />\n",
-                       $msgArray['this']->__toString(),
-                       $this->getLine(),
-                       $msgArray['msg']
-               );
-
-               // Call parent constructor
-               parent::__construct($message, $code);
-       }
-}
-
-// [EOF]
-?>
diff --git a/application/hub/exceptions/socket/.htaccess b/application/hub/exceptions/socket/.htaccess
deleted file mode 100644 (file)
index 3a42882..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Deny from all
diff --git a/application/hub/exceptions/socket/class_SocketException.php b/application/hub/exceptions/socket/class_SocketException.php
deleted file mode 100644 (file)
index 867c84c..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-/**
- * A general socket exception. This shall not be thrown so it defaults to abstract.
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
- * @license            GNU GPL 3.0 or any newer version
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-abstract class SocketException extends HubException {
-       /**
-        * The constructor
-        *
-        * @param               $message                Message from the exception
-        * @param               $code           Code number for the exception
-        * @return      void
-        */
-       public function __construct ($message, $code) {
-               // For now just pipe all data through
-               parent::__construct($message, $code);
-       }
-}
-
-// [EOF]
-?>
diff --git a/application/hub/exceptions/socket/connector/.htaccess b/application/hub/exceptions/socket/connector/.htaccess
deleted file mode 100644 (file)
index 3a42882..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Deny from all
diff --git a/application/hub/exceptions/socket/connector/class_SocketAcceptException.php b/application/hub/exceptions/socket/connector/class_SocketAcceptException.php
deleted file mode 100644 (file)
index ba2d03b..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/**
- * An exception for listening to sockets
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
- * @license            GNU GPL 3.0 or any newer version
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * 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 SocketAcceptException extends SocketException {
-       /**
-        * The constructor
-        *
-        * @param               $message                Message from the exception
-        * @param               $code           Code number for the exception
-        * @return      void
-        */
-       public final function __construct (array $msgArray, $code) {
-               // Construct the message
-               $message = sprintf("[%s:%d] socket_accept() has failed. Reason: <u>%s</u> (Code: <u>%d</u>)",
-                       $msgArray['this']->__toString(),
-                       $this->getLine(),
-                       socket_strerror($msgArray['code']),
-                       $msgArray['code']
-               );
-
-               // Call parent constructor
-               parent::__construct($message, $code);
-       }
-}
-
-// [EOF]
-?>
diff --git a/application/hub/exceptions/socket/connector/class_SocketSelectorException.php b/application/hub/exceptions/socket/connector/class_SocketSelectorException.php
deleted file mode 100644 (file)
index 83f7d8a..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/**
- * An exception for listening to sockets
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
- * @license            GNU GPL 3.0 or any newer version
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * 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 SocketSelectorException extends SocketException {
-       /**
-        * The constructor
-        *
-        * @param               $message                Message from the exception
-        * @param               $code           Code number for the exception
-        * @return      void
-        */
-       public final function __construct (array $msgArray, $code) {
-               // Construct the message
-               $message = sprintf("[%s:%d] socket_select() has failed. Reason: <u>%s</u> (Code: <u>%d</u>)",
-                       $msgArray['this']->__toString(),
-                       $this->getLine(),
-                       socket_strerror($msgArray['code']),
-                       $msgArray['code']
-               );
-
-               // Call parent constructor
-               parent::__construct($message, $code);
-       }
-}
-
-// [EOF]
-?>
diff --git a/application/hub/exceptions/socket/init/.htaccess b/application/hub/exceptions/socket/init/.htaccess
deleted file mode 100644 (file)
index 3a42882..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Deny from all
diff --git a/application/hub/exceptions/socket/init/class_SocketBindException.php b/application/hub/exceptions/socket/init/class_SocketBindException.php
deleted file mode 100644 (file)
index 6b71716..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-/**
- * An exception for socket setup problems
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
- * @license            GNU GPL 3.0 or any newer version
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * 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 SocketBindException extends SocketException {
-       /**
-        * The constructor
-        *
-        * @param               $message                Message from the exception
-        * @param               $code           Code number for the exception
-        * @return      void
-        */
-       public final function __construct (array $msgArray, $code) {
-               // Construct the message
-               $message = sprintf("[%s:%d] Socket konnte nicht an %s:%d gebunden werden. Reason: <u>%s</u> (Code: <u>%d</u>)", 
-                       $msgArray['this']->__toString(),
-                       $this->getLine(),
-                       $msgArray['host'],
-                       $msgArray['port'],
-                       socket_strerror($msgArray['code']),
-                       $msgArray['code']
-               );
-
-               // Call parent constructor
-               parent::__construct($message, $code);
-       }
-}
-
-// [EOF]
-?>
diff --git a/application/hub/exceptions/socket/init/class_SocketConnectException.php b/application/hub/exceptions/socket/init/class_SocketConnectException.php
deleted file mode 100644 (file)
index 879cea4..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/**
- * An exception for listening to sockets
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
- * @license            GNU GPL 3.0 or any newer version
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * 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 SocketConnectException extends SocketException {
-       /**
-        * The constructor
-        *
-        * @param               $message                Message from the exception
-        * @param               $code           Code number for the exception
-        * @return      void
-        */
-       public final function __construct (array $msgArray, $code) {
-               // Construct the message
-               $message = sprintf("[%s:%d] socket_connect() has failed. Reason: <u>%s</u> (Code: <u>%d</u>)",
-                       $msgArray['this']->__toString(),
-                       $this->getLine(),
-                       socket_strerror($msgArray['code']),
-                       $msgArray['code']
-               );
-
-               // Call parent constructor
-               parent::__construct($message, $code);
-       }
-}
-
-// [EOF]
-?>
diff --git a/application/hub/exceptions/socket/init/class_SocketCreationException.php b/application/hub/exceptions/socket/init/class_SocketCreationException.php
deleted file mode 100644 (file)
index eaeae36..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/**
- * An exception for socket creation problems
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
- * @license            GNU GPL 3.0 or any newer version
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * 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 SocketCreationException extends SocketException {
-       /**
-        * The constructor
-        *
-        * @param               $message                Message from the exception
-        * @param               $code           Code number for the exception
-        * @return      void
-        */
-       public final function __construct (array $msgArray, $code) {
-               // Construct the message
-               $message = sprintf("[%s:%d] Socket konnte nicht erstellt werden. Reason: <u>%s</u> (Code: <u>%d</u>)", 
-                       $msgArray['this']->__toString(),
-                       $this->getLine(),
-                       socket_strerror($msgArray['code']),
-                       $msgArray['code']
-               );
-
-               // Call parent constructor
-               parent::__construct($message, $code);
-       }
-}
-
-// [EOF]
-?>
diff --git a/application/hub/exceptions/socket/init/class_SocketListeningException.php b/application/hub/exceptions/socket/init/class_SocketListeningException.php
deleted file mode 100644 (file)
index f6fce58..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/**
- * An exception for listening to sockets
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
- * @license            GNU GPL 3.0 or any newer version
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * 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 SocketListeningException extends SocketException {
-       /**
-        * The constructor
-        *
-        * @param               $message                Message from the exception
-        * @param               $code           Code number for the exception
-        * @return      void
-        */
-       public final function __construct (array $msgArray, $code) {
-               // Construct the message
-               $message = sprintf("[%s:%d] socket_listen() has failed. Reason: <u>%s</u> (Code: <u>%d</u>)",
-                       $msgArray['this']->__toString(),
-                       $this->getLine(),
-                       socket_strerror($msgArray['code']),
-                       $msgArray['code']
-               );
-
-               // Call parent constructor
-               parent::__construct($message, $code);
-       }
-}
-
-// [EOF]
-?>
diff --git a/application/hub/exceptions/socket/init/class_SocketSetupException.php b/application/hub/exceptions/socket/init/class_SocketSetupException.php
deleted file mode 100644 (file)
index 789e6d1..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/**
- * An exception for socket setup problems
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
- * @license            GNU GPL 3.0 or any newer version
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * 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 SocketSetupException extends SocketException {
-       /**
-        * The constructor
-        *
-        * @param               $message                Message from the exception
-        * @param               $code           Code number for the exception
-        * @return      void
-        */
-       public final function __construct (array $msgArray, $code) {
-               // Construct the message
-               $message = sprintf("[%s:%d] Socket konnte nicht konfiguriert werden. Reason: <u>%s</u> (Code: <u>%d</u>)",
-                       $msgArray['this']->__toString(),
-                       $this->getLine(),
-                       socket_strerror($msgArray['code']),
-                       $msgArray['code']
-               );
-
-               // Call parent constructor
-               parent::__construct($message, $code);
-       }
-}
-
-// [EOF]
-?>
diff --git a/application/hub/exceptions/socket/peer/.htaccess b/application/hub/exceptions/socket/peer/.htaccess
deleted file mode 100644 (file)
index 3a42882..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Deny from all
diff --git a/application/hub/exceptions/socket/peer/class_BrokenPipeException.php b/application/hub/exceptions/socket/peer/class_BrokenPipeException.php
deleted file mode 100644 (file)
index 4217623..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/**
- * An exception for client sockets
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
- * @license            GNU GPL 3.0 or any newer version
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * 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 BrokenPipeException extends SocketException {
-       /**
-        * The constructor
-        *
-        * @param               $message                Message from the exception
-        * @param               $code           Code number for the exception
-        * @return      void
-        */
-       public final function __construct (array $msgArray, $code) {
-               // Construct the message
-               $message = sprintf("[%s:%d] Connection lost to peer <u>%s</u>. Error message: <u>%s</u> (Code: %d)<br />\n",
-                       $msgArray['this']->__toString(),
-                       $this->getLine(),
-                       $msgArray['this']->getValidatedIP(),
-                       socket_strerror($msgArray['code']),
-                       $msgArray['code']
-               );
-
-               // Call parent constructor
-               parent::__construct($message, $code);
-       }
-}
-
-// [EOF]
-?>
diff --git a/application/hub/exceptions/socket/peer/class_IPSpoofingException.php b/application/hub/exceptions/socket/peer/class_IPSpoofingException.php
deleted file mode 100644 (file)
index 6dab992..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/**
- * An exception for spoofed IP numbers (possible!)
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
- * @license            GNU GPL 3.0 or any newer version
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * 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 IPSpoofingException extends SocketException {
-       /**
-        * The constructor
-        *
-        * @param               $message                Message from the exception
-        * @param               $code           Code number for the exception
-        * @return      void
-        */
-       public final function __construct (array $msgArray, $code) {
-               // Construct the message
-               $message = sprintf("[%s:%d] Peer-IP hat sich von <u>%s</u> auf <u>%s</u> ge&auml;ndert.<br />\n", 
-                       $msgArray['this']->__toString(),
-                       $this->getLine(),
-                       $msgArray['old_ip'],
-                       $msgArray['new_ip']
-               );
-
-               // Call parent constructor
-               parent::__construct($message, $code);
-       }
-}
-
-// [EOF]
-?>
diff --git a/application/hub/exceptions/socket/peer/class_PeerSocketException.php b/application/hub/exceptions/socket/peer/class_PeerSocketException.php
deleted file mode 100644 (file)
index b5f40ed..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/**
- * An exception for client sockets
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
- * @license            GNU GPL 3.0 or any newer version
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * 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 PeerSocketException extends SocketException {
-       /**
-        * The constructor
-        *
-        * @param               $message                Message from the exception
-        * @param               $code           Code number for the exception
-        * @return      void
-        */
-       public final function __construct (array $msgArray, $code) {
-               // Construct the message
-               $message = sprintf("[%s:%d] Peer-Socket ist ung&uuml;ltig. Datentyp: <u>%s</u><br />\n",
-                       $msgArray['this']->__toString(),
-                       $this->getLine(),
-                       $msgArray['type']
-               );
-
-               // Call parent constructor
-               parent::__construct($message, $code);
-       }
-}
-
-// [EOF]
-?>
diff --git a/application/hub/main/class_HubCommandProcessor.php b/application/hub/main/class_HubCommandProcessor.php
deleted file mode 100644 (file)
index 0aba7a4..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-<?php
-/**
- * A class for handling commands to and from hubs including the master hub
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
- * @license            GNU GPL 3.0 or any newer version
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * 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 HubCommandProcessor extends BaseFrameworkSystem {
-       /**
-        * An instance of a HubPeer class
-        */
-       private $peerInstance = null;
-
-       /**
-        * A list of sent commands but not replied (yet)
-        */
-       private $sentCommandsAwaitingAnswer = array();
-
-       /**
-        * Queued commands from the master hub
-        */
-       private $masterCommands = array();
-
-       // Exceptions
-       const EXCEPTION_COMMAND_AWAIT_INVALID   = 0xc00;
-
-       /**
-        * The private constructor
-        *
-        * @return      void
-        */
-       protected function __construct () {
-               // Call parent constructor
-               parent::__construct(__CLASS__);
-
-               // Tidy up a little
-               $this->removeSystemArray();
-               $this->removeNumberFormaters();
-       }
-
-       /**
-        * Creates an instance of a HubCommandProcessor class by a HubPeer class
-        *
-        * @param               $peerInstance           An instance of a HubPeer class
-        * @return      $command                        An instance of this class
-        */
-       public final static function createHubCommandProcessor (HubPeer $peerInstance) {
-               // Get a new instance of this class
-               $command = new HubCommandProcessor();
-
-               // Set the hub instance
-               $command->setPeerInstance($peerInstance);
-
-               // Return the instance
-               return $command;
-       }
-
-       /**
-        * Setter for HubPeer instances
-        *
-        * @param               $peerInstance           An instance of a HubPeer class
-        * @return      void
-        */
-       public final function setPeerInstance(HubPeer $peerInstance) {
-               $this->peerInstance = $peerInstance;
-       }
-
-       /**
-        * Getter for HubPeer instances
-        *
-        * @return      $peerInstance           An instance of a HubPeer class
-        */
-       public final function getPeerInstance() {
-               return $this->peerInstance;
-       }
-
-       /**
-        * Handles simple commands which require an answer command from the peer without any parameters
-        *
-        * @param               $sendCommand            The command we shall send to the peer
-        * @param               $expectCommand          The command we except from the peer
-        * @return      void
-        */
-       public function simpleExecute ($sendCommand, $expectCommand) {
-               // Remember the command
-               $this->sentCommandsAwaitingAnswer[$expectCommand] = $sendCommand;
-
-               // Debug message
-               $this->getPeerInstance()->getHubInstance()->getOutputInstance()->output(sprintf("[%s] Sending command %s to peer %s",
-                       $this->__toString(),
-                       $sendCommand,
-                       $this->getPeerInstance()->getValidatedIP()
-               ));
-
-               // Execute the command
-               $this->getPeerInstance()->sendMessage($sendCommand);
-       }
-
-       /**
-        * Awaits a specified command from the peer and returns TRUE if received or FALSE if not.
-        *
-        * @param               $exceptCommand                                  The command we are expecting from the peer
-        * @return      $await                                          Wether the awaited command has been received
-        * @throws      UnexpectedAwaitCommandException If the awaited command is not being awaited...
-        */
-       public function ifAwaitsCommand ($expectCommand) {
-               $await = false;
-
-               // Do we wait for this command?
-               if (!isset($this->sentCommandsAwaitingAnswer[$expectCommand])) {
-                       // We are not waiting for this command
-                       throw new UnexpectedAwaitCommandException (
-                               array(
-                                       'this'  => $this,
-                                       'await' => $expectCommand
-                               ), self::EXCEPTION_COMMAND_AWAIT_INVALID
-                       );
-               } // END - if
-
-               // Then process it... :-)
-               $readCommand = $this->getPeerInstance()->readFromSocket();
-
-               // Is the command not empty?
-               if (!empty($readCommand)) {
-                       // Debug message
-                       $this->getPeerInstance()->getHubInstance()->getOutputInstance()->output(sprintf("[%s] Raw command %s received from peer %s",
-                               $this->__toString(),
-                               $readCommand,
-                               $this->getPeerInstance()->getValidatedIP()
-                       ));
-               } // END - if
-
-               if ($readCommand == $expectCommand) {
-                       // Debug message
-                       $this->getPeerInstance()->getHubInstance()->getOutputInstance()->output(sprintf("[%s] Awaited command %s received from peer %s",
-                               $this->__toString(),
-                               $expectCommand,
-                               $this->getPeerInstance()->getValidatedIP()
-                       ));
-
-                       // Expected command has been received!
-                       unset($this->sentCommandsAwaitingAnswer[$expectCommand]);
-                       $await = true;
-
-               } // END - if
-
-               // Return the result
-               return $await;
-       }
-
-       /**
-        * Awaits any command from the peer
-        *
-        * @return      $command                The sent command from the peer
-        */
-       public function awaitAnyCommand () {
-               $command = false;
-               $readCommand = $this->getPeerInstance()->readFromSocket();
-               if (!empty($readCommand)) {
-                       // Remember this command
-                       // TODO Add some validation here!
-                       $this->masterCommands[] = $readCommand;
-
-                       // A command is in the queue
-                       $command = true;
-               } // END - if
-
-               // Return status
-               return $command;
-       }
-
-} // END - class
-
-// [EOF]
-?>
diff --git a/application/hub/main/class_HubConnector.php b/application/hub/main/class_HubConnector.php
deleted file mode 100644 (file)
index d97759d..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-<?php
-/**
- * A class for making socket connections to other hubs including the master hub
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
- * @license            GNU GPL 3.0 or any newer version
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * 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 HubConnector extends BaseFrameworkSystem {
-       /**
-        * The socket we shall use for communication
-        */
-       private $socketResource = null;
-
-       /**
-        * The peer instance (HubPeer class)
-        */
-       private $peerInstance = null;
-
-       /**
-        * The private constructor
-        *
-        * @return      void
-        */
-       protected function __construct () {
-               // Call parent constructor
-               parent::__construct(__CLASS__);
-
-               // Tidy up a little
-               $this->removeSystemArray();
-               $this->removeNumberFormaters();
-       }
-
-       /**
-        * Creates an instance based on the (IP) address and port number of this
-        * class. Next it tries to connect to the specified peer and communicates
-        * to it over a socket
-        *
-        * @param               $address                                The peer's IP address
-        * @param               $port                           The peer's port number
-        * @param               $hubInstance                    An instance of a HubCoreLoop class
-        * @return      $connector                      An instance of this class
-        * @throws      HubHelloException               If HELLO retries reached maximum
-        */
-       public final static function createHubConnectorByAddressPort ($address, $port, HubCoreLoop $hubInstance) {
-               // Get a new instance of this class
-               $connector = new HubConnector();
-
-               // Connect to the given address and IP number
-               $connector->aquireConnectionToAddress($address, $port);
-
-               // Message to console
-               $hubInstance->getOutputInstance()->output(sprintf("[%s] Sending %s request to hub %s:%d...",
-                       __METHOD__,
-                       $connector->getConfigInstance()->readConfig("hub_peer_hello"),
-                       $address,
-                       $port
-               ));
-
-               // Get a HubPeer instance
-               $peerInstance = HubPeer::createHubPeerBySocket($connector->getSocketResource(), $hubInstance);
-
-               // Send a HELLO to the master hub
-               $helloed = 0; $retries = 0;
-               while (!$peerInstance->ifHelloReplied()) {
-                       // Within timeout?
-                       if ((time() - $helloed) >= $connector->getConfigInstance()->readConfig("hub_hello_timeout")) {
-                               // Send HELLOs out in periodic times
-                               $peerInstance->sendMessage($connector->getConfigInstance()->readConfig("hub_peer_hello"));
-                               $helloed = time(); $retries++;
-                               if ($retries == $connector->getConfigInstance()->readConfig("hub_hello_retires")) {
-                                       // Maximum retries reached
-                                       throw new HubHelloException(
-                                               array(
-                                                       'this'  => $connector,
-                                                       'peer'  => $peerInstance
-                                               ), HubCoreLoop::EXCEPTION_HELLO_TIMED_OUT
-                                       );
-                               }
-                       } // END - if
-               } // END - while
-
-               // Set the peer instance
-               $connector->setPeerInstance($peerInstance);
-
-               // Return the instance
-               return $connector;
-       }
-
-       /**
-        * Aquires a socket link to a specified IP address and port number. It
-        * throws subclasses of SocketException-s if the peer is down or not
-        * responding. If the connection is up it writes it's resource into
-        * the attribute $socketResource and waits for incoming data packages.
-        *
-        * @param               $address                                The peer's IP address
-        * @param               $port                           The peer's port number
-        * @return      void
-        * @throws      SocketCreationException If creation of the socket wents wrong
-        * @throws      SocketConnectException  If the connection was not established
-        */
-       public function aquireConnectionToAddress ($address, $port) {
-               // Create a socket for binding to the address
-               $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
-
-               // Was it a success?
-               if (!is_resource($socket)) {
-                       // This fails! :(
-                       throw new SocketCreationException(
-                               array(
-                                       'this' => $this,
-                                       'code' => socket_last_error()
-                               ), HubCoreLoop::EXCEPTION_SOCKET_PROBLEM
-                       );
-               } // END - fi
-
-               // Now connect to the peer
-               if (@socket_connect($socket, $address, $port) === false) {
-                       // Something wents wrong!
-                       throw new SocketConnectException (
-                               array(
-                                       'this'  => $this,
-                                       'code'  => socket_last_error()
-                               ), HubCoreLoop::EXCEPTION_SOCKET_PROBLEM
-                       );
-               } // END - if
-
-               // Set non-blocking mode
-               @socket_set_nonblock($socket);
-
-               // Set the socket
-               $this->socketResource = $socket;
-       }
-
-       /**
-        * Getter for current socket
-        *
-        * @return      $socketResource The current socket resource or null if not set
-        */
-       public final function getSocketResource() {
-               return $this->socketResource;
-       }
-
-       /**
-        * Setter for a HubPeer instance
-        *
-        * @param               $peerInstance           An instance of a HubPeer class
-        * @return      void
-        */
-       public final function setPeerInstance (HubPeer $peerInstance) {
-               $this->peerInstance = $peerInstance;
-       }
-
-       /**
-        * Handles any incoming master requests
-        *
-        * @return      void
-        */
-       public function handleMasterRequests () {
-               // Just ask the peer instance
-               $command = $this->peerInstance->handleMasterRequests();
-       }
-
-} // END - class
-?>
diff --git a/application/hub/main/class_HubCoreLoop.php b/application/hub/main/class_HubCoreLoop.php
deleted file mode 100644 (file)
index e2cc629..0000000
+++ /dev/null
@@ -1,755 +0,0 @@
-<?php
-/**
- * The hub's main loop. The hub will wait and listen for incoming requests in
- * this loop.
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
- * @license            GNU GPL 3.0 or any newer version
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * 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 HubCoreLoop extends BaseFrameworkSystem {
-       /**
-        * Wether the hub is active and running
-        */
-       private $hubActivated = false;
-
-       /**
-        * Wether the hub is shutting down
-        */
-       private $hubShutsDown = false;
-
-       /**
-        * A list of all connected peers (sockets)
-        */
-       private $connectedPeers = null;
-
-       /**
-        * A console output handler
-        */
-       private $outputInstance = null;
-
-       /**
-        * Reading peers
-        */
-       private $readPeers = array();
-
-       /**
-        * Writing peers
-        */
-       private $writePeers = array();
-
-       /**
-        * The main socket (listening) for this hub
-        */
-       private $main_socket = null;
-
-       /**
-        * A list of authenticated peers
-        */
-       private $authPeers = null;
-
-       /**
-        * Last peer instance
-        */
-       private $lastPeerInstance = null;
-
-       /**
-        * Wether this hub is a master hub
-        */
-       private $hubIsMaster = false;
-
-       /**
-        * Maximum auth retries (cached)
-        */
-       private $authRetries = 0;
-
-       /**
-        * Auth request message
-        */
-       private $authRequest = "";
-
-       /**
-        * Cached timeout for auth requests
-        */
-       private $authRequestTimeout = 0;
-
-       /**
-        * An instance to the HubConnector class for master hub connection
-        */
-       private $masterConnector = null;
-
-       // Exception codes
-       const EXCEPTION_SOCKET_PROBLEM                  = 0xb00;
-       const EXCEPTION_HUB_PEER_TIMEOUT                = 0xb01;
-       const EXCEPTION_HUB_PEER_FAILED_AUTH    = 0xb02;
-       const EXCEPTION_HELLO_TIMED_OUT                 = 0xb03;
-
-       /**
-        * The private constructor
-        *
-        * @return      void
-        */
-       protected function __construct () {
-               // Call parent constructor
-               parent::__construct(__CLASS__);
-
-               // Tidy up a little
-               $this->removeSystemArray();
-               $this->removeNumberFormaters();
-
-               // Init the peer list
-               $this->initPeerList();
-       }
-
-       /**
-        * Factory for main loop
-        *
-        * @return      $hubInstance            An instance of this class
-        */
-       public final static function createHubCoreLoop () {
-               // Get an instance
-               $hubInstance = new HubCoreLoop();
-
-               // Try to setup the socket
-               $hubInstance->setupHub();
-
-               // Get the configuration variable
-               $outEngine = $hubInstance->getConfigInstance()->readConfig("tpl_engine");
-
-               // Setup the console output handler
-               $eval = sprintf("\$hubInstance->setOutputInstance(%s::create%s(\"%s\"));",
-                       $outEngine,
-                       $outEngine,
-                       $hubInstance->getConfigInstance()->readConfig("web_content_type")
-               );
-
-               // Debug message
-               if ((defined('DEBUG_EVAL')) || (defined('DEBUG_ALL'))) $hubInstance->getDebugInstance()->output(sprintf("[%s:] Konstruierte PHP-Anweisung: %s",
-                       $hubInstance->__toString(),
-                       htmlentities($eval)
-               ));
-               @eval($eval);
-
-               // Return the prepared instance
-               return $hubInstance;
-       }
-
-       /**
-        * Initializes the peer list
-        *
-        * @return      void
-        */
-       private final function initPeerList () {
-               $this->connectedPeers = new FrameworkArrayObject("FakedConnectedPeers");
-               $this->authPeers      = new FrameworkArrayObject("FakeAuthPeers");
-       }
-
-       /**
-        * Get total number of connected peers
-        *
-        * @return      $num            The total number of connected peers
-        */
-       private final function getTotalConnectedPeers () {
-               $read = array($this->connectedPeers->getIterator()->current());
-               $write = array();
-               $except = array();
-
-               // Get socket number
-               $num = socket_select(
-                       $read,
-                       $write,
-                       $except,
-                       0
-               );
-
-               // Transfer readers and writers
-               $this->readPeers        = $read;
-               $this->writePeers       = $write;
-
-               // Return the number
-               return $num;
-       }
-
-       /**
-        * Handle newly connected peers
-        *
-        * @return      void
-        */
-       private final function handleNewPeers () {
-               // Output message
-               $this->getOutputInstance()->output(sprintf("[%s] Validating peer...", __METHOD__));
-
-               // Is the main socket in the array?
-               if (in_array($this->main_socket, $this->readPeers)) {
-                       // Accept the connection and add him to the list
-                       $peer_socket = socket_accept($this->main_socket);
-
-                       // Get a new peer instance
-                       $this->setCurrPeerInstance(HubPeer::createHubPeerBySocket($peer_socket, $this));
-
-                       // Register the new peer
-                       $this->getOutputInstance()->output(sprintf("[%s] Registering new peer with IP %s.",
-                               __METHOD__,
-                               $this->getCurrPeerInstance()->getValidatedIP()
-                       ));
-                       $this->connectedPeers->append($this->lastPeerInstance);
-
-                       // A new peer has connected
-                       $this->getOutputInstance()->output(sprintf("[%s] New peer with IP %s has been registered.",
-                               __METHOD__,
-                               $this->getCurrPeerInstance()->getValidatedIP()
-                       ));
-
-                       // Remove him from the list
-                       $key = array_search($this->main_socket, $this->readPeers);
-                       unset($this->readPeers[$key]);
-               } // END - if
-       }
-
-       /**
-        * Handles unauthenticated peers
-        *
-        * @return      void
-        * @throws      HubPeerTimeoutException                 If the peer times out to answer a request
-        * @throws      HubPeerAuthorizationException           If the peer fails to authorize himself (to many retries)
-        */
-       private final function handleUnauthPeers () {
-               // Are there some peers?
-               if ($this->connectedPeers->count() > 1) {
-                       // Iterate through all connected peers
-                       for ($idx = $this->connectedPeers->getIterator(); $idx->valid(); $idx->next()) {
-                               // Get current peer
-                               $this->lastPeerInstance = $idx->current();
-
-                               // Ignore own socket and invalid entries
-                               if (($this->getCurrPeerInstance() !== $this->main_socket) && (is_object($this->getCurrPeerInstance())) && ($this->getCurrPeerInstance() instanceof HubPeer)) {
-                                       // Is this peer already authorized or is this the master hub?
-                                       // If this is the master hub then there is no auth required
-                                       if ((!$this->getCurrPeerInstance()->ifPeerIsAuthorized()) && (!$this->getCurrPeerInstance()->ifPeerIsLocalAdmin()) && (!$this->hubIsMaster)) {
-                                               // This peer waits for authorization, so does he have some tries left?
-                                               if ($this->getCurrPeerInstance()->getAuthRetries() <= $this->authRetries) {
-                                                       // This peer is still allowed to try his authorization
-                                                       if ($this->getCurrPeerInstance()->getLastSentMessage() == $this->authRequest) {
-                                                               // Already asked so maybe timed out?
-                                                               if ((time() - $this->getCurrPeerInstance()->getLastSentMessageStamp()) >= $this->authRequestTimeout) {
-                                                                       // Timed out so disconnect the peer
-                                                                       throw new HubPeerTimeoutException (
-                                                                               array(
-                                                                                       'this'  => $this,
-                                                                                       'peer'  => $this->getCurrPeerInstance()
-                                                                               ), self::EXCEPTION_HUB_PEER_TIMEOUT
-                                                                       );
-                                                               } // END - if
-                                                       } elseif ($this->getCurrPeerInstance()->ifHelloReceived()) {
-                                                               // HELLO received so we need to sent the AUTH request
-                                                               $this->getCurrPeerInstance()->askAuthorizationKey();
-                                                       }
-                                               } else {
-                                                       // This peer needs disconnecting!
-                                                       throw new HubPeerAuthorizationException (
-                                                               array(
-                                                                       'this'  => $this,
-                                                                       'peer'  => $this->getCurrPeerInstance(),
-                                                                       'max'   => $this->authRetries
-                                                               ), self::EXCEPTION_HUB_PEER_FAILED_AUTH
-                                                       );
-                                               } // END - else
-                                       } elseif ((!$this->getCurrPeerInstance()->ifPeerIsAuthorized()) && ($this->getCurrPeerInstance()->ifPeerIsLocalAdmin())) {
-                                               // This peer is a local admin so he is always authorized!
-                                               $this->getCurrPeerInstance()->enableLocalAdmin();
-
-                                               // Output debug message
-                                               $this->getOutputInstance()->output(sprintf("[%s] A local admin has connected.",
-                                                       $this->__toString()
-                                               ));
-
-                                               // Say "hi" to the admin
-                                               $this->getCurrPeerInstance()->sayHi2Admin();
-                                       } elseif (($this->hubIsMaster) && ($this->getCurrPeerInstance()->ifHelloReceived()) && (!$this->getCurrPeerInstance()->ifELHOsent())) {
-                                               // Is the master hub so authorize the peer here...
-                                               $this->getCurrPeerInstance()->enableIsAuthorized();
-                                               $this->authPeers->append($this->getCurrPeerInstance());
-
-                                               // Reply the HELLO request
-                                               $this->getCurrPeerInstance()->replyHelloMessage();
-                                       }
-                               } // END - if
-                       } // END - for
-               } // END - if
-       }
-
-       /**
-        * Handles only authorized peers
-        *
-        * @return      void
-        */
-       public function handleAuthPeers () {
-               // Are there some peers?
-               if (($this->connectedPeers->count() > 1) && ($this->authPeers->count() > 0)) {
-                       // Iterate through all connected peers
-                       for ($idx = $this->authPeers->getIterator(); $idx->valid(); $idx->next()) {
-                               // Get current peer
-                               $this->lastPeerInstance = $idx->current();
-
-                               // Do the ping and update our authPeer list (LATER!)
-                               $this->lastPeerInstance->handlePingPeer();
-
-                               // Avoids a notice...
-                               if (is_null($this->getCurrPeerInstance())) break;
-                       } // END - for
-               } // END - for
-       }
-
-       /**
-        * Setup the hub: Create a socket for listening on incoming requests,
-        * try to bind to a port, etc.
-        *
-        * @return      void
-        * @throws      SocketCreationException         If a socket cannot be created
-        * @throws      SocketSetupException            If a socket cannot be setuped
-        * @throws      SocketBindException                     If a socket cannot be bind to
-        *                                                                      an address and port
-        * @throws      SocketListeningException                If listening to a socket fails
-        */
-       private final function setupHub () {
-               // Create a new TCP socket
-               $main_socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
-
-               // Was it a success?
-               if (!is_resource($main_socket)) {
-                       // This fails! :(
-                       throw new SocketCreationException(
-                               array(
-                                       'this' => $this,
-                                       'code' => socket_last_error()
-                               ), self::EXCEPTION_SOCKET_PROBLEM
-                       );
-               }
-
-               // Set socket options
-               if (!socket_set_option($main_socket, SOL_SOCKET, SO_REUSEADDR, 1)) {
-                       // Close the socket
-                       $this->closeSocket($main_socket);
-
-                       // Problems setting socket options
-                       throw new SocketSetupException (
-                               array(
-                                       'this' => $this,
-                                       'code' => socket_last_error()
-                               ), self::EXCEPTION_SOCKET_PROBLEM
-                       );
-               }
-
-               // Set to non-blocking
-               socket_set_nonblock($main_socket);
-
-               // Bind the socket to an address
-               if (!socket_bind($main_socket, $this->getConfigInstance()->readConfig("hub_listen_addr"), $this->getConfigInstance()->readConfig("hub_listen_port"))) {
-                       // Bind failed
-                       throw new SocketBindException (
-                               array(
-                                       'this' => $this,
-                                       'host' => $this->getConfigInstance()->readConfig("hub_listen_addr"),
-                                       'port' => $this->getConfigInstance()->readConfig("hub_listen_port"),
-                                       'code' => socket_last_error()
-                               ), self::EXCEPTION_SOCKET_PROBLEM
-                       );
-               }
-
-               // Listen to ... the socket ;-)
-               if (!socket_listen($main_socket)) {
-                       // Opps, that didn't work. Next time better listen to your heart... Roxette
-                       throw new SocketListeningException(
-                               array(
-                                       'this' => $this,
-                                       'code' => socket_last_error()
-                               ), self::EXCEPTION_SOCKET_PROBLEM
-                       );
-               }
-
-               // Ignore user abort and do not time out
-               @set_time_limit(0);
-               @ignore_user_abort(true);
-
-               // Cache more configuration stuff
-               $this->authRetries        = $this->getConfigInstance()->readConfig("hub_max_auth_tries");
-               $this->authRequest        = $this->getConfigInstance()->readConfig("hub_auth_request");
-               $this->authRequestTimeout = $this->getConfigInstance()->readConfig("hub_auth_request_timeout");
-
-               // The hub is running now!
-               $this->hubActivated = true;
-
-               // Append the main hub
-               $this->main_socket = $main_socket;
-               $this->connectedPeers->append($main_socket);
-       }
-
-       /**
-        * Removes the current peer from the list
-        *
-        * @return      void
-        */
-       public final function removePeerFromConnectList () {
-               // Iterate through all connected peers
-               for ($idx = $this->connectedPeers->getIterator(); $idx->valid(); $idx->next()) {
-                       // Get current peer from list
-                       $peer = $idx->current();
-
-                       // Is it a peer instance?
-                       if (($peer !== $this->main_socket) && (is_object($peer)) && ($peer instanceof HubPeer)) {
-                               // Okay, we have a peer instance so is it the same?
-                               if ($this->getCurrPeerInstance()->equals($peer)) {
-                                       // Remove him!
-                                       $idx->offsetUnset($idx->key());
-
-                                       // Remove the last instance as well
-                                       $this->lastPeerInstance = null;
-
-                                       // Remove the socket as well
-                                       $this->removeSocket($peer);
-
-                                       // Stop searching here
-                                       break;
-                               }
-                       }
-               }
-       }
-
-       /**
-        * Getter for console output handler
-        *
-        * @return      $outputInstance An instance of the output handler
-        */
-       public final function getOutputInstance () {
-               return $this->outputInstance;
-       }
-
-       /**
-        * Setter for console output handler
-        *
-        * @param               $outputInstance An instance of the output handler
-        */
-       public final function setOutputInstance ($outputInstance) {
-               $this->outputInstance = $outputInstance;
-       }
-
-       /**
-        * Getter for current peer instance to HubPeer class
-        *
-        * @return      $lastPeerInstance               Last peer instance
-        */
-       public final function getCurrPeerInstance () {
-               return $this->lastPeerInstance;
-       }
-
-       /**
-        * Setter for current peer instance to HubPeer class
-        *
-        * @param               $lastPeerInstance               Last peer instance
-        * @return      void
-        */
-       public final function setCurrPeerInstance (HubPeer $lastPeerInstance) {
-               $this->lastPeerInstance = $lastPeerInstance;
-       }
-
-       /**
-        * Checks wether the hub is running and not in shutdown phase
-        *
-        * @return      $isRunning      If the hub is running and not in shutdown phase
-        */
-       public function ifHubIsRunning () {
-               return ((($this->hubActivated) || (!$this->hubShutsDown)) && ($this->connectedPeers->count() > 0));
-       }
-
-       /**
-        * Output the intro text
-        *
-        * @return      void
-        */
-       public final function outputIntro () {
-               if ($this->getConfigInstance()->readConfig("hub_intro_enabled") == "Y") {
-                       // Output intro text
-                       $this->getOutputInstance()->output(sprintf("%s v%s Copyright (c) 2007, 2008 by Roland H&auml;der",
-                               ApplicationHelper::getInstance()->getAppName(),
-                               ApplicationHelper::getInstance()->getAppVersion()
-                       ));
-                       $this->getOutputInstance()->output("");
-                       $this->getOutputInstance()->output("This software is free software licensed under the GNU GPL. In telnet session enter &quot;/license&quot; to read the license.");
-                       $this->getOutputInstance()->output("This software uses the MXChange Framework, Copyright (c) 2007, 2008 by Roland H&auml;der which is licensed under the GNU GPL.");
-                       $this->getOutputInstance()->output("Enter &quot;/framework&quot; in telnet session to read that license.");
-                       $this->getOutputInstance()->output("");
-                       $this->getOutputInstance()->output("All core systems are initialized. Input on *this* console will currently be ignored!");
-                       $this->getOutputInstance()->output("");
-                       $this->getOutputInstance()->output(sprintf("[%s] Listening on: %s:%d",
-                               $this->__toString(),
-                               $this->getConfigInstance()->readConfig("hub_listen_addr"),
-                               $this->getConfigInstance()->readConfig("hub_listen_port")
-                       ));
-                       $this->getOutputInstance()->output("----------------------------------------------------------------------------------------------------------------------------");
-               }
-       }
-
-       /**
-               * Do the main loop
-               *
-               * @return       void
-               * @throws       SocketCreationException         If the main socket is not a resource
-               */
-        public function coreLoop () {
-               // Is the main socket vailid?
-               if (!is_resource($this->main_socket)) {
-                       // Is not valid!
-                       throw new SocketCreationException(
-                               array(
-                                       'this'  => $this,
-                                       'code'  => socket_last_error()
-                               ), self::EXCEPTION_SOCKET_PROBLEM
-                       );
-               } // END - if
-
-               // We are ready to serve requests
-               $this->getOutputInstance()->output(sprintf("[%s] Ready to serve requests.",
-                       $this->__toString()
-               ));
-
-               // Wait until the hub is shutting down
-               while ($this->ifHubIsRunning()) {
-                       // Get number of total connected peers
-                       $num = $this->getTotalConnectedPeers();
-
-                       try {
-                               // Handle the master hub connection
-                               if ($this->masterConnector instanceof HubConnector) {
-                                       $this->masterConnector->handleMasterRequests();
-                               }
-
-                               // Check for unauthorized peers
-                               $this->handleUnauthPeers();
-
-                               // Handle authorized peers
-                               $this->handleAuthPeers();
-                       } catch (HubPeerAuthorizationException $e) {
-                               // Authorization has failed
-                               $this->disconnectPeerWithReason("hub_msg_auth_tries");
-
-                               // Get new total connected peers
-                               $num = $this->getTotalConnectedPeers();
-                       } catch (HubPeerTimeoutException $e) {
-                               // Disconnect and remove the peer
-                               $this->disconnectPeerWithReason("hub_msg_auth_reply_timeout");
-
-                               // Get new total connected peers
-                               $num = $this->getTotalConnectedPeers();
-                       } catch (HubMasterDisconnectedException $e) {
-                               // The master hub has disconnected us... :(
-                               $this->masterConnector = null;
-                               $this->getOutputInstance()->output(sprintf("[%s] The master has disconnected us. Reason given: %s",
-                                       $this->__toString(),
-                                       $e->getMessage()
-                               ));
-
-                               // Get new total connected peers
-                               $num = $this->getTotalConnectedPeers();
-                       } catch (BrokenPipeException $e) {
-                               // Broken pipes are bad for us... :(
-                               $this->removePeerFromConnectList();
-                               $this->getOutputInstance()->output(sprintf("[%s] A peer has closed the connection unexpected: %s",
-                                       $this->__toString(),
-                                       $e->getMessage()
-                               ));
-
-                               // Get new total connected peers
-                               $num = $this->getTotalConnectedPeers();
-                       } catch (FrameworkException $e) {
-                               // Catch all other exceptions and output them
-                               hub_exception_handler($e);
-
-                               // Get new total connected peers
-                               $num = $this->getTotalConnectedPeers();
-                       }
-
-                       // Are there some peers?
-                       if ($num < 1) {
-                               // Wait for more peers
-                               continue;
-                       } // END - if
-
-                       // A new peer has connected
-                       $this->getOutputInstance()->output(sprintf("[%s] A new peer is connecting.",
-                               $this->__toString()
-                       ));
-
-                       try {
-                               // Check for new peers
-                               $this->handleNewPeers();
-                       } catch (IPSpoofingException $e) {
-                               // Output message
-                               $this->getOutputInstance()->output(sprintf("[%s] The peer's IP number has changed!",
-                                       $this->__toString()
-                               ));
-
-                               // Output debug message
-                               $this->getDebugInstance()->output(sprintf("[%s] Peer spoofes IP number: %s",
-                                       $this->__toString(),
-                                       $e->getMessage()
-                               ));
-
-                               // Disconnect the peer first
-                               $this->disconnectPeerWithReason("hub_msg_spoofing");
-
-                               // Get new total connected peers
-                               $num = $this->getTotalConnectedPeers();
-                       } catch (FrameworkException $e) {
-                               // Catch all exceptions and output them to avoid aborting the program unexpectly
-                               hub_exception_handler($e);
-
-                               // Get new total connected peers
-                               $num = $this->getTotalConnectedPeers();
-                       }
-
-               } // END - while
-       }
-
-       /**
-        * Tries to contact the master server or simply reports that we are the master server
-        *
-        * @return      void
-        */
-       public function contactMasterHub () {
-               // Checks wether we are the master hub
-               if ($_SERVER['SERVER_ADDR'] == $this->getConfigInstance()->readConfig("hub_master_ip")) {
-                       // We are master!
-                       $this->hubIsMaster = true;
-                       $this->getOutputInstance()->output(sprintf("[%s] Our IP %s matches the master IP. Becoming master hub...",
-                               $this->__toString(),
-                               $_SERVER['SERVER_ADDR']
-                       ));
-               } else {
-                       // A regular hub or ultra hub so let's contact the master
-                       $this->getOutputInstance()->output(sprintf("[%s] Contacting the master hub at %s:%d...",
-                               $this->__toString(),
-                               $this->getConfigInstance()->readConfig("hub_master_ip"),
-                               $this->getConfigInstance()->readConfig("hub_master_port")
-                       ));
-
-                       // Try to aquire a connection to the master...
-                       try {
-                               // Announce us to the master hub
-                               $this->announceToMasterHub();
-                       } catch (FrameworkException $e) {
-                               // Catch all exceptions and output them
-                               hub_exception_handler($e);
-                       }
-               } // END - else
-       }
-
-       /**
-        * Disconnects the current with a configurable reason
-        *
-        * @param               $reasonEntry    The entry with the disconnection reason aka. message to the peer
-        * @return      void
-        */
-        public function disconnectPeerWithReason ($reasonEntry) {
-               // Default is that we cannot read the peer's IP number
-               $ip = "0.0.0.0";
-
-               // Try to disconnect here
-               try {
-                       // First get the raw IP number
-                       $ip = $this->getCurrPeerInstance()->getValidatedIP();
-
-                       // Disconnect the peer...
-                       $this->getCurrPeerInstance()->disconnectWithReason($this->getConfigInstance()->readConfig($reasonEntry));
-               } catch (FrameworkException $e) {
-                       // Catch all exceptions and output them
-                       hub_exception_handler($e);
-               }
-
-               // Remove him from the list anyway
-               $this->removePeerFromConnectList();
-
-               // Output the message
-               $this->getOutputInstance()->output(sprintf("[%s] Peer %s has been disconnected.",
-                       $this->__toString(),
-                       $ip
-               ));
-       }
-
-       /**
-        * Announces this hub to the master hub. This is being done by connecting to it and asking for auth request
-        *
-        * @return      void
-        */
-       public function announceToMasterHub () {
-               try {
-                       // Create a new instance for communicating to the master hub
-                       $this->masterConnector = HubConnector::createHubConnectorByAddressPort(
-                               $this->getConfigInstance()->readConfig("hub_master_ip"),
-                               $this->getConfigInstance()->readConfig("hub_master_port"),
-                               $this
-                       );
-
-                       // Send all our accepted objects to the master hub
-                       $this->masterConnector->sendAllAcceptedObjects();
-               } catch (SocketConnectException $e) {
-                       // The master hub is down!
-                       ApplicationEntryPoint::app_die($e->getMessage());
-               }
-       }
-
-       /**
-        * Removes a given peer instance (socket) from all lists
-        *
-        * @param       $peerInstance           An instance of a HubPeer class
-        * @return      void
-        */
-       private function removeSocket (HubPeer $peerInstance) {
-               // Get socket from peer
-               $socket = $peerInstance->getPeerSocket();
-
-               // Search for readers
-               $key = array_search($socket, $this->readPeers, true);
-               if ($key !== false) {
-                       // Remove from reader list
-                       unset($this->readPeers[$key]);
-               }
-
-               // Search for writers
-               $key = array_search($socket, $this->writePeers, true);
-               if ($key !== false) {
-                       // Remove from writer list
-                       unset($this->writePeers[$key]);
-               }
-
-               // Remove from auth peers as well
-               for ($idx = $this->authPeers->getIterator(); $idx->valid(); $idx->next()) {
-                       // Get current entry
-                       $current = $idx->current();
-
-                       // Is it the same?
-                       if ($current->equals($peerInstance)) {
-                               // Remove from auth (-awaiting) list
-                               $idx->offsetUnset($idx->key());
-                               break;
-                       }
-               }
-       }
-
-} // END - class
-
-// [EOF]
-?>
diff --git a/application/hub/main/class_HubPeer.php b/application/hub/main/class_HubPeer.php
deleted file mode 100644 (file)
index c257bf2..0000000
+++ /dev/null
@@ -1,670 +0,0 @@
-<?php
-/**
- * A hub peer class for communicating with the hub peer
- *
- * @author             Roland Haeder <webmaster@ship-simu.org>
- * @version            0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
- * @license            GNU GPL 3.0 or any newer version
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * 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 HubPeer extends BaseFrameworkSystem {
-       /**
-        * This peer's socket resource
-        */
-       private $peerSocket = null;
-
-       /**
-        * Timestamp for connection
-        */
-       private $connectTime = 0;
-
-       /**
-        * Timestamp of last received message
-        */
-       private $lastReceivedMessageStamp = 0;
-
-       /**
-        * Last received message
-        */
-       private $lastReceivedMessage = "";
-
-       /**
-        * Timestamp of last sent message
-        */
-       private $lastSentMessageStamp = 0;
-
-       /**
-        * Last sent message
-        */
-       private $lastSentMessage = "";
-
-       /**
-        * Number of tries for authorization
-        */
-       private $authRetries = 0;
-
-       /**
-        * Wether the peer is authorized (DO NEVER SET THIS TO "true"!)
-        */
-       private $isAuthorized = false;
-
-       /**
-        * Wether this peer needs to be requested for the AUTH command
-        */
-       private $needAuthRequest = true;
-
-       /**
-        * The peer's IP number
-        */
-       private static $peerIP = "0.0.0.0";
-
-       /**
-        * Wether the peer has "hello-ed" to the other
-        */
-       private $helloSent = false;
-
-       /**
-        * Wether the peer has replied our HELLO
-        */
-       private $helloReplied = false;
-
-       /**
-        * Wether we have sent our ELHO
-        */
-       private $elhoSent = false;
-
-       /**
-        * An instance of HubCoreLoop
-        */
-       private $hubInstance = null;
-
-       /**
-        * When the last ping was
-        */
-       private $lastPinged = 0;
-
-       /**
-        * When the last pong was
-        */
-       private $lastPonged = 0;
-
-       /**
-        * Number of missing pongs from the other peer
-        */
-       private $missingPongs = 0;
-
-       /**
-        * An instance of a HubCommandProcessor class
-        */
-       private $commandInstance = null;
-
-       /**
-        * A queue for reading data in non-blocking mode
-        */
-       private $queues = "";
-
-       /**
-        * Line ends
-        */
-       const LINE_END = "\n";
-
-       //----------------------------------------------------------
-       //                              Exceptions
-       //----------------------------------------------------------
-       const EXCEPTION_PEER_SOCKET_INVALID             = 0x200;
-       const EXCEPTION_PEER_IP_CHANGED                 = 0x201;
-       const EXCEPTION_PEER_SOCKET_BROKEN              = 0x202;
-       //----------------------------------------------------------
-
-       /**
-        * The private constructor
-        */
-       protected function __construct () {
-               // Call parent constructor
-               parent::__construct(__CLASS__);
-
-               // Tidy up a little
-               $this->removeSystemArray();
-               $this->removeNumberFormaters();
-
-               // Get a command processor
-               $this->commandInstance = HubCommandProcessor::createHubCommandProcessor($this);
-       }
-
-       /**
-        * Creates an instance of a HubPeer by a provided valid socket resource
-        *
-        * @param               $peerSocket             The socket resource for the peer
-        * @param               $hubInstance            An instance of HubCoreLoop
-        * @return      $peerInstance           An instance of HubPeer
-        */
-       public final static function createHubPeerBySocket ($peerSocket, HubCoreLoop $hubInstance) {
-               // Get a new instance
-               $peerInstance = new HubPeer();
-
-               // Is the peer socket fine?
-               if (!is_resource($peerSocket)) {
-                       // There is a problem with the socket
-                       throw new PeerSocketException (
-                               array(
-                                       'this'  => $peerInstance,
-                                       'type'  => gettype($peerSocket)
-                               ), self::EXCEPTION_PEER_SOCKET_INVALID
-                       );
-               }
-
-               // Set the socket
-               $peerInstance->setPeerSocket($peerSocket);
-
-               // Set connection timestamp
-               $peerInstance->setConnectionTimestamp();
-
-               // Set the hub instance
-               $peerInstance->setHubInstance($hubInstance);
-
-               // Return the instance
-               return $peerInstance;
-       }
-
-       //----------------------------------------------------------
-       //                      Public getter/setter
-       //----------------------------------------------------------
-
-       /**
-        * Setter for peer socket
-        *
-        * @param       $peerSocket             The peer's socket
-        * @return      void
-        */
-       public final function setPeerSocket ($peerSocket) {
-               if (is_resource($peerSocket)) {
-                       $this->peerSocket = $peerSocket;
-               } else {
-                       $this->peerSocket = null;
-               }
-       }
-
-       /**
-        * Getter for peer socket
-        *
-        * @return      $peerSocket             The peer's socket
-        */
-       public final function getPeerSocket () {
-               return $this->peerSocket;
-       }
-
-       /**
-        * Setter for connection timestamp only once
-        *
-        * @return      void
-        */
-       public final function setConnectionTimestamp () {
-               if ($this->connectTime == 0) $this->connectTime = time();
-       }
-
-       /**
-        * Getter for a raw IP number
-        *
-        * @return      $ip                                     The peer's IP number
-        * @throws      BrokenPipeException             If a socket has lost its connection to the peer
-        */
-       public final function getRawIP () {
-               if (is_resource($this->peerSocket)) {
-                       // Get IP from socket
-                       @socket_getpeername($this->peerSocket, $ip);
-
-                       // Connection problems?
-                       if (socket_last_error() > 0) {
-                               // Throw an exception
-                               throw new BrokenPipeException(
-                                       array(
-                                               'this'  => $this,
-                                               'code'  => socket_last_error()
-                                       ), self::EXCEPTION_PEER_SOCKET_BROKEN
-                               );
-                       }
-               } else {
-                       // Without a socket we cannot determine the right IP
-                       $ip = "0.0.0.0";
-               }
-
-               // And return it...
-               return $ip;
-       }
-
-       /**
-        * Getter for a validated peer IP
-        *
-        * @return      $peerIP         The peer's IP number
-        */
-       public final function getValidatedIP() {
-               // Is the socket valid and IP not set?
-               if ((is_resource($this->peerSocket)) && (socket_last_error() == 0) && (self::$peerIP == "0.0.0.0")) {
-                       // Get peer's IP number
-                       self::$peerIP = $this->getRawIP();
-               } elseif ((is_resource($this->peerSocket)) && (socket_last_error() == 0)) {
-                       // Get current raw IP number for validation
-                       $ip = $this->getRawIP();
-
-                       // Check if the IP has changed
-                       if ($ip !== self::$peerIP) {
-                               // The IP number has changed!
-                               throw new IPSpoofingException(
-                                       array(
-                                               'this'  => $this,
-                                               'old_ip'        => self::$peerIP,
-                                               'new_ip'        => $ip
-                                       ), self::EXCEPTION_PEER_IP_CHANGED
-                               );
-                       }
-               }
-
-               return self::$peerIP;
-       }
-
-       /**
-        * Getter for number of authorization tries
-        * @return      $authRetries    Authorization tries
-        */
-       public final function getAuthRetries () {
-               return $this->authRetries;
-       }
-
-       //----------------------------------------------------------
-       //                      Public methods
-       //----------------------------------------------------------
-
-       /**
-        * Setter for HubCoreLoop instances
-        *
-        * @param               $hubInstance            An instance of a HubCoreLoop class
-        * @return      void
-        */
-       public final function setHubInstance(HubCoreLoop $hubInstance) {
-               $this->hubInstance = $hubInstance;
-       }
-
-       /**
-        * Getter for HubCoreLoop instances
-        *
-        * @return      $hubInstance            An instance of a HubCoreLoop class
-        */
-       public final function getHubInstance() {
-               return $this->hubInstance;
-       }
-
-       /**
-        * Getter for last sent message timestamp
-        *
-        * @return      $lastSentMessageStamp   Timestamp of last sent message
-        */
-       public final function getLastSentMessageStamp () {
-               return $this->lastSentMessageStamp;
-       }
-
-       /**
-        * Getter for last sent message
-        *
-        * @return      $lastSentMessage        Last sent message to this peer
-        */
-       public final function getLastSentMessage () {
-               return $this->lastSentMessage;
-       }
-
-       /**
-        * Determines wether the peer is authorized
-        *
-        * @return      void
-        */
-       public final function ifPeerIsAuthorized () {
-               return (($this->isAuthorized === true) && ($this->ifPeerNeedsAuthRequest() === false));
-       }
-
-       /**
-        * Returns wether this peer needs to receive the AUTH command
-        */
-       public final function ifPeerNeedsAuthRequest () {
-               return $this->needAuthRequest;
-       }
-
-       /**
-        * Disconnects the peer with a special reason (status)
-        *
-        * @param       $reason         The special reason
-        * @return      void
-        */
-       public final function disconnectWithReason ($reason) {
-               // Is the message set?
-               if (!empty($reason)) {
-                       // Send the given message
-                       $this->sendMessage($reason);
-               } else {
-                       // Send default "good bye"
-                       $this->sendMessage($this->getConfigInstance()->readConfig("hub_msg_bye"));
-               }
-
-               // Disconnect the client
-               socket_shutdown($this->peerSocket, 2);
-               socket_close($this->peerSocket);
-       }
-
-       /**
-        * Sends a specified message to the peer's socket
-        *
-        * @param       $message                The special message
-        * @return      void
-        * @throws      BrokenPipeException             If a pipe to a socket peer is lost
-        */
-       public final function sendMessage ($message) {
-               if (empty($message)) {
-                       // Set default message
-                       $message = $this->getConfigInstance()->readConfig("hub_msg_bye");
-               }
-
-               // Debug message
-               $this->getDebugInstance()->output(sprintf("[%s] Sending message \"%s\" to peer %s.<br />\n",
-                       __METHOD__,
-                       $message,
-                       $this->getValidatedIP()
-               ));
-
-               // Is the socket still valid?
-               if (!is_resource($this->peerSocket)) {
-                       // The socket is no longer valid!
-                       throw new BrokenPipeException (
-                               array(
-                                       'this'  => $this,
-                                       'code'  => socket_last_error()
-                               ), self::EXCEPTION_PEER_SOCKET_BROKEN
-                       );
-               }
-
-               // Send it to the peer
-               if (socket_write($this->peerSocket, $message."\n") !== false) {
-                       // Set the timestamp and message
-                       $this->lastSentMessage = $message;
-                       $this->lastSentMessageStamp = time();
-               } else {
-                       // Message could not be sent
-                       throw new BrokenPipeException (
-                               array(
-                                       'this'  => $this,
-                                       'code'  => socket_last_error()
-                               ), self::EXCEPTION_PEER_SOCKET_BROKEN
-                       );
-               }
-       }
-
-       /**
-        * Asks the connected new peer for the authorization key
-        *
-        * @return      void
-        */
-       public final function askAuthorizationKey () {
-               if ($this->ifPeerNeedsAuthRequest()) {
-                       // This peer needs to receive the AUTH command so send it to him
-                       $this->sendMessage($this->getConfigInstance()->readConfig("hub_auth_request"));
-
-                       // Set it to done
-                       $this->needAuthRequest = false;
-               }
-       }
-
-       /**
-        * Determines wether the peer is a local admin (localhost connection)
-        *
-        * @return      $isLocalAdmin           Wether the peer is a local admin
-        */
-       public function ifPeerIsLocalAdmin () {
-               // Get the remote IP and extract only the first three numbers
-               $remoteArray = explode(".", self::$peerIP);
-
-               // Is the peer a local admin?
-               return (($remoteArray[0].".".$remoteArray[1].".".$remoteArray[2]) == "127.0.0");
-       }
-
-       /**
-        * Enables the local admin and authorizes this peer
-        *
-        * @return      void
-        */
-       public function enableLocalAdmin() {
-               // Is this IP really local?
-               if (($this->ifPeerIsLocalAdmin()) && (!$this->ifPeerIsAuthorized())) {
-                       // Then authorize him
-                       $this->isAuthorized = true;
-                       $this->needAuthRequest = false;
-               } // END - if
-       }
-
-       /**
-        * Says "hi" to the local admin
-        *
-        * @return      void
-        */
-       public function sayHi2Admin () {
-               // Send a message to him... ;-)
-               $this->sendMessage("Local admin console is ready. Enter HELP for instructions.");
-       }
-
-       /**
-        * Enables wether the peer is authorized
-        *
-        * @param               $isAuthValid    Wether the authorization wents fine
-        * @return      void
-        */
-       public function enableIsAuthorized ($isAuthValid = true) {
-               $this->isAuthorized = true;
-       }
-
-       /**
-        * Checks wether a HELLO has been sent and if not it will be send to the other peer
-        *
-        * @return      $helloSent      Wether a HELLO has been sent
-        */
-       public function ifHelloReceived () {
-               // HELLO has been sent?
-               if (!$this->helloSent) {
-                       // Read some data
-                       $read = $this->readFromSocket();
-
-                       // Is this a HELLO?
-                       if ($read == $this->getConfigInstance()->readConfig("hub_peer_hello")) {
-                               // All right! A HELLO has been received
-                               $this->helloSent = true;
-                               $this->getHubInstance()->getOutputInstance()->output(sprintf("[%s] Peer %s said HELLO to us.",
-                                       __METHOD__,
-                                       $this->getValidatedIP()
-                               ));
-                       } // END - if
-               } // END - if
-
-               // Return status
-               return $this->helloSent;
-       }
-
-       /**
-        * Wether this hub has replied our HELLO request
-        *
-        * @return      $helloReplied   Wether this hub has replied our HELLO request
-        */
-       public function ifHelloReplied () {
-               if ((!$this->helloReplied) && ($this->lastSentMessage == $this->getConfigInstance()->readConfig("hub_peer_hello"))) {
-                       // Read some data
-                       $read = $this->readFromSocket();
-
-                       // Is this a HELLO?
-                       if ($read == $this->getConfigInstance()->readConfig("hub_hello_reply")) {
-                               // Is this the master IP?
-                               if ($this->getValidatedIP() == $this->getConfigInstance()->readConfig("hub_master_ip")) {
-                                       // All right! A HELLO has been received
-                                       $this->helloReplied = true;
-                                       $this->getHubInstance()->getOutputInstance()->output(sprintf("[%s] The master hub at %s:%d replied our %s.",
-                                               __METHOD__,
-                                               $this->getValidatedIP(),
-                                               $this->getConfigInstance()->readConfig("hub_master_port"),
-                                               $this->getConfigInstance()->readConfig("hub_peer_hello")
-                                       ));
-                               } else {
-                                       // ELHOs from non-masters are not valid!
-                                       $this->getHubInstance()->getOutputInstance()->output(sprintf("[%s] Peer %s replied our %s but is not the master hub!",
-                                               __METHOD__,
-                                               $this->getValidatedIP(),
-                                               $this->getConfigInstance()->readConfig("hub_peer_hello")
-                                       ));
-                               }
-                       } // END - if
-               } // END - if
-
-               // Return status
-               return $this->helloReplied;
-       }
-
-       /**
-        * Returns wether a ELHO (HELLO reply has been sent)
-        *
-        * @return      $elhoSent               Wether a ELHO has been sent to the peer
-        */
-       public final function ifELHOsent () {
-               return $this->elhoSent;
-       }
-
-       /**
-        * Replies a HELLO message with a ELHO message
-        *
-        * @return      void
-        */
-       public function replyHelloMessage () {
-               $this->sendMessage($this->getConfigInstance()->readConfig("hub_hello_reply"));
-               $this->elhoSent = true;
-       }
-
-       /**
-        * Handles pinging this peer
-        *
-        * @return      void
-        */
-       public function handlePingPeer () {
-               $lost = false;
-
-               // Do we need to ping?
-               if ((time() - $this->lastPinged) > $this->getConfigInstance()->readConfig("hub_ping_timeout")) {
-                       // Don't ping any masters! ;-)
-                       if ($this->getValidatedIP() != $this->getConfigInstance()->readConfig("hub_master_ip")) {
-                               // Debug message
-                               $this->getHubInstance()->getOutputInstance()->output(sprintf("[%s] Sending ping to peer %s...",
-                                       $this->__toString(),
-                                       $this->getValidatedIP()
-                               ));
-
-                               // Send out a PING and await a PONG
-                               $this->commandInstance->simpleExecute(
-                                       $this->getConfigInstance()->readConfig("hub_peer_ping"),
-                                       $this->getConfigInstance()->readConfig("hub_ping_reply")
-                               );
-
-                               // PONG received within last ping?
-                               if (($this->lastPonged < time()) && (($this->lastPonged - $this->lastPinged) < 0)) {
-                                       // Not replied so far
-                                       $this->missingPongs++;
-
-                                       // Debug message
-                                       $this->getHubInstance()->getOutputInstance()->output(sprintf("[%s] Ping not replied! Try: %d",
-                                               $this->__toString(),
-                                               $this->missingPongs
-                                       ));
-
-                                       // Limit reached?
-                                       if ($this->missingPongs == $this->getConfigInstance()->readConfig("hub_ping_maxdrops")) {
-                                               // This peer is lost
-                                               $this->getHubInstance()->disconnectPeerWithReason("hub_peer_miss_pong");
-                                               $lost = true;
-                                       } // END - if
-                               } // END - if
-
-                               // Last time we pinged is now.
-                               $this->lastPinged = time();
-
-                       } // END - if
-               } // END - if
-
-               // Connection is lost?
-               if ($lost === true) return false;
-
-               // Awaiting PONG here
-               if ($this->commandInstance->ifAwaitsCommand($this->getConfigInstance()->readConfig("hub_ping_reply"))) {
-                       // PONG received! :-) So reset all counters...
-                       $this->lastPonged = time();
-                       $this->missingPongs = 0;
-
-                       // Notify the loop about the ping-pong-time
-                       $this->getHubInstance()->updatePeerEntry($this, (time() - $this->lastPinged));
-               } // END - if
-       }
-
-       /**
-        * Handles any incoming commands from the master hub
-        *
-        * @return      void
-        */
-       public function handleMasterRequests () {
-               // Read the raw socket for data packages
-               if ($this->commandInstance->awaitAnyCommand()) {
-                       // A command has been received from the master hub
-                       $command = $this->commandInstance->pull();
-
-                       // TODO Handle a command from the master here...
-               } // END - if
-       }
-
-       /**
-        * Reads raw data from the socket and trims leading/trailing spaces away.
-        * Returns an empty string if no data has been received.
-        *
-        * @return      $data                           Raw data from the underlaying socket
-        * @throws      BrokenPipeException             If a socket has lost its connection to the peer
-        */
-       public function readFromSocket () {
-               $data = "";
-               $read = array($this->peerSocket);
-               $write = null;
-               $except = null;
-               $num = socket_select($read, $write, $except, 0);
-               if ($num > 0) {
-                       // Something has changed on a socket
-                       foreach ($read as $socket) {
-                               if (is_resource($socket)) {
-                                       $data = trim(@socket_read($socket, 1024, PHP_NORMAL_READ));
-                                       if (socket_last_error() > 0) {
-                                               // Throw an exception
-                                               throw new BrokenPipeException(
-                                                       array(
-                                                               'this'  => $this,
-                                                               'code'  => socket_last_error()
-                                                       ), self::EXCEPTION_PEER_SOCKET_BROKEN
-                                               );
-                                       }
-                                       break;
-                               } // END - if
-                       } // END - foreach
-               } // END - if
-               return $data;
-       }
-
-} // END - class
-
-// [EOF]
-?>