name: ConcurrencyLimiter class_comment: null dependencies: - name: LimiterTimeoutException type: class source: Illuminate\Contracts\Redis\LimiterTimeoutException - name: Sleep type: class source: Illuminate\Support\Sleep - name: Str type: class source: Illuminate\Support\Str - name: Throwable type: class source: Throwable properties: - name: redis visibility: protected comment: '# * The Redis factory implementation. # * # * @var \Illuminate\Redis\Connections\Connection' - name: name visibility: protected comment: '# * The name of the limiter. # * # * @var string' - name: maxLocks visibility: protected comment: '# * The allowed number of concurrent tasks. # * # * @var int' - name: releaseAfter visibility: protected comment: '# * The number of seconds a slot should be maintained. # * # * @var int' methods: - name: __construct visibility: public parameters: - name: redis - name: name - name: maxLocks - name: releaseAfter comment: "# * The Redis factory implementation.\n# *\n# * @var \\Illuminate\\Redis\\\ Connections\\Connection\n# */\n# protected $redis;\n# \n# /**\n# * The name of\ \ the limiter.\n# *\n# * @var string\n# */\n# protected $name;\n# \n# /**\n# *\ \ The allowed number of concurrent tasks.\n# *\n# * @var int\n# */\n# protected\ \ $maxLocks;\n# \n# /**\n# * The number of seconds a slot should be maintained.\n\ # *\n# * @var int\n# */\n# protected $releaseAfter;\n# \n# /**\n# * Create a new\ \ concurrency limiter instance.\n# *\n# * @param \\Illuminate\\Redis\\Connections\\\ Connection $redis\n# * @param string $name\n# * @param int $maxLocks\n# *\ \ @param int $releaseAfter\n# * @return void" - name: block visibility: public parameters: - name: timeout - name: callback default: 'null' - name: sleep default: '250' comment: '# * Attempt to acquire the lock for the given number of seconds. # * # * @param int $timeout # * @param callable|null $callback # * @param int $sleep # * @return mixed # * # * @throws \Illuminate\Contracts\Redis\LimiterTimeoutException # * @throws \Throwable' - name: acquire visibility: protected parameters: - name: id comment: '# * Attempt to acquire the lock. # * # * @param string $id A unique identifier for this lock # * @return mixed' - name: lockScript visibility: protected parameters: [] comment: '# * Get the Lua script for acquiring a lock. # * # * KEYS - The keys that represent available slots # * ARGV[1] - The limiter name # * ARGV[2] - The number of seconds the slot should be reserved # * ARGV[3] - The unique identifier for this lock # * # * @return string' - name: release visibility: protected parameters: - name: key - name: id comment: '# * Release the lock. # * # * @param string $key # * @param string $id # * @return void' - name: releaseScript visibility: protected parameters: [] comment: '# * Get the Lua script to atomically release a lock. # * # * KEYS[1] - The name of the lock # * ARGV[1] - The unique identifier for this lock # * # * @return string' traits: - Illuminate\Contracts\Redis\LimiterTimeoutException - Illuminate\Support\Sleep - Illuminate\Support\Str - Throwable interfaces: []