Aws\S3\S3Client::_applyRetryConfig PHP Method

_applyRetryConfig() public static method

public static _applyRetryConfig ( $value, $_, Aws\HandlerList $list )
$list Aws\HandlerList
    public static function _applyRetryConfig($value, $_, HandlerList $list)
    {
        if (!$value) {
            return;
        }
        $decider = RetryMiddleware::createDefaultDecider($value);
        $decider = function ($retries, $command, $request, $result, $error) use($decider, $value) {
            $maxRetries = null !== $command['@retries'] ? $command['@retries'] : $value;
            if ($decider($retries, $command, $request, $result, $error)) {
                return true;
            } elseif ($error instanceof AwsException && $retries < $maxRetries) {
                if ($error->getResponse() && $error->getResponse()->getStatusCode() >= 400) {
                    return strpos($error->getResponse()->getBody(), 'Your socket connection to the server') !== false;
                } elseif ($error->getPrevious() instanceof RequestException) {
                    // All commands except CompleteMultipartUpload are
                    // idempotent and may be retried without worry if a
                    // networking error has occurred.
                    return $command->getName() !== 'CompleteMultipartUpload';
                }
            }
            return false;
        };
        $delay = [RetryMiddleware::class, 'exponentialDelay'];
        $list->appendSign(Middleware::retry($decider, $delay), 'retry');
    }