NOTE: For Version 3 of the AWS SDK for PHP, please see the V3 User Guide and V3 API Reference.

# Class CallbackBackoffStrategy

Strategy that will invoke a closure to determine whether or not to retry with a delay

  Guzzle\Plugin\Backoff\AbstractBackoffStrategy implements Guzzle\Plugin\Backoff\BackoffStrategyInterface
  Guzzle\Plugin\Backoff\CallbackBackoffStrategy

Namespace: Guzzle\Plugin\Backoff
Located at Guzzle/Plugin/Backoff/CallbackBackoffStrategy.php

## Methods summary

- `public` `__construct ( \Closure|array|mixed $callback, bool $decision, Guzzle\Plugin\Backoff\BackoffStrategyInterface $next = null )`
- `public` `makesDecision ( )`

  Check if the strategy does filtering and makes decisions on whether or not to retry.

- `protected` `getDelay ( int $retries, Guzzle\Http\Message\RequestInterface $request, Guzzle\Http\Message\Response $response = null, Guzzle\Http\Exception\HttpException $e = null )`

  Implement the concrete strategy

## Methods detail

# `public`
`__construct( `Closure`|array|mixed $callback, boolean $decision, `Guzzle\Plugin\Backoff\BackoffStrategyInterface` $next = null )`

#### Parameters

$callback
  ``Closure`|array|mixed`
  $callback Callable method to invoke
$decision
  `boolean`
  $decision Set to true if this strategy makes a backoff decision
$next
  ``Guzzle\Plugin\Backoff\BackoffStrategyInterface``
  $next The optional next strategy

#### Throws

``Guzzle\Common\Exception\InvalidArgumentException``
# `public boolean`
`makesDecision( )`

Check if the strategy does filtering and makes decisions on whether or not to retry.

Strategies that return false will never retry if all of the previous strategies in a chain defer on a backoff decision.

#### Returns

`boolean`
# `protected boolean|integer|null`
`getDelay( integer $retries, `Guzzle\Http\Message\RequestInterface` $request, `Guzzle\Http\Message\Response` $response = null, `Guzzle\Http\Exception\HttpException` $e = null )`

Implement the concrete strategy

#### Parameters

$retries
  `integer`
  $retries Number of retries of the request
$request
  ``Guzzle\Http\Message\RequestInterface``
  $request Request that was sent
$response
  ``Guzzle\Http\Message\Response``
  $response Response that was received. Note that there may not be a response
$e
  ``Guzzle\Http\Exception\HttpException``
  $e Exception that was encountered if any

#### Returns

`boolean|integer|null`
Returns false to not retry or the number of seconds to delay between retries. Return true or null to defer to the next strategy if available, and if not, return 0.

### Methods inherited from Guzzle\Plugin\Backoff\AbstractBackoffStrategy

`getBackoffPeriod()`, `getNext()`, `setNext()`

### Magic methods summary

## Properties summary

`protected `Closure`|array|mixed` | $callback | # Callable method to invoke
`protected boolean` | $decision | # Whether or not this strategy makes a retry decision

### Properties inherited from Guzzle\Plugin\Backoff\AbstractBackoffStrategy

`$next`