Buffer::__destruct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 0
1
<?php
2
3
namespace Dazzle\ChannelZmq\Buffer;
4
5
use Dazzle\Zmq\ZmqSocket;
6
7
/**
8
 * @codeCoverageIgnore
9
 */
10
class Buffer
11
{
12
    /**
13
     * @var ZmqSocket
14
     */
15
    protected $socket;
16
17
    /**
18
     * @var string[]
19
     */
20
    protected $messageBuffer;
21
22
    /**
23
     * @var int
24
     */
25
    protected $messageBufferSize;
26
27
    /**
28
     * @var int
29
     */
30
    protected $messageBufferMax;
31
32
    /**
33
     * @param ZmqSocket $socket
34
     * @param int $bufferSize
35
     */
36
    public function __construct(ZmqSocket $socket, $bufferSize = 0)
37
    {
38
        $this->socket = $socket;
39
        $this->messageBuffer = [];
40
        $this->messageBufferSize = 0;
41
        $this->messageBufferMax = $bufferSize;
42
    }
43
44
    /**
45
     *
46
     */
47
    public function __destruct()
48
    {
49
        $this->erase();
50
        unset($this->socket);
51
    }
52
53
    /**
54
     * @param string[] $frame
55
     * @return bool
56
     */
57
    public function add($frame)
58
    {
59
        if ($this->messageBufferSize >= $this->messageBufferMax && $this->messageBufferMax > 0)
60
        {
61
            return false;
62
        }
63
64
        $this->messageBuffer[] = $frame;
65
        $this->messageBufferSize++;
66
67
        return true;
68
    }
69
70
    /**
71
     *
72
     */
73
    public function send()
74
    {
75
        foreach ($this->messageBuffer as $message)
76
        {
77
            $this->socket->send($message);
78
        }
79
80
        $this->messageBuffer = [];
81
        $this->messageBufferSize = 0;
82
    }
83
84
    /**
85
     *
86
     */
87
    public function erase()
88
    {
89
        $this->messageBuffer = [];
90
        $this->messageBufferSize = 0;
91
    }
92
}
93