diff options
Diffstat (limited to 'vendor/react/socket/src/Server.php')
-rw-r--r-- | vendor/react/socket/src/Server.php | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/vendor/react/socket/src/Server.php b/vendor/react/socket/src/Server.php new file mode 100644 index 0000000..7d4111e --- /dev/null +++ b/vendor/react/socket/src/Server.php @@ -0,0 +1,114 @@ +<?php + +namespace React\Socket; + +use Evenement\EventEmitter; +use React\EventLoop\Loop; +use React\EventLoop\LoopInterface; +use Exception; + +/** + * @deprecated 1.9.0 See `SocketServer` instead + * @see SocketServer + */ +final class Server extends EventEmitter implements ServerInterface +{ + private $server; + + /** + * [Deprecated] `Server` + * + * This class exists for BC reasons only and should not be used anymore. + * + * ```php + * // deprecated + * $socket = new React\Socket\Server(0); + * $socket = new React\Socket\Server('127.0.0.1:8000'); + * $socket = new React\Socket\Server('127.0.0.1:8000', null, $context); + * $socket = new React\Socket\Server('127.0.0.1:8000', $loop, $context); + * + * // new + * $socket = new React\Socket\SocketServer('127.0.0.1:0'); + * $socket = new React\Socket\SocketServer('127.0.0.1:8000'); + * $socket = new React\Socket\SocketServer('127.0.0.1:8000', $context); + * $socket = new React\Socket\SocketServer('127.0.0.1:8000', $context, $loop); + * ``` + * + * This class takes an optional `LoopInterface|null $loop` parameter that can be used to + * pass the event loop instance to use for this object. You can use a `null` value + * here in order to use the [default loop](https://github.com/reactphp/event-loop#loop). + * This value SHOULD NOT be given unless you're sure you want to explicitly use a + * given event loop instance. + * + * For BC reasons, you can also pass the TCP socket context options as a simple + * array without wrapping this in another array under the `tcp` key. + * + * @param string|int $uri + * @param LoopInterface $loop + * @param array $context + * @deprecated 1.9.0 See `SocketServer` instead + * @see SocketServer + */ + public function __construct($uri, LoopInterface $loop = null, array $context = array()) + { + $loop = $loop ?: Loop::get(); + + // sanitize TCP context options if not properly wrapped + if ($context && (!isset($context['tcp']) && !isset($context['tls']) && !isset($context['unix']))) { + $context = array('tcp' => $context); + } + + // apply default options if not explicitly given + $context += array( + 'tcp' => array(), + 'tls' => array(), + 'unix' => array() + ); + + $scheme = 'tcp'; + $pos = \strpos($uri, '://'); + if ($pos !== false) { + $scheme = \substr($uri, 0, $pos); + } + + if ($scheme === 'unix') { + $server = new UnixServer($uri, $loop, $context['unix']); + } else { + $server = new TcpServer(str_replace('tls://', '', $uri), $loop, $context['tcp']); + + if ($scheme === 'tls') { + $server = new SecureServer($server, $loop, $context['tls']); + } + } + + $this->server = $server; + + $that = $this; + $server->on('connection', function (ConnectionInterface $conn) use ($that) { + $that->emit('connection', array($conn)); + }); + $server->on('error', function (Exception $error) use ($that) { + $that->emit('error', array($error)); + }); + } + + public function getAddress() + { + return $this->server->getAddress(); + } + + public function pause() + { + $this->server->pause(); + } + + public function resume() + { + $this->server->resume(); + } + + public function close() + { + $this->server->close(); + } +} |