EventEmitterTrait   A
last analyzed

Complexity

Total Complexity 23

Size/Duplication

Total Lines 187
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 98.21%

Importance

Changes 0
Metric Value
wmc 23
lcom 1
cbo 3
dl 0
loc 187
ccs 55
cts 56
cp 0.9821
rs 10
c 0
b 0
f 0

19 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 11 2
A __destruct() 0 4 1
A setMode() 0 4 1
A getMode() 0 4 1
A on() 0 6 1
A once() 0 6 1
A times() 0 6 1
A delay() 0 6 1
A delayOnce() 0 6 1
A delayTimes() 0 6 1
A removeListener() 0 7 2
A removeListeners() 0 7 2
A flushListeners() 0 7 2
A findListener() 0 4 1
A emit() 0 4 1
A copyEvent() 0 4 1
A copyEvents() 0 4 1
A forwardEvents() 0 4 1
A discardEvents() 0 4 1
1
<?php
2
3
namespace Dazzle\Event;
4
5
use Dazzle\Loop\LoopInterface;
6
7
trait EventEmitterTrait
8
{
9
    /**
10
     * @var EventEmitterInterface
11
     */
12
    protected $emitter;
13
14
    /**
15
     * @param LoopInterface $loop
16
     */
17 39
    public function __construct(LoopInterface $loop = null)
18
    {
19 39
        if ($loop !== null)
20
        {
21
            $this->emitter = new AsyncEventEmitter($loop);
22
        }
23
        else
24
        {
25 39
            $this->emitter = new BaseEventEmitter();
26
        }
27 39
    }
28
29
    /**
30
     *
31
     */
32 10
    public function __destruct()
33
    {
34 10
        unset($this->emitter);
35 10
    }
36
37
    /**
38
     * @see EventEmitterInterface::setMode
39
     */
40 10
    public function setMode($emitterMode)
41
    {
42 10
        $this->emitter->setMode($emitterMode);
43 10
    }
44
45
    /**
46
     * @see EventEmitterInterface::getMode
47
     */
48 2
    public function getMode()
49
    {
50 2
        return $this->emitter->getMode();
51
    }
52
53
    /**
54
     * @see EventEmitterInterface::on
55
     */
56 46
    public function on($event, callable $listener)
57
    {
58 46
        $handler = $this->emitter->on($event, $listener);
59
60 46
        return new EventListener($this, $handler->event, $handler->handler, $handler->listener);
61
    }
62
63
    /**
64
     * @see EventEmitterInterface::once
65
     */
66 6
    public function once($event, callable $listener)
67
    {
68 6
        $handler = $this->emitter->once($event, $listener);
69
70 6
        return new EventListener($this, $handler->event, $handler->handler, $handler->listener);
71
    }
72
73
    /**
74
     * @see EventEmitterInterface::times
75
     */
76 6
    public function times($event, $limit, callable $listener)
77
    {
78 6
        $handler = $this->emitter->times($event, $limit, $listener);
79
80 6
        return new EventListener($this, $handler->event, $handler->handler, $handler->listener);
81
    }
82
83
    /**
84
     * @see EventEmitterInterface::delay
85
     */
86 4
    public function delay($event, $ticks, callable $listener)
87
    {
88 4
        $handler = $this->emitter->delay($event, $ticks, $listener);
89
90 4
        return new EventListener($this, $handler->event, $handler->handler, $handler->listener);
91
    }
92
93
    /**
94
     * @see EventEmitterInterface::delayOnce
95
     */
96 4
    public function delayOnce($event, $ticks, callable $listener)
97
    {
98 4
        $handler = $this->emitter->delayOnce($event, $ticks, $listener);
99
100 4
        return new EventListener($this, $handler->event, $handler->handler, $handler->listener);
101
    }
102
103
    /**
104
     * @see EventEmitterInterface::delayTimes
105
     */
106 4
    public function delayTimes($event, $ticks, $limit, callable $listener)
107
    {
108 4
        $handler = $this->emitter->delayTimes($event, $ticks, $limit, $listener);
109
110 4
        return new EventListener($this, $handler->event, $handler->handler, $handler->listener);
111
    }
112
113
    /**
114
     * @see EventEmitterInterface::removeListener
115
     */
116 8
    public function removeListener($event, callable $listener)
117
    {
118 8
        if (isset($this->emitter))
119
        {
120 8
            $this->emitter->removeListener($event, $listener);
121
        }
122 8
    }
123
124
    /**
125
     * @see EventEmitterInterface::removeListeners
126
     */
127 4
    public function removeListeners($event)
128
    {
129 4
        if (isset($this->emitter))
130
        {
131 4
            $this->emitter->removeListeners($event);
132
        }
133 4
    }
134
135
    /**
136
     * @see EventEmitterInterface::flushListeners
137
     */
138 2
    public function flushListeners()
139
    {
140 2
        if (isset($this->emitter))
141
        {
142 2
            $this->emitter->flushListeners();
143
        }
144 2
    }
145
146
    /**
147
     * @see EventEmitterInterface::findListener
148
     */
149 2
    public function findListener($event, callable $listener)
150
    {
151 2
        return $this->emitter->findListener($event, $listener);
152
    }
153
154
    /**
155
     * @see EventEmitterInterface::emit
156
     */
157 66
    public function emit($event, $arguments = [])
158
    {
159 66
        $this->emitter->emit($event, $arguments);
160 66
    }
161
162
    /**
163
     * @see EventEmitterInterface::copyEvent
164
     */
165 2
    public function copyEvent(EventEmitterInterface $emitter, $event)
166
    {
167 2
        return $this->emitter->copyEvent($emitter, $event);
168
    }
169
170
    /**
171
     * @see EventEmitterInterface::copyEvents
172
     */
173 2
    public function copyEvents(EventEmitterInterface $emitter, $events)
174
    {
175 2
        return $this->emitter->copyEvents($emitter, $events);
176
    }
177
178
    /**
179
     * @see EventEmitterInterface::forwardEvents
180
     */
181 12
    public function forwardEvents(EventEmitterInterface $emitter)
182
    {
183 12
        return $this->emitter->forwardEvents($emitter);
184
    }
185
186
    /**
187
     * @see EventEmitterInterface::discardEvents
188
     */
189 4
    public function discardEvents(EventEmitterInterface $emitter)
190
    {
191 4
        return $this->emitter->discardEvents($emitter);
192
    }
193
}