Completed
Branch 0.4-dev (999b58)
by Evgenij
18:41
created

RemoveFinishedSocketsEventHandler::invokeEvent()   A

Complexity

Conditions 4
Paths 6

Size

Total Lines 14
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 4

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 14
ccs 12
cts 12
cp 1
rs 9.2
cc 4
eloc 8
nc 6
nop 1
crap 4
1
<?php
2
/**
3
 * Async sockets
4
 *
5
 * @copyright Copyright (c) 2015-2016, Efimov Evgenij <[email protected]>
6
 *
7
 * This source file is subject to the MIT license that is bundled
8
 * with this source code in the file LICENSE.
9
 */
10
namespace AsyncSockets\RequestExecutor;
11
12
use AsyncSockets\Event\Event;
13
use AsyncSockets\Event\EventType;
14
15
/**
16
 * Class RemoveFinishedSocketsEventHandler
17
 */
18
class RemoveFinishedSocketsEventHandler implements EventHandlerInterface
19
{
20
    /**
21
     * Target handler
22
     *
23
     * @var EventHandlerInterface
24
     */
25
    private $handler;
26
27
    /**
28
     * RemoveFinishedSocketsEventHandler constructor.
29
     *
30
     * @param EventHandlerInterface $handler Original event handler
31
     */
32 5
    public function __construct(EventHandlerInterface $handler = null)
33
    {
34 5
        $this->handler = $handler;
35 5
    }
36
37
    /** {@inheritdoc} */
38 5
    public function invokeEvent(Event $event)
39
    {
40 5
        if ($this->handler) {
41 4
            $this->handler->invokeEvent($event);
42 4
        }
43
44 5
        if ($event->getType() === EventType::FINALIZE) {
45 4
            $bag    = $event->getExecutor()->socketBag();
46 4
            $socket = $event->getSocket();
47 4
            if ($bag->hasSocket($socket)) {
48 1
                $bag->removeSocket($socket);
49 1
            }
50 4
        }
51 5
    }
52
}
53