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

# Class AbstractTransfer

Abstract class for transfer commonalities

  Guzzle\Common\AbstractHasDispatcher implements Guzzle\Common\HasDispatcherInterface
  Aws\Common\Model\MultipartUpload\AbstractTransfer implements Aws\Common\Model\MultipartUpload\TransferInterface

### Direct known subclasses

`Aws\Glacier\Model\MultipartUpload\AbstractTransfer`, `Aws\S3\Model\MultipartUpload\AbstractTransfer`

### Indirect known subclasses

`Aws\Glacier\Model\MultipartUpload\ParallelTransfer`, `Aws\Glacier\Model\MultipartUpload\SerialTransfer`, `Aws\S3\Model\MultipartUpload\ParallelTransfer`, `Aws\S3\Model\MultipartUpload\SerialTransfer`

Abstract
Namespace: Aws\Common\Model\MultipartUpload
Located at Aws/Common/Model/MultipartUpload/AbstractTransfer.php

## Methods summary

- `public` `__construct ( Aws\Common\Client\AwsClientInterface $client, Aws\Common\Model\MultipartUpload\TransferStateInterface $state, Guzzle\Http\EntityBody $source, array $options = array() )`

  Construct a new transfer object

- `public` `__invoke ( )`
- `public static` `getAllEvents ( )`

  Get a list of all of the events emitted from the class

- `public` `abort ( )`

  Abort the upload

- `public` `stop ( )`

  Stop the transfer and retrieve the current state.

- `public` `getState ( )`

  Get the current state of the upload

- `public` `getOptions ( )`

  Get the array of options associated with the transfer

- `public` `setOption ( string $option, mixed $value )`

  Set an option on the transfer

- `public` `getSource ( )`

  Get the source body of the upload

- `public` `upload ( )`

  Upload the source to using a multipart upload

- `protected` `getEventData ( Guzzle\Service\Command\OperationCommand $command = null )`

  Get an array used for event notifications

- `protected` `init ( )`

  Hook to initialize the transfer

- `abstract protected` `calculatePartSize ( )`

  Determine the upload part size based on the size of the source data and taking into account the acceptable minimum and maximum part sizes.

- `abstract protected` `complete ( )`

  Complete the multipart upload

- `abstract protected` `transfer ( )`

  Hook to implement in subclasses to perform the actual transfer

- `abstract protected` `getAbortCommand ( )`

  Fetches the abort command fom the concrete implementation

## Methods detail

# `public`
`__construct( `Aws\Common\Client\AwsClientInterface` $client, `Aws\Common\Model\MultipartUpload\TransferStateInterface` $state, `Guzzle\Http\EntityBody` $source, array $options = array() )`

Construct a new transfer object

#### Parameters

$client
  ``Aws\Common\Client\AwsClientInterface``
  $client Client used for the transfers
$state
  ``Aws\Common\Model\MultipartUpload\TransferStateInterface``
  $state State used to track transfer
$source
  ``Guzzle\Http\EntityBody``
  $source Data source of the transfer
$options
  `array`
  $options Array of options to apply

# `public`
`__invoke( )`
# `public static array`
`getAllEvents( )`

Get a list of all of the events emitted from the class

#### Returns

`array`

#### Overrides

`Guzzle\Common\AbstractHasDispatcher::getAllEvents`

#### Implementation of

`Guzzle\Common\HasDispatcherInterface::getAllEvents()`
# `public `Guzzle\Service\Resource\Model``
`abort( )`

Abort the upload

#### Returns

``Guzzle\Service\Resource\Model``
Returns the result of the abort multipart upload command

#### Implementation of

`Aws\Common\Model\MultipartUpload\TransferInterface::abort()`
# `public `Aws\Common\Model\MultipartUpload\TransferStateInterface``
`stop( )`

Stop the transfer and retrieve the current state.

#### Returns

``Aws\Common\Model\MultipartUpload\TransferStateInterface``

#### Implementation of

