Code Duplication    Length = 33-33 lines in 2 locations

src/Statistics/Collectors/RedisCollector.php 2 locations

@@ 80-112 (lines=33) @@
77
     * @param  string|int  $appId
78
     * @return void
79
     */
80
    public function connection($appId)
81
    {
82
        // Increment the current connections count by 1.
83
        $this->ensureAppIsInSet($appId)
84
            ->hincrby(
85
                $this->channelManager->getRedisKey($appId, null, ['stats']),
86
                'current_connections_count', 1
87
            )
88
            ->then(function ($currentConnectionsCount) use ($appId) {
89
                // Get the peak connections count from Redis.
90
                $this->channelManager
91
                    ->getPublishClient()
92
                    ->hget(
93
                        $this->channelManager->getRedisKey($appId, null, ['stats']),
94
                        'peak_connections_count'
95
                    )
96
                    ->then(function ($currentPeakConnectionCount) use ($currentConnectionsCount, $appId) {
97
                        // Extract the greatest number between the current peak connection count
98
                        // and the current connection number.
99
                        $peakConnectionsCount = is_null($currentPeakConnectionCount)
100
                            ? $currentConnectionsCount
101
                            : max($currentPeakConnectionCount, $currentConnectionsCount);
102
103
                        // Then set it to the database.
104
                        $this->channelManager
105
                            ->getPublishClient()
106
                            ->hset(
107
                                $this->channelManager->getRedisKey($appId, null, ['stats']),
108
                                'peak_connections_count', $peakConnectionsCount
109
                            );
110
                    });
111
            });
112
    }
113
114
    /**
115
     * Handle disconnections.
@@ 120-152 (lines=33) @@
117
     * @param  string|int  $appId
118
     * @return void
119
     */
120
    public function disconnection($appId)
121
    {
122
        // Decrement the current connections count by 1.
123
        $this->ensureAppIsInSet($appId)
124
            ->hincrby($this->channelManager->getRedisKey($appId, null, ['stats']), 'current_connections_count', -1)
125
            ->then(function ($currentConnectionsCount) use ($appId) {
126
                // Get the peak connections count from Redis.
127
                $this->channelManager
128
                    ->getPublishClient()
129
                    ->hget($this->channelManager->getRedisKey($appId, null, ['stats']), 'peak_connections_count')
130
                    ->then(function ($currentPeakConnectionCount) use ($currentConnectionsCount, $appId) {
131
                        // Extract the greatest number between the current peak connection count
132
                        // and the current connection number.
133
                        $peakConnectionsCount = is_null($currentPeakConnectionCount)
134
                            ? $currentConnectionsCount
135
                            : max($currentPeakConnectionCount, $currentConnectionsCount);
136
137
                        // Then set it to the database.
138
                        $this->channelManager
139
                            ->getPublishClient()
140
                            ->hset(
141
                                $this->channelManager->getRedisKey($appId, null, ['stats']),
142
                                'peak_connections_count', $peakConnectionsCount
143
                            );
144
                    });
145
            });
146
    }
147
148
    /**
149
     * Save all the stored statistics.
150
     *
151
     * @return void
152
     */
153
    public function save()
154
    {
155
        $this->lock()->get(function () {