Code Duplication    Length = 11-13 lines in 4 locations

Classes/RedisLockStrategy.php 2 locations

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

Tests/test.php 2 locations

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