summaryrefslogtreecommitdiffstats
path: root/vendor/clue/connection-manager-extra/src/ConnectionManagerReject.php
blob: 1222c83a56785b854817b441527e43fc060012b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php

namespace ConnectionManager\Extra;

use React\Socket\ConnectorInterface;
use React\Promise;
use Exception;

// a simple connection manager that rejects every single connection attempt
class ConnectionManagerReject implements ConnectorInterface
{
    private $reason = 'Connection rejected';

    /**
     * @param null|string|callable $reason
     */
    public function __construct($reason = null)
    {
        if ($reason !== null) {
            $this->reason = $reason;
        }
    }

    public function connect($uri)
    {
        $reason = $this->reason;
        if (!is_string($reason)) {
            try {
                $reason = $reason($uri);
            } catch (\Exception $e) {
                $reason = $e;
            }
        }

        if (!$reason instanceof \Exception) {
            $reason = new Exception($reason);
        }

        return Promise\reject($reason);
    }
}