friendship ended with social-app. php is my new best friend
1<?php
2
3namespace React\EventLoop;
4
5/**
6 * @internal
7 */
8final 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}