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

# Class WriteRequestBatchTransfer

Transfer logic for executing the write request batch

  Aws\DynamoDb\Model\BatchRequest\WriteRequestBatchTransfer implements Guzzle\Batch\BatchTransferInterface

Namespace: Aws\DynamoDb\Model\BatchRequest
Located at Aws/DynamoDb/Model/BatchRequest/WriteRequestBatchTransfer.php

## Methods summary

- `public` `__construct ( Aws\Common\Client\AwsClientInterface $client )`

  Constructs a transfer using the injected client

- `public` `transfer ( array $batch )`

  Transfer an array of items

- `protected` `performTransfer ( array $batch, Aws\DynamoDb\Exception\UnprocessedWriteRequestsException $unprocessedRequests )`

  Transfer a batch of requests and collect any unprocessed items

- `protected` `prepareCommandsForBatchedItems ( array $batch )`

  Prepares an array of BatchWriteItem command objects for a given batch of items

- `protected` `getUnprocessedRequestsFromCommands ( array $commands, Aws\DynamoDb\Exception\UnprocessedWriteRequestsException $unprocessedRequests )`

  Handles unprocessed items from the executed commands. Unprocessed items can be collected and thrown in an UnprocessedWriteRequestsException

- `protected` `retryLargeRequest ( Guzzle\Http\Message\EntityEnclosingRequestInterface $request, Aws\DynamoDb\Exception\UnprocessedWriteRequestsException $unprocessedRequests )`

  Handles exceptions caused by the request being too large (over 1 MB). The response will have a status code of 413. In this case the batch should be split up into smaller batches and retried.

- `protected` `handleUnprocessedRequestsAfterException ( Guzzle\Http\Message\EntityEnclosingRequestInterface $request, Aws\DynamoDb\Exception\UnprocessedWriteRequestsException $unprocessedRequests )`

  Handles unprocessed items if the entire batch was rejected due to exceeding the provisioned throughput

- `protected` `convertResultsToUnprocessedRequests ( array $items )`

  Collects and creates unprocessed request objects from data collected from erroneous cases

## Methods detail

# `public`
`__construct( `Aws\Common\Client\AwsClientInterface` $client )`

Constructs a transfer using the injected client

#### Parameters

$client
  ``Aws\Common\Client\AwsClientInterface``
  $client

# `public`
`transfer( array $batch )`

Transfer an array of items

#### Parameters

$batch
  `array`
  $batch Array of items to transfer

#### Implementation of

`Guzzle\Batch\BatchTransferInterface::transfer()`
# `protected`
`performTransfer( array $batch, `Aws\DynamoDb\Exception\UnprocessedWriteRequestsException` $unprocessedRequests )`

Transfer a batch of requests and collect any unprocessed items

#### Parameters

$batch
  `array`
  $batch A batch of write requests
$unprocessedRequests
  ``Aws\DynamoDb\Exception\UnprocessedWriteRequestsException``
  $unprocessedRequests Collection of unprocessed items

#### Throws

``Guzzle\Common\Exception\ExceptionCollection``
# `protected array`
`prepareCommandsForBatchedItems( array $batch )`

Prepares an array of BatchWriteItem command objects for a given batch of items

#### Parameters

$batch
  `array`
  $batch A batch of write requests

#### Returns

`array`
# `protected`
`getUnprocessedRequestsFromCommands( array $commands, `Aws\DynamoDb\Exception\UnprocessedWriteRequestsException` $unprocessedRequests )`

Handles unprocessed items from the executed commands. Unprocessed items can be collected and thrown in an UnprocessedWriteRequestsException

#### Parameters

$commands
  `array`
  $commands Array of commands
$unprocessedRequests
  ``Aws\DynamoDb\Exception\UnprocessedWriteRequestsException``
  $unprocessedRequests Collection of unprocessed items

# `protected`
`retryLargeRequest( `Guzzle\Http\Message\EntityEnclosingRequestInterface` $request, `Aws\DynamoDb\Exception\UnprocessedWriteRequestsException` $unprocessedRequests )`

Handles exceptions caused by the request being too large (over 1 MB). The response will have a status code of 413. In this case the batch should be split up into smaller batches and retried.

#### Parameters

$request
  ``Guzzle\Http\Message\EntityEnclosingRequestInterface``
  $request The failed request
$unprocessedRequests
  ``Aws\DynamoDb\Exception\UnprocessedWriteRequestsException``
  $unprocessedRequests Collection of unprocessed items

# `protected`
`handleUnprocessedRequestsAfterException( `Guzzle\Http\Message\EntityEnclosingRequestInterface` $request, `Aws\DynamoDb\Exception\UnprocessedWriteRequestsException` $unprocessedRequests )`

Handles unprocessed items if the entire batch was rejected due to exceeding the provisioned throughput

#### Parameters

$request
  ``Guzzle\Http\Message\EntityEnclosingRequestInterface``
  $request The failed request
$unprocessedRequests
  ``Aws\DynamoDb\Exception\UnprocessedWriteRequestsException``
  $unprocessedRequests Collection of unprocessed items

# `protected array`
`convertResultsToUnprocessedRequests( array $items )`

Collects and creates unprocessed request objects from data collected from erroneous cases

#### Parameters

$items
  `array`
  $items Data formatted under "RequestItems" or "UnprocessedItems" keys

#### Returns

`array`

### Magic methods summary

## Constants summary

`integer` | `BATCH_WRITE_MAX_SIZE` | `25` | # The maximum number of items allowed in a BatchWriteItem operation

## Properties summary

`protected `Aws\Common\Client\AwsClientInterface`` | $client | # The DynamoDB client for doing transfers