`Aws\Common\Model\MultipartUpload\TransferInterface::stop()`
# `public `Aws\Common\Model\MultipartUpload\TransferStateInterface``
`getState( )`

Get the current state of the upload

#### Returns

``Aws\Common\Model\MultipartUpload\TransferStateInterface``

#### Implementation of

`Aws\Common\Model\MultipartUpload\TransferInterface::getState()`
# `public array`
`getOptions( )`

Get the array of options associated with the transfer

#### Returns

`array`
# `public `Aws\Common\Model\MultipartUpload\AbstractTransfer``
`setOption( string $option, mixed $value )`

Set an option on the transfer

#### Parameters

$option
  `string`
  $option Name of the option
$value
  `mixed`
  $value Value to set

#### Returns

``Aws\Common\Model\MultipartUpload\AbstractTransfer``

#### Implementation of

`Aws\Common\Model\MultipartUpload\TransferInterface::setOption()`
# `public `Guzzle\Http\EntityBodyInterface``
`getSource( )`

Get the source body of the upload

#### Returns

``Guzzle\Http\EntityBodyInterface``
# `public `Guzzle\Service\Resource\Model`|null`
`upload( )`

Upload the source to using a multipart upload

#### Returns

``Guzzle\Service\Resource\Model`|null`
Result of the complete multipart upload command or null if uploading was stopped

#### Throws

``Aws\Common\Exception\MultipartUploadException``
when an error is encountered. Use getLastException() to get more information.
``Aws\Common\Exception\RuntimeException``
when attempting to upload an aborted transfer

#### Implementation of

`Aws\Common\Model\MultipartUpload\TransferInterface::upload()`
# `protected array`
`getEventData( `Guzzle\Service\Command\OperationCommand` $command = null )`

Get an array used for event notifications

#### Parameters

$command
  ``Guzzle\Service\Command\OperationCommand``
  $command Command to include in event data

#### Returns

`array`
# `protected`
`init( )`

Hook to initialize the transfer

# `abstract protected integer`
`calculatePartSize( )`

Determine the upload part size based on the size of the source data and taking into account the acceptable minimum and maximum part sizes.

#### Returns

`integer`
The part size
# `abstract protected `Guzzle\Service\Resource\Model``
`complete( )`

Complete the multipart upload

#### Returns

``Guzzle\Service\Resource\Model``
Returns the result of the complete multipart upload command
# `abstract protected`
`transfer( )`

Hook to implement in subclasses to perform the actual transfer

# `abstract protected `Guzzle\Service\Command\OperationCommand``
`getAbortCommand( )`

Fetches the abort command fom the concrete implementation

#### Returns

``Guzzle\Service\Command\OperationCommand``

### Methods inherited from Guzzle\Common\AbstractHasDispatcher

`addSubscriber()`, `dispatch()`, `getEventDispatcher()`, `setEventDispatcher()`

### Magic methods summary

## Constants summary

`string` | `BEFORE_UPLOAD` | `'multipart_upload.before_upload'` | #
`string` | `AFTER_UPLOAD` | `'multipart_upload.after_upload'` | #
`string` | `BEFORE_PART_UPLOAD` | `'multipart_upload.before_part_upload'` | #
`string` | `AFTER_PART_UPLOAD` | `'multipart_upload.after_part_upload'` | #
`string` | `AFTER_ABORT` | `'multipart_upload.after_abort'` | #
`string` | `AFTER_COMPLETE` | `'multipart_upload.after_complete'` | #

## Properties summary

`protected `Aws\Common\Client\AwsClientInterface`` | $client | # Client used for the transfers
`protected `Aws\Common\Model\MultipartUpload\TransferStateInterface`` | $state | # State of the transfer
`protected `Guzzle\Http\EntityBody`` | $source | # Data source of the transfer
`protected array` | $options | # Associative array of options
`protected integer` | $partSize | # Size of each part to upload
`protected boolean` | $stopped | # Whether or not the transfer has been stopped

### Properties inherited from Guzzle\Common\AbstractHasDispatcher

`$eventDispatcher`