/**
* A decorator for the TcpListener to communicate to hubs
*
- * @author Roland Haeder <webmaster@ship-simu.org>
+ * @author Roland Haeder <webmaster@shipsimu.org>
* @version 0.0.0
- * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Hub Developer Team
+ * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2014 Hub Developer Team
* @license GNU GPL 3.0 or any newer version
- * @link http://www.ship-simu.org
+ * @link http://www.shipsimu.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
protected function __construct () {
// Call parent constructor
parent::__construct(__CLASS__);
+
+ // Set listener type and protocol name
+ $this->setListenerType('hub');
+ $this->setProtocolName('tcp');
}
/**
* @param $listenerInstance A Listener instance
* @return $decoratorInstance An instance a prepared listener decorator class
*/
- public final static function createHubTcpListenerDecorator (Listenable $listenerInstance) {
+ public static final function createHubTcpListenerDecorator (Listenable $listenerInstance) {
// Get new instance
$decoratorInstance = new HubTcpListenerDecorator();
* Initializes the listener by setting up the required socket server
*
* @return void
- * @todo 0% done
*/
- public function initListener() {
- $this->partialStub('Need to implement this method.');
+ public function initListener () {
+ $this->partialStub('WARNING: This method should not be called.');
+ }
+
+ /**
+ * "Listens" for incoming network packages
+ *
+ * @return void
+ */
+ public function doListen () {
+ // Handle generic TCP package
+ $this->getListenerInstance()->doListen();
+
+ // Handle hub TCP package
+ $this->partialStub('Need to handle hub TCP package.');
+ }
+
+ /**
+ * Checks whether the listener would accept the given package data array
+ *
+ * @param $packageData Raw package data
+ * @return $accepts Whether this listener does accept
+ */
+ public function ifListenerAcceptsPackageData (array $packageData) {
+ // Get a tags instance
+ $tagsInstance = PackageTagsFactory::createPackageTagsInstance();
+
+ // So is the package accepted with this listener?
+ $accepts = $tagsInstance->ifPackageDataIsAcceptedByListener($packageData, $this);
+
+ // Return the result
+ return $accepts;
}
}