Subversion Repositories php-qbpwcf

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 liveuser 1
<?php
2
 
3
namespace React\EventLoop;
4
 
5
/**
6
 * @internal
7
 */
8
final class SignalsHandler
9
{
10
    private $signals = array();
11
 
12
    public function add($signal, $listener)
13
    {
14
        if (!isset($this->signals[$signal])) {
15
            $this->signals[$signal] = array();
16
        }
17
 
18
        if (\in_array($listener, $this->signals[$signal])) {
19
            return;
20
        }
21
 
22
        $this->signals[$signal][] = $listener;
23
    }
24
 
25
    public function remove($signal, $listener)
26
    {
27
        if (!isset($this->signals[$signal])) {
28
            return;
29
        }
30
 
31
        $index = \array_search($listener, $this->signals[$signal], true);
32
        unset($this->signals[$signal][$index]);
33
 
34
        if (isset($this->signals[$signal]) && \count($this->signals[$signal]) === 0) {
35
            unset($this->signals[$signal]);
36
        }
37
    }
38
 
39
    public function call($signal)
40
    {
41
        if (!isset($this->signals[$signal])) {
42
            return;
43
        }
44
 
45
        foreach ($this->signals[$signal] as $listener) {
46
            \call_user_func($listener, $signal);
47
        }
48
    }
49
 
50
    public function count($signal)
51
    {
52
        if (!isset($this->signals[$signal])) {
53
            return 0;
54
        }
55
 
56
        return \count($this->signals[$signal]);
57
    }
58
 
59
    public function isEmpty()
60
    {
61
        return !$this->signals;
62
    }
63
}