1<?php
2
3namespace Illuminate\Contracts\Cache;
4
5interface Lock
6{
7    /**
8     * Attempt to acquire the lock.
9     *
10     * @param  callable|null  $callback
11     * @return mixed
12     */
13    public function get($callback = null);
14
15    /**
16     * Attempt to acquire the lock for the given number of seconds.
17     *
18     * @param  int  $seconds
19     * @param  callable|null  $callback
20     * @return mixed
21     */
22    public function block($seconds, $callback = null);
23
24    /**
25     * Release the lock.
26     *
27     * @return bool
28     */
29    public function release();
30
31    /**
32     * Returns the current owner of the lock.
33     *
34     * @return string
35     */
36    public function owner();
37
38    /**
39     * Releases this lock in disregard of ownership.
40     *
41     * @return void
42     */
43    public function forceRelease();
44}
45