Observer::closed()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 1
nc 2
nop 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * Event observer
4
 * User: moyo
5
 * Date: 2018/5/20
6
 * Time: 8:48 PM
7
 */
8
9
namespace Carno\Pool;
10
11
use Carno\Channel\Chan;
12
use Carno\Channel\Channel;
13
use Carno\Channel\Worker;
14
use Carno\Pool\Contracts\Event;
15
use Closure;
16
17
class Observer
18
{
19
    /**
20
     * @var Chan
21
     */
22
    private static $chan = null;
23
24
    /**
25
     * @param Pool $pool
26
     */
27
    public static function created(Pool $pool) : void
28
    {
29
        self::$chan && self::$chan->send([Event::CREATED, $pool]);
30
    }
31
32
    /**
33
     * @param Pool $pool
34
     */
35
    public static function closed(Pool $pool) : void
36
    {
37
        self::$chan && self::$chan->send([Event::CLOSED, $pool]);
38
    }
39
40
    /**
41
     * @param Closure $changed
42
     */
43
    public static function watch(Closure $changed) : void
44
    {
45
        new Worker(self::$chan ?? self::$chan = new Channel, static function (array $recv) use ($changed) {
46
            $changed(...$recv);
47
        });
48
    }
49
}
50