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

# Class AbstractBackoffStrategy

Abstract backoff strategy that allows for a chain of responsibility

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

### Direct known subclasses

`Aws\Common\Client\ExpiredCredentialsChecker`, `Aws\Common\Client\ThrottlingErrorChecker`, `Guzzle\Plugin\Backoff\TruncatedBackoffStrategy`, `Aws\DynamoDb\Crc32ErrorChecker`, `Aws\S3\IncompleteMultipartUploadChecker`, `Aws\S3\SocketTimeoutChecker`, `Guzzle\Plugin\Backoff\AbstractErrorCodeBackoffStrategy`, `Guzzle\Plugin\Backoff\CallbackBackoffStrategy`, `Guzzle\Plugin\Backoff\ConstantBackoffStrategy`, `Guzzle\Plugin\Backoff\ExponentialBackoffStrategy`, `Guzzle\Plugin\Backoff\LinearBackoffStrategy`

### Indirect known subclasses

`Guzzle\Plugin\Backoff\CurlBackoffStrategy`, `Guzzle\Plugin\Backoff\HttpBackoffStrategy`, `Guzzle\Plugin\Backoff\ReasonPhraseBackoffStrategy`

Abstract
Namespace: Guzzle\Plugin\Backoff
Located at Guzzle/Plugin/Backoff/AbstractBackoffStrategy.php

## Methods summary

- `public` `setNext ( Guzzle\Plugin\Backoff\AbstractBackoffStrategy $next )`
- `public` `getNext ( )`

  Get the next backoff strategy in the chain

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

  Get the amount of time to delay in seconds before retrying a request

- `abstract public` `makesDecision ( )`

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

- `abstract 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`
`setNext( `Guzzle\Plugin\Backoff\AbstractBackoffStrategy` $next )`

#### Parameters

$next
  ``Guzzle\Plugin\Backoff\AbstractBackoffStrategy``
  $next Next strategy in the chain

# `public `Guzzle\Plugin\Backoff\AbstractBackoffStrategy`|null`
`getNext( )`

Get the next backoff strategy in the chain

#### Returns

``Guzzle\Plugin\Backoff\AbstractBackoffStrategy`|null`
# `public boolean|integer`
`getBackoffPeriod( integer $retries, `Guzzle\Http\Message\RequestInterface` $request, `Guzzle\Http\Message\Response` $response = null, `Guzzle\Http\Exception\HttpException` $e = null )`

Get the amount of time to delay in seconds before retrying a request

#### 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`
Returns false to not retry or the number of seconds to delay between retries

#### Implementation of

`Guzzle\Plugin\Backoff\BackoffStrategyInterface::getBackoffPeriod()`
# `abstract 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`
# `abstract 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.

### Magic methods summary

## Properties summary

`protected `Guzzle\Plugin\Backoff\AbstractBackoffStrategy`` | $next | # Next strategy in the chain