Code Duplication    Length = 11-13 lines in 4 locations

Classes/RedisLockStrategy.php 2 locations

@@ 240-250 (lines=11) @@
237
     *
238
     * @return boolean TRUE on sucess, FALSE otherwise
239
     */
240
    private function init()
241
    {
242
        $script = '
243
            if redis.call("EXISTS", KEYS[1], KEYS[2]) == 0 then
244
                return redis.call("RPUSH", KEYS[2], ARGV[1]) and redis.call("EXPIRE", KEYS[2], ARGV[2])
245
            else
246
                return 0
247
            end
248
        ';
249
        return (bool) $this->redis->eval($script, [$this->name, $this->mutex, $this->value, $this->ttl], 2);
250
    }
251
252
    /**
253
     * Try to get the lock
@@ 285-295 (lines=11) @@
282
     *
283
     * @return boolean TRUE on success, FALSE otherwise
284
     */
285
    private function unlockAndSignal()
286
    {
287
        $script = '
288
            if (redis.call("GET", KEYS[1]) == ARGV[1]) and (redis.call("DEL", KEYS[1]) == 1) then
289
                return redis.call("RPUSH", KEYS[2], ARGV[1]) and redis.call("EXPIRE", KEYS[2], ARGV[2])
290
            else
291
                return 0
292
            end
293
        ';
294
        return (bool) $this->redis->eval($script, [$this->name, $this->mutex, $this->value, $this->ttl], 2);
295
    }
296
297
}
298

Tests/test.php 2 locations

@@ 251-263 (lines=13) @@
248
     *
249
     * @return boolean TRUE on sucess, FALSE otherwise
250
     */
251
    private function init()
252
    {
253
        $script = '
254
            if not (redis.call("EXISTS", KEYS[1], KEYS[2]) == 2) then
255
                return redis.call("RPUSH", KEYS[2], ARGV[1]) and redis.call("EXPIRE", KEYS[2], ARGV[2])
256
            else
257
                return 0
258
            end
259
        ';
260
        $ret = $this->redis->eval($script, [$this->name, $this->mutex, $this->value, $this->ttl], 2);
261
262
        return (bool) $ret;
263
    }
264
265
    /**
266
     * Try to get the lock
@@ 297-307 (lines=11) @@
294
     *
295
     * @return boolean TRUE on success, FALSE otherwise
296
     */
297
    private function unlockAndSignal()
298
    {
299
        $script = '
300
            if (redis.call("GET", KEYS[1]) == ARGV[1]) and (redis.call("DEL", KEYS[1]) == 1) then
301
                return redis.call("RPUSH", KEYS[2], ARGV[1]) and redis.call("EXPIRE", KEYS[2], ARGV[2])
302
            else
303
                return 0
304
            end
305
        ';
306
        return (bool) $this->redis->eval($script, [$this->name, $this->mutex, $this->value, $this->ttl], 2);
307
    }
308
309
}
310