name: ConcurrencyLimiterBuilder
class_comment: null
dependencies:
- name: LimiterTimeoutException
  type: class
  source: Illuminate\Contracts\Redis\LimiterTimeoutException
- name: InteractsWithTime
  type: class
  source: Illuminate\Support\InteractsWithTime
- name: InteractsWithTime
  type: class
  source: InteractsWithTime
properties:
- name: connection
  visibility: public
  comment: '# * The Redis connection.

    # *

    # * @var \Illuminate\Redis\Connections\Connection'
- name: name
  visibility: public
  comment: '# * The name of the lock.

    # *

    # * @var string'
- name: maxLocks
  visibility: public
  comment: '# * The maximum number of entities that can hold the lock at the same
    time.

    # *

    # * @var int'
- name: releaseAfter
  visibility: public
  comment: '# * The number of seconds to maintain the lock until it is automatically
    released.

    # *

    # * @var int'
- name: timeout
  visibility: public
  comment: '# * The amount of time to block until a lock is available.

    # *

    # * @var int'
- name: sleep
  visibility: public
  comment: '# * The number of milliseconds to wait between attempts to acquire the
    lock.

    # *

    # * @var int'
methods:
- name: __construct
  visibility: public
  parameters:
  - name: connection
  - name: name
  comment: "# * The Redis connection.\n# *\n# * @var \\Illuminate\\Redis\\Connections\\\
    Connection\n# */\n# public $connection;\n# \n# /**\n# * The name of the lock.\n\
    # *\n# * @var string\n# */\n# public $name;\n# \n# /**\n# * The maximum number\
    \ of entities that can hold the lock at the same time.\n# *\n# * @var int\n# */\n\
    # public $maxLocks;\n# \n# /**\n# * The number of seconds to maintain the lock\
    \ until it is automatically released.\n# *\n# * @var int\n# */\n# public $releaseAfter\
    \ = 60;\n# \n# /**\n# * The amount of time to block until a lock is available.\n\
    # *\n# * @var int\n# */\n# public $timeout = 3;\n# \n# /**\n# * The number of\
    \ milliseconds to wait between attempts to acquire the lock.\n# *\n# * @var int\n\
    # */\n# public $sleep = 250;\n# \n# /**\n# * Create a new builder instance.\n\
    # *\n# * @param  \\Illuminate\\Redis\\Connections\\Connection  $connection\n#\
    \ * @param  string  $name\n# * @return void"
- name: limit
  visibility: public
  parameters:
  - name: maxLocks
  comment: '# * Set the maximum number of locks that can be obtained per time window.

    # *

    # * @param  int  $maxLocks

    # * @return $this'
- name: releaseAfter
  visibility: public
  parameters:
  - name: releaseAfter
  comment: '# * Set the number of seconds until the lock will be released.

    # *

    # * @param  int  $releaseAfter

    # * @return $this'
- name: block
  visibility: public
  parameters:
  - name: timeout
  comment: '# * Set the amount of time to block until a lock is available.

    # *

    # * @param  int  $timeout

    # * @return $this'
- name: sleep
  visibility: public
  parameters:
  - name: sleep
  comment: '# * The number of milliseconds to wait between lock acquisition attempts.

    # *

    # * @param  int  $sleep

    # * @return $this'
- name: then
  visibility: public
  parameters:
  - name: callback
  - name: failure
    default: 'null'
  comment: '# * Execute the given callback if a lock is obtained, otherwise call the
    failure callback.

    # *

    # * @param  callable  $callback

    # * @param  callable|null  $failure

    # * @return mixed

    # *

    # * @throws \Illuminate\Contracts\Redis\LimiterTimeoutException'
traits:
- Illuminate\Contracts\Redis\LimiterTimeoutException
- Illuminate\Support\InteractsWithTime
- InteractsWithTime
interfaces: []