inc/classes/main/compressor/class_NullCompressor.php -text
inc/classes/main/console/.htaccess -text
inc/classes/main/console/class_ConsoleTools.php -text
+inc/classes/main/container/.htaccess -text
+inc/classes/main/container/class_ -text
+inc/classes/main/container/socket/.htaccess -text
inc/classes/main/controller/.htaccess -text
inc/classes/main/controller/captcha/.htaccess -text
inc/classes/main/controller/captcha/class_ImageCodeCaptchaController.php -text
inc/classes/main/registry/class_ -text
inc/classes/main/registry/generic/.htaccess -text
inc/classes/main/registry/socket/.htaccess -text
+inc/classes/main/registry/sub/.htaccess -text
inc/classes/main/request/.htaccess -text
inc/classes/main/request/class_ -text
inc/classes/main/request/class_BaseRequest.php -text
/**
* A Constructor for this exception
*
- * @param $protocolInstance An instance of a ProtocolHandler class
- * @param $code Error code
+ * @param $protocolInstance An instance of a ProtocolHandler class
+ * @param $code Error code
* @return void
*/
public function __construct (ProtocolHandler $protocolInstance, $code) {
* @return $socketResource A valid socket resource
* @throws NoSocketRegisteredException If the requested socket is not registered
*/
- function getSocketResource (ProtocolHandler $protocolInstance);
+ function getRegisteredSocketResource (ProtocolHandler $protocolInstance);
}
// [EOF]
*/
private $decimals = ','; // German
+ /**
+ * Socket resource
+ */
+ private $socketResource = false;
+
/***********************
* Exception codes.... *
***********************/
}
/**
- * Setter for image instanxe
+ * Setter for image instance
*
* @param $imageInstance An instance of an image
* @return void
}
/**
- * Getter for image instanxe
+ * Getter for image instance
*
* @return $imageInstance An instance of an image
*/
}
/**
- * Setter for stacker instanxe
+ * Setter for stacker instance
*
* @param $stackerInstance An instance of an stacker
* @return void
}
/**
- * Getter for stacker instanxe
+ * Getter for stacker instance
*
* @return $stackerInstance An instance of an stacker
*/
}
/**
- * Setter for compressor instanxe
+ * Setter for compressor instance
*
* @param $compressorInstance An instance of an compressor
* @return void
}
/**
- * Getter for compressor instanxe
+ * Getter for compressor instance
*
* @return $compressorInstance An instance of an compressor
*/
}
/**
- * Setter for Parseable instanxe
+ * Setter for Parseable instance
*
* @param $parserInstance An instance of an Parseable
* @return void
}
/**
- * Getter for Parseable instanxe
+ * Getter for Parseable instance
*
* @return $parserInstance An instance of an Parseable
*/
public final function getParserInstance () {
return $this->parserInstance;
}
+
+ /**
+ * Setter for socket resource
+ *
+ * @param $socketResource A valid socket resource
+ * @return void
+ */
+ public final function setSocketResource ($socketResource) {
+ $this->socketResource = $socketResource;
+ }
+
+ /**
+ * Getter for socket resource
+ *
+ * @return $socketResource A valid socket resource
+ */
+ public function getSocketResource () {
+ return $this->socketResource;
+ }
}
// [EOF]
--- /dev/null
+Deny from all
--- /dev/null
+<?php
+/**
+ * A ??? Container class
+ *
+ * @author Roland Haeder <webmaster@ship-simu.org>
+ * @version 0.0.0
+ * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009, 2010 Core Developer Team
+ * @license GNU GPL 3.0 or any newer version
+ * @link http://www.ship-simu.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * 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 ???Container extends BaseContainer implements Registerable {
+ /**
+ * Protected constructor
+ *
+ * @return void
+ */
+ protected function __construct () {
+ // Call parent constructor
+ parent::__construct(__CLASS__);
+ }
+
+ /**
+ * Creates an instance of this Container class and prepares it for usage
+ *
+ * @return $containerInstance An instance of this Container class
+ */
+ public final static function create???Container () {
+ // Get a new instance
+ $containerInstance = new ???Container();
+
+ // Return the prepared instance
+ return $containerInstance;
+ }
+}
+
+// [EOF]
+?>
--- /dev/null
+<?php
+/**
+ * A general Container
+ *
+ * @author Roland Haeder <webmaster@ship-simu.org>
+ * @version 0.0.0
+ * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009, 2010 Core Developer Team
+ * @license GNU GPL 3.0 or any newer version
+ * @link http://www.ship-simu.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * 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 BaseContainer extends BaseFrameworkSystem {
+ /**
+ * Protected constructor
+ *
+ * @param $className Name of the class
+ * @return void
+ */
+ protected function __construct ($className) {
+ // Call parent constructor
+ parent::__construct($className);
+ }
+}
+
+// [EOF]
+?>
--- /dev/null
+Deny from all
--- /dev/null
+<?php
+/**
+ * A Socket Container class
+ *
+ * @author Roland Haeder <webmaster@ship-simu.org>
+ * @version 0.0.0
+ * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009, 2010 Core Developer Team
+ * @license GNU GPL 3.0 or any newer version
+ * @link http://www.ship-simu.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * 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 SocketContainer extends BaseContainer implements Registerable {
+ /**
+ * Protected constructor
+ *
+ * @return void
+ */
+ protected function __construct () {
+ // Call parent constructor
+ parent::__construct(__CLASS__);
+ }
+
+ /**
+ * Creates an instance of this Container class and prepares it for usage
+ *
+ * @param $socketResource A valid socket resource
+ * @return $containerInstance An instance of this Container class
+ */
+ public final static function createSocketContainer ($socketResource) {
+ // Get a new instance
+ $containerInstance = new SocketContainer();
+
+ // Set the resource
+ $containerInstance->setSocketResource($socketResource);
+
+ // Return the prepared instance
+ return $containerInstance;
+ }
+}
+
+// [EOF]
+?>
* 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 BaseRegistry extends BaseFrameworkSystem {
+class BaseRegistry extends BaseFrameworkSystem implements Registerable {
/**
* Instance of this class
*/
// [EOF]
?>
-
return self::$registryInstance;
}
+ /**
+ * "Getter" to get a string respresentation for a key for the sub-registry
+ * in this format: protocol:port
+ *
+ * @param $protocolInstance An instance of a ProtocolHandler class
+ * @return $key A string representation of the socket for the registry
+ */
+ private function getSubRegistryKey (ProtocolHandler $protocolInstance) {
+ // Get protocol and port number and add both together
+ $key = sprintf("%s:%s",
+ $protocolInstance->getProtocol(),
+ $protocolInstance->getPort()
+ );
+
+ // Return resulting key
+ return $key;
+ }
+
+ /**
+ * "Getter" to get a string respresentation of the protocol
+ *
+ * @param $protocolInstance An instance of a ProtocolHandler class
+ * @return $key A string representation of the protocol for the registry
+ */
+ private function getRegistryKeyFromProtocol (ProtocolHandler $protocolInstance) {
+ // Get the key
+ $key = $protocolInstance->getProtocol();
+
+ // Return resulting key
+ return $key;
+ }
+
+ /**
+ * Checks wether the given protocol is registered
+ *
+ * @param $protocolInstance An instance of a ProtocolHandler class
+ * @return $isRegistered Wether the protocol is registered
+ */
+ private function isProtocolRegistered (ProtocolHandler $protocolInstance) {
+ // Get the key
+ $key = $this->getRegistryKeyFromProtocol($protocolInstance);
+
+ // Determine it
+ $isRegistered = $this->instanceExists($key);
+
+ // Return result
+ return $isRegistered;
+ }
+
/**
* Checks wether given socket resource is registered. If $socketResource is
* false only the instance will be checked.
* @return $isRegistered Wether the given socket resource is registered
*/
public function isSocketRegistered (ProtocolHandler $protocolInstance, $socketResource) {
- $this->partialStub('Not yet implemented.');
+ // Default is not registered
+ $isRegistered = false;
+
+ // First, check for the instance, there can be only once
+ if ($this->isProtocolRegistered($protocolInstance)) {
+ // That one is found so "get" a registry key from it
+ $key = $this->getRegistryKeyFromProtocol($protocolInstance);
+
+ // Get the registry
+ $registryInstance = $this->getInstance($key);
+
+ // "Get" a key for the socket
+ $socketKey = $this->getSubRegistryKey($protocolInstance);
+
+ // And simply ask it
+ $isRegistered = $registryInstance->instanceExists($socketKey);
+ } // END - if
+
+ // Return the result
+ return $isRegistered;
}
/**
throw new SocketAlreadyRegisteredException($protocolInstance, BaseListener::EXCEPTION_SOCKET_ALREADY_REGISTERED);
} // END - if
- $this->partialStub('Not yet implemented.');
+ // Does the instance exist?
+ if (!$this->isProtocolRegistered($protocolInstance)) {
+ // No, not found so we create a sub registry (not needed to configure!)
+ $registryInstance = SubRegistry::createSubRegistry();
+
+ // Now we can create the sub-registry for this protocol
+ $this->addInstance($this->getRegistryKeyFromProtocol($protocolInstance), $registryInstance);
+ } else {
+ // Get the sub-registry back
+ $registryInstance = $this->getInstance($this->getRegistryKeyFromProtocol($protocolInstance));
+ }
+
+ // Get a key for sub-registries
+ $socketKey = $this->getSubRegistryKey($protocolInstance);
+
+ // Get a socket container
+ $socketInstance = ObjectFactory::CreateObjectByConfiguredName('socket_container_class', array($socketResource));
+
+ // We have a sub-registry, the socket key and the socket, now we need to put all together
+ $registryInstance->addInstance($socketKey, $socketInstance);
}
/**
* @return $socketResource A valid socket resource
* @throws NoSocketRegisteredException If the requested socket is not registered
*/
- public function getSocketResource (ProtocolHandler $protocolInstance) {
+ public function getRegisteredSocketResource (ProtocolHandler $protocolInstance) {
// The socket must be registered before we can return it
if (!$this->isSocketRegistered($protocolInstance, false)) {
// Throw the exception
throw new NoSocketRegisteredException ($protocolInstance, self::SOCKET_NOT_REGISTERED);
} // END - if
- $this->partialStub('Not yet implemented.');
+ // Now get the key from the protocol
+ $key = $this->getRegistryKeyFromProtocol($protocolInstance);
+
+ // And get the registry
+ $registryInstance = $this->getInstance($key);
+
+ // Get a socket key
+ $socketKey = $this->getSubRegistryKey($protocolInstance);
+
+ // And the final socket resource
+ $socketResource = $registryInstance->getInstance($socketKey)->getSocketResource();
+
+ // Return the resource
+ return $socketResource;
}
}
--- /dev/null
+Deny from all
--- /dev/null
+<?php
+/**
+ * A Sub registry
+ *
+ * @author Roland Haeder <webmaster@ship-simu.org>
+ * @version 0.0.0
+ * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009, 2010 Core Developer Team
+ * @license GNU GPL 3.0 or any newer version
+ * @link http://www.ship-simu.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * 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 SubRegistry extends BaseRegistry implements Register {
+ /**
+ * Protected constructor
+ *
+ * @return void
+ */
+ protected function __construct () {
+ // Call parent constructor
+ parent::__construct(__CLASS__);
+ }
+
+ /**
+ * Creates an instance (non-singleton, of course) of this registry class
+ *
+ * @return $registryInstance An instance of this registry class
+ */
+ public final static function createSubRegistry () {
+ // Just get a new instance ...
+ $registryInstance = new SubRegistry();
+
+ // ... and return it
+ return $registryInstance;
+ }
+}
+
+// [EOF]
+?>