/**
* "Getter" to get a string respresentation for a key for the sub-registry
- * in this format: class:protocol:port
+ * in this format: class:type:port
*
- * @param $protocolInstance An instance of a ProtocolHandler class
+ * @param $connectionInstance An instance of a Listenable class
* @return $key A string representation of the socket for the registry
*/
- private function getSubRegistryKey (ProtocolHandler $protocolInstance) {
+ private function getSubRegistryKey (Listenable $connectionInstance) {
// Default address is invalid
$address = '*invalid*';
+ $port = 0;
// Which instance is it?
// @TODO Tested again base class, rewrite it to a generic interface!
- if ($protocolInstance instanceof BaseConnectionHelper) {
+ if ($connectionInstance instanceof BaseConnectionHelper) {
// Get address
- $address = $protocolInstance->getAddress();
- } elseif ($protocolInstance instanceof BaseListener) {
+ $address = $connectionInstance->getAddress();
+ $port = $connectionInstance->getConnectionPort();
+ } elseif ($connectionInstance instanceof BaseListener) {
// Get listen address
- $address = $protocolInstance->getListenAddress();
+ $address = $connectionInstance->getListenAddress();
+ $port = $connectionInstance->getListenPort();
} else {
// Not supported!
- $this->debugBackTrace('Unsupported protocolInstance=' . $protocolInstance->__toString() . ' detected. Please fix this!');
+ $this->debugBackTrace('Unsupported connectionInstance=' . $connectionInstance->__toString() . ' detected. Please fix this!');
}
- // Get protocol and port number and add both together
+ // Get connection type and port number and add both together
$key = sprintf('%s:%s:%s:%s',
- $protocolInstance->__toString(),
- $protocolInstance->getProtocolName(),
+ $connectionInstance->__toString(),
+ $connectionInstance->getConnectionType(),
$address,
- $protocolInstance->getPort()
+ $port
);
// Return resulting key
}
/**
- * "Getter" to get a string respresentation of the protocol
+ * "Getter" to get a string respresentation of the listener
*
- * @param $protocolInstance An instance of a ProtocolHandler class
- * @return $key A string representation of the protocol for the registry
+ * @param $listenerInstance An instance of a Listenable class
+ * @return $key A string representation of the listener for the registry
*/
- private function getRegistryKeyFromProtocol (ProtocolHandler $protocolInstance) {
+ private function getRegistryKeyFromListener (Listenable $listenerInstance) {
// Get the key
- $key = $protocolInstance->getProtocolName();
+ $key = $listenerInstance->getConnectionType();
// Return resulting key
return $key;
}
/**
- * Checks whether the given protocol is registered
+ * Checks whether the given listener is registered
*
- * @param $protocolInstance An instance of a ProtocolHandler class
- * @return $isRegistered Whether the protocol is registered
+ * @param $listenerInstance An instance of a Listenable class
+ * @return $isRegistered Whether the listener is registered
*/
- private function isProtocolRegistered (ProtocolHandler $protocolInstance) {
+ private function isListenerRegistered (Listenable $listenerInstance) {
// Debug message
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('SOCKET-REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']:protocol=' . $protocolInstance->getProtocolName() . ' - ENTERED!');
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('SOCKET-REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']:listener=' . $listenerInstance->getConnectionType() . ' - ENTERED!');
// Get the key
- $key = $this->getRegistryKeyFromProtocol($protocolInstance);
+ $key = $this->getRegistryKeyFromListener($listenerInstance);
// Determine it
$isRegistered = $this->instanceExists($key);
// Debug message
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('SOCKET-REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']:protocol=' . $protocolInstance->getProtocolName() . ',isRegistered=' . intval($isRegistered) . ' - EXIT!');
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('SOCKET-REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']:listener=' . $listenerInstance->getConnectionType() . ',isRegistered=' . intval($isRegistered) . ' - EXIT!');
// Return result
return $isRegistered;
* Checks whether given socket resource is registered. If $socketResource is
* FALSE only the instance will be checked.
*
- * @param $protocolInstance An instance of a ProtocolHandler class
+ * @param $listenerInstance An instance of a Listenable class
* @param $socketResource A valid socket resource
* @return $isRegistered Whether the given socket resource is registered
*/
- public function isSocketRegistered (ProtocolHandler $protocolInstance, $socketResource) {
+ public function isSocketRegistered (Listenable $listenerInstance, $socketResource) {
// Debug message
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('SOCKET-REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']:protocol=' . $protocolInstance->getProtocolName() . ',socketResource[' . gettype($socketResource) . ']=' . $socketResource . ' - ENTERED!');
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('SOCKET-REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']:listener=' . $listenerInstance->getConnectionType() . ',socketResource[' . gettype($socketResource) . ']=' . $socketResource . ' - ENTERED!');
// Default is not registered
$isRegistered = FALSE;
// First, check for the instance, there can be only once
- if ($this->isProtocolRegistered($protocolInstance)) {
+ if ($this->isListenerRegistered($listenerInstance)) {
// That one is found so "get" a registry key from it
- $key = $this->getRegistryKeyFromProtocol($protocolInstance);
+ $key = $this->getRegistryKeyFromListener($listenerInstance);
// Debug message
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('SOCKET-REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']: protocol=' . $protocolInstance->getProtocolName() . ',socketResource[' . gettype($socketResource) . ']=' . $socketResource . ',key=' . $key . ' - Trying to get instance ...');
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('SOCKET-REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']: listener=' . $listenerInstance->getConnectionType() . ',socketResource[' . gettype($socketResource) . ']=' . $socketResource . ',key=' . $key . ' - Trying to get instance ...');
// Get the registry
$registryInstance = $this->getInstance($key);
// "Get" a key for the socket
- $socketKey = $this->getSubRegistryKey($protocolInstance);
+ $socketKey = $this->getSubRegistryKey($listenerInstance);
// Debug message
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('SOCKET-REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']: protocol=' . $protocolInstance->getProtocolName() . ',socketResource[' . gettype($socketResource) . ']=' . $socketResource . ',key=' . $key . ',socketKey=' . $socketKey . ' - Checking existence ...');
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('SOCKET-REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']: listener=' . $listenerInstance->getConnectionType() . ',socketResource[' . gettype($socketResource) . ']=' . $socketResource . ',key=' . $key . ',socketKey=' . $socketKey . ' - Checking existence ...');
// Is it there?
if ($registryInstance->instanceExists($socketKey)) {
} // END - if
// Debug message
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('SOCKET-REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']:protocol=' . $protocolInstance->getProtocolName() . ',socketResource[' . gettype($socketResource) . ']=' . $socketResource . ',isRegistered=' . intval($isRegistered) . ' - EXIT!');
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('SOCKET-REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']:listener=' . $listenerInstance->getConnectionType() . ',socketResource[' . gettype($socketResource) . ']=' . $socketResource . ',isRegistered=' . intval($isRegistered) . ' - EXIT!');
// Return the result
return $isRegistered;
/**
* Registeres given socket for listener or throws an exception if it is already registered
*
- * @param $protocolInstance An instance of a ProtocolHandler class
+ * @param $listenerInstance An instance of a Listenable class
* @param $socketResource A valid socket resource
* @param $packageData Optional raw package data
* @throws SocketAlreadyRegisteredException If the given socket is already registered
* @return void
*/
- public function registerSocket (ProtocolHandler $protocolInstance, $socketResource, array $packageData = array()) {
+ public function registerSocket (Listenable $listenerInstance, $socketResource, array $packageData = array()) {
// Debug message
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('SOCKET-REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']:protocol=' . $protocolInstance->getProtocolName() . ',socketResource[' . gettype($socketResource) . ']=' . $socketResource . ' - ENTERED!');
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('SOCKET-REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']:listener=' . $listenerInstance->getConnectionType() . ',socketResource[' . gettype($socketResource) . ']=' . $socketResource . ' - ENTERED!');
// Is the socket already registered?
- if ($this->isSocketRegistered($protocolInstance, $socketResource)) {
+ if ($this->isSocketRegistered($listenerInstance, $socketResource)) {
// Throw the exception
- throw new SocketAlreadyRegisteredException(array($protocolInstance, $socketResource), BaseListener::EXCEPTION_SOCKET_ALREADY_REGISTERED);
+ throw new SocketAlreadyRegisteredException(array($listenerInstance, $socketResource), BaseListener::EXCEPTION_SOCKET_ALREADY_REGISTERED);
} // END - if
// Does the instance exist?
- if (!$this->isProtocolRegistered($protocolInstance)) {
+ if (!$this->isListenerRegistered($listenerInstance)) {
// 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);
+ // Now we can create the sub-registry for this listener
+ $this->addInstance($this->getRegistryKeyFromListener($listenerInstance), $registryInstance);
} else {
// Get the sub-registry back
- $registryInstance = $this->getInstance($this->getRegistryKeyFromProtocol($protocolInstance));
+ $registryInstance = $this->getInstance($this->getRegistryKeyFromListener($listenerInstance));
}
// Get a key for sub-registries
- $socketKey = $this->getSubRegistryKey($protocolInstance);
+ $socketKey = $this->getSubRegistryKey($listenerInstance);
// Get a socket container
- $socketInstance = ObjectFactory::CreateObjectByConfiguredName('socket_container_class', array($socketResource, $protocolInstance, $packageData));
+ $socketInstance = ObjectFactory::CreateObjectByConfiguredName('socket_container_class', array($socketResource, $listenerInstance, $packageData));
// We have a sub-registry, the socket key and the socket, now we need to put all together
/* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('SOCKET-REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']: socketKey=' . $socketKey . ',socketResource[' . gettype($socketResource) . ']=' . $socketResource . ' - adding socket container instance ...');
/**
* Getter for given listener's socket resource
*
- * @param $protocolInstance An instance of a ProtocolHandler class
+ * @param $listenerInstance An instance of a Listenable class
* @return $socketResource A valid socket resource
* @throws NoSocketRegisteredException If the requested socket is not registered
*/
- public function getRegisteredSocketResource (ProtocolHandler $protocolInstance) {
+ public function getRegisteredSocketResource (Listenable $listenerInstance) {
// Debug message
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('SOCKET-REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']:protocol=' . $protocolInstance->getProtocolName() . ' - ENTERED!');
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('SOCKET-REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']:listener=' . $listenerInstance->getConnectionType() . ' - ENTERED!');
// The socket must be registered before we can return it
- if (!$this->isProtocolRegistered($protocolInstance)) {
+ if (!$this->isListenerRegistered($listenerInstance)) {
// Throw the exception
- throw new NoSocketRegisteredException ($protocolInstance, self::SOCKET_NOT_REGISTERED);
+ throw new NoSocketRegisteredException ($listenerInstance, self::SOCKET_NOT_REGISTERED);
} // END - if
- // Now get the key from the protocol
- $key = $this->getRegistryKeyFromProtocol($protocolInstance);
+ // Now get the key from the listener
+ $key = $this->getRegistryKeyFromListener($listenerInstance);
// And get the registry
$registryInstance = $this->getInstance($key);
// Get a socket key
- $socketKey = $this->getSubRegistryKey($protocolInstance);
+ $socketKey = $this->getSubRegistryKey($listenerInstance);
// And the final socket resource
$socketResource = $registryInstance->getInstance($socketKey)->getSocketResource();
// Debug message
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('SOCKET-REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']:protocol=' . $protocolInstance->getProtocolName() . ',socketResource[' . gettype($socketResource) . ']=' . $socketResource . ' - EXIT!');
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('SOCKET-REGISTRY[' . __METHOD__ . ':' . __LINE__ . ']:listener=' . $listenerInstance->getConnectionType() . ',socketResource[' . gettype($socketResource) . ']=' . $socketResource . ' - EXIT!');
// Return the resource
return $socketResource;
* "Getter" for protocol/connection instance from given package data
*
* @param $packageData Raw package data
- * @return $protocolInstance An instance of a ProtocolHandler class
+ * @return $protocolInstance An instance of a HandleableProtocol class
*/
public function getHandlerInstanceFromPackageData (array $packageData) {
// Init protocol instance