diff options
Diffstat (limited to 'assets/php/vendor/react/socket/src/UnixConnector.php')
-rw-r--r-- | assets/php/vendor/react/socket/src/UnixConnector.php | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/assets/php/vendor/react/socket/src/UnixConnector.php b/assets/php/vendor/react/socket/src/UnixConnector.php new file mode 100644 index 0000000..9b84ab0 --- /dev/null +++ b/assets/php/vendor/react/socket/src/UnixConnector.php @@ -0,0 +1,44 @@ +<?php + +namespace React\Socket; + +use React\EventLoop\LoopInterface; +use React\Promise; +use InvalidArgumentException; +use RuntimeException; + +/** + * Unix domain socket connector + * + * Unix domain sockets use atomic operations, so we can as well emulate + * async behavior. + */ +final class UnixConnector implements ConnectorInterface +{ + private $loop; + + public function __construct(LoopInterface $loop) + { + $this->loop = $loop; + } + + public function connect($path) + { + if (strpos($path, '://') === false) { + $path = 'unix://' . $path; + } elseif (substr($path, 0, 7) !== 'unix://') { + return Promise\reject(new InvalidArgumentException('Given URI "' . $path . '" is invalid')); + } + + $resource = @stream_socket_client($path, $errno, $errstr, 1.0); + + if (!$resource) { + return Promise\reject(new RuntimeException('Unable to connect to unix domain socket "' . $path . '": ' . $errstr, $errno)); + } + + $connection = new Connection($resource, $this->loop); + $connection->unix = true; + + return Promise\resolve($connection); + } +} |