* @copyright walkor * @link http://www.workerman.net/ * @license http://www.opensource.org/licenses/mit-license.php MIT License */ namespace Workerman\Events\React; /** * Class ExtEventLoop * @package Workerman\Events\React */ class ExtEventLoop extends \React\EventLoop\ExtEventLoop { /** * Event base. * * @var EventBase */ protected $_eventBase = null; /** * All signal Event instances. * * @var array */ protected $_signalEvents = array(); /** * Construct */ public function __construct() { parent::__construct(); $class = new \ReflectionClass('\React\EventLoop\ExtEventLoop'); $property = $class->getProperty('eventBase'); $property->setAccessible(true); $this->_eventBase = $property->getValue($this); } /** * Add signal handler. * * @param $signal * @param $callback * @return bool */ public function addSignal($signal, $callback) { $event = \Event::signal($this->_eventBase, $signal, $callback); if (!$event||!$event->add()) { return false; } $this->_signalEvents[$signal] = $event; } /** * Remove signal handler. * * @param $signal */ public function removeSignal($signal) { if (isset($this->_signalEvents[$signal])) { $this->_signalEvents[$signal]->del(); unset($this->_signalEvents[$signal]); } } }