* @version 0.0.0 * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2016 Core Developer Team * @license GNU GPL 3.0 or any newer version * @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 * 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 . */ class SocketFileListenerDecorator extends BaseListenerDecorator implements Listenable { /** * Protected constructor * * @return void */ protected function __construct () { // Call parent constructor parent::__construct(__CLASS__); // Set listener type and protocol name $this->setListenerType('hub'); $this->setProtocolName('tcp'); } /** * Creates an instance of this class * * @param $listenerInstance A Listener instance * @return $decoratorInstance An instance a prepared listener decorator class */ public static final function createSocketFileListenerDecorator (Listenable $listenerInstance) { // Get new instance $decoratorInstance = new SocketFileListenerDecorator(); // Set the application instance $decoratorInstance->setListenerInstance($listenerInstance); // Return the prepared instance return $decoratorInstance; } /** * Initializes the listener by setting up the required socket server * * @return void */ 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; } }