AbstractSessionEvent   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 75
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 5
dl 0
loc 75
ccs 23
cts 23
cp 1
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A respondeToFeatures() 0 17 3
A isBlocking() 0 4 1
A getId() 0 8 2
A setId() 0 5 1
1
<?php
2
3
/**
4
 * Copyright 2014 Fabian Grutschus. All rights reserved.
5
 *
6
 * Redistribution and use in source and binary forms, with or without modification,
7
 * are permitted provided that the following conditions are met:
8
 *
9
 * 1. Redistributions of source code must retain the above copyright notice, this
10
 *   list of conditions and the following disclaimer.
11
 *
12
 * 2. Redistributions in binary form must reproduce the above copyright notice,
13
 *   this list of conditions and the following disclaimer in the documentation
14
 *   and/or other materials provided with the distribution.
15
 *
16
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
20
 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
 *
27
 * The views and conclusions contained in the software and documentation are those
28
 * of the authors and should not be interpreted as representing official policies,
29
 * either expressed or implied, of the copyright holders.
30
 *
31
 * @author    Fabian Grutschus <[email protected]>
32
 * @copyright 2014 Fabian Grutschus. All rights reserved.
33
 * @license   BSD
34
 * @link      http://github.com/fabiang/xmpp
35
 */
36
37
namespace Fabiang\Xmpp\EventListener\Stream;
38
39
use Fabiang\Xmpp\EventListener\AbstractEventListener;
40
use Fabiang\Xmpp\Event\XMLEvent;
41
use Fabiang\Xmpp\Util\XML;
42
43
/**
44
 * Listener
45
 *
46
 * @package Xmpp\EventListener
47
 */
48
abstract class AbstractSessionEvent extends AbstractEventListener
49
{
50
51
    /**
52
     * Generated id.
53
     *
54
     * @var string
55
     */
56
    protected $id;
57
58
    /**
59
     * Listener is blocking.
60
     *
61
     * @var boolean
62
     */
63
    protected $blocking = false;
64
65
    /**
66
     * Handle session event.
67
     *
68
     * @param XMLEvent $event
69
     * @return void
70
     */
71 3
    protected function respondeToFeatures(XMLEvent $event, $data)
72
    {
73 3
        if ($event->isEndTag()) {
74
            /* @var $element \DOMElement */
75 3
            $element = $event->getParameter(0);
76
77
            // bind element occured in <features>
78 3
            if ('features' === $element->parentNode->localName) {
79 3
                $this->blocking = true;
80 3
                $this->getConnection()->send(sprintf(
81 3
                    $data,
82 3
                    $this->getId(),
83 3
                    $this->getOptions()->getResource()
84 3
                ));
85 3
            }
86 3
        }
87 3
    }
88
89
    /**
90
     * {@inheritDoc}
91
     */
92 3
    public function isBlocking()
93
    {
94 3
        return $this->blocking;
95
    }
96
97
    /**
98
     * Get generated id.
99
     *
100
     * @return string
101
     */
102 3
    public function getId()
103
    {
104 3
        if (null === $this->id) {
105 3
            $this->id = XML::generateId();
106 3
        }
107
108 3
        return $this->id;
109
    }
110
111
    /**
112
     * Set generated id.
113
     *
114
     * @param string $id
115
     * @return $this
116
     */
117 3
    public function setId($id)
118
    {
119 3
        $this->id = (string) $id;
120 3
        return $this;
121
    }
122
}
123