friendship ended with social-app. php is my new best friend
at main 1.3 kB view raw
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}