ConnectionWrapper::pubsCount()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
/*
4
 * This file is part of the NatsBundle package.
5
 *
6
 * (c) Issel Guberna <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Octante\NatsBundle\Connection;
13
14
class ConnectionWrapper
15
{
16
    /**
17
     * @var
18
     */
19
    private $connection;
20
21
    /**
22
     * @var
23
     */
24
    private $logger;
25
26
    /**
27
     * @param $connection
28
     * @param $logger
29
     */
30
    public function __construct($connection, $logger)
31
    {
32
        $this->connection = $connection;
33
        $this->logger = $logger;
34
    }
35
36
    /**
37
     * Return the number of pings.
38
     *
39
     * @return int Number of pings
40
     */
41
    public function pingsCount()
42
    {
43
        return $this->connection->pingsCount();
44
    }
45
46
    /**
47
     * Return the number of messages published.
48
     *
49
     * @return int number of messages published
50
     */
51
    public function pubsCount()
52
    {
53
        return $this->connection->pubsCount();
54
    }
55
56
    /**
57
     * Return the number of reconnects to the server.
58
     *
59
     * @return int number of reconnects
60
     */
61
    public function reconnectsCount()
62
    {
63
        return $this->connection->reconnectsCount();
64
    }
65
66
    /**
67
     * Return the number of subscriptions available.
68
     *
69
     * @return int number of subscription
70
     */
71
    public function subscriptionsCount()
72
    {
73
        return $this->connection->subscriptionsCount();
74
    }
75
76
    /**
77
     * Return subscriptions list.
78
     *
79
     * @return array list of subscription ids
80
     */
81
    public function getSubscriptions()
82
    {
83
        return $this->connection->getSubscriptions();
84
    }
85
86
    /**
87
     * Checks if the client is connected to a server.
88
     *
89
     * @return boolean
90
     */
91
    public function isConnected()
92
    {
93
        return $this->connection->isConnected();
94
    }
95
96
    /**
97
     * Connect to server.
98
     *
99
     * @param integer $timeout Number of seconds until the connect() system call should timeout.
100
     *
101
     * @throws \Exception Exception raised if connection fails.
102
     *
103
     * @return void
104
     */
105
    public function connect($timeout = null)
106
    {
107
        $this->connection->connect($timeout);
108
    }
109
110
    /**
111
     * Sends PING message.
112
     *
113
     * @return void
114
     */
115
    public function ping()
116
    {
117
        $startTime = microtime(true);
118
        $this->connection->ping();
119
        $duration = (microtime(true) - $startTime) * 1000;
120
        $this->logger->logCommand('PING: ', $duration, $this->connection, false);
121
    }
122
123
    /**
124
     * Request does a request and executes a callback with the response.
125
     *
126
     * @param string  $subject  Message topic.
127
     * @param string  $payload  Message data.
128
     * @param mixed   $callback Closure to be executed as callback.
129
     * @param integer $wait     Number of messages to wait for.
130
     *
131
     * @return void
132
     */
133 View Code Duplication
    public function request($subject, $payload, $callback, $wait = 1)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
134
    {
135
        $startTime = microtime(true);
136
        $this->connection->request($subject, $payload, $callback, $wait);
137
        $duration = (microtime(true) - $startTime) * 1000;
138
        $this->logger->logCommand('REQUEST: ', $duration, $this->connection, false);
139
    }
140
141
    /**
142
     * Publish publishes the data argument to the given subject.
143
     *
144
     * @param string $subject Message topic.
145
     * @param string $payload Message data.
146
     *
147
     * @return void
148
     */
149 View Code Duplication
    public function publish($subject, $payload)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
150
    {
151
        $startTime = microtime(true);
152
        $this->connection->publish($subject, $payload);
153
        $duration = (microtime(true) - $startTime) * 1000;
154
        $this->logger->logCommand('PUBLISH: ' . $subject, $duration, $this->connection, false);
155
    }
156
157
    /**
158
     * Subscribes to an specific event given a subject.
159
     *
160
     * @param string   $subject  Message topic.
161
     * @param \Closure $callback Closure to be executed as callback.
162
     *
163
     * @return string
164
     */
165 View Code Duplication
    public function subscribe($subject, \Closure $callback)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
166
    {
167
        $startTime = microtime(true);
168
        $result = $this->connection->subscribe($subject, $callback);
169
        $duration = (microtime(true) - $startTime) * 1000;
170
        $this->logger->logCommand('SUBSCRIBE: ' . $subject, $duration, $this->connection, false);
171
        return $result;
172
    }
173
174
    /**
175
     * Unsubscribe from a event given a subject.
176
     *
177
     * @param string $sid Subscription ID.
178
     *
179
     * @return void
180
     */
181 View Code Duplication
    public function unsubscribe($sid)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
182
    {
183
        $startTime = microtime(true);
184
        $this->connection->unsubscribe($sid);
185
        $duration = (microtime(true) - $startTime) * 1000;
186
        $this->logger->logCommand('UNSUBSCRIBE: ' . $sid, $duration, $this->connection, false);
187
    }
188
189
    /**
190
     * Waits for messages.
191
     *
192
     * @param integer $quantity Number of messages to wait for.
193
     *
194
     * @return resource $connection Connection object
195
     */
196
    public function wait($quantity = 0)
197
    {
198
        return $this->connection->wait($quantity);
199
    }
200
201
    /**
202
     * Set Stream Timeout.
203
     *
204
     * @param integer $seconds Before timeout on stream.
205
     *
206
     * @return boolean
207
     */
208
    public function setStreamTimeout($seconds)
209
    {
210
        return $this->connection->setStreamTimeout($seconds);
211
    }
212
213
    /**
214
     * Reconnects to the server.
215
     *
216
     * @return void
217
     */
218
    public function reconnect()
219
    {
220
        $this->connection->reconnect();
221
    }
222
223
    /**
224
     * Close will close the connection to the server.
225
     *
226
     * @return void
227
     */
228
    public function close()
229
    {
230
        $this->connection->close();
231
    }
232
}