| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- <?php
- /**
- * This file is part of workerman.
- *
- * Licensed under The MIT License
- * For full copyright and license information, please see the MIT-LICENSE.txt
- * Redistributions of files must retain the above copyright notice.
- *
- * @author walkor<walkor@workerman.net>
- * @copyright walkor<walkor@workerman.net>
- * @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]);
- }
- }
- }
|