Package org.apache.qpid.proton.engine.impl

# Class DeliveryImpl

java.lang.Object
org.apache.qpid.proton.engine.impl.DeliveryImpl

All Implemented Interfaces:
  `Delivery`, `Extendable`

public class DeliveryImpl extends Object implements Delivery

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`DEFAULT_MESSAGE_FORMAT`

## Method Summary

Modifier and Type
Method
Description
`Record`
`attachments()`
`int`
`available()`
Returns the number of bytes currently available for this delivery, which may not be complete yet, that are still to either be received by the application or sent by the transport.
`void`
`clear()`
`void`
`disposition(DeliveryState state)`
updates the state of the delivery The new state may have no on-the-wire effect, if delivery settlement was already communicated to/from the peer.
`void`
`free()`
TODO When does an application call this method? Do we really need this?
`Object`
`getContext()`
`DeliveryState`
`getDefaultDeliveryState()`
`LinkImpl`
`getLink()`
`DeliveryState`
`getLocalState()`
`int`
`getMessageFormat()`
Gets the message-format for this Delivery, representing the 32bit value using an int.
`DeliveryState`
`getRemoteState()`
`byte[]`
`getTag()`
`DeliveryImpl`
`getWorkNext()`
`boolean`
`isAborted()`
Check for whether the delivery was aborted.
`boolean`
`isBuffered()`
`boolean`
`isPartial()`
Check for whether the delivery is still partial.
`boolean`
`isReadable()`
Returns whether this delivery has data ready to be received.
`boolean`
`isSettled()`
Returns whether this delivery has been settled.
`boolean`
`isUpdated()`
Returns whether this delivery's state or settled flag has ever remotely changed.
`boolean`
`isWritable()`
`DeliveryImpl`
`next()`
`int`
`pending()`
`boolean`
`remotelySettled()`
`void`
`setContext(Object context)`
`void`
`setDefaultDeliveryState(DeliveryState state)`
Configures a default DeliveryState to be used if a received delivery is settled/freed without any disposition state having been previously applied.
`void`
`setMessageFormat(int messageFormat)`
Sets the message-format for this Delivery, representing the 32bit value using an int.
`void`
`settle()`
Settles this delivery.
`String`
`toString()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Field Details

### DEFAULT_MESSAGE_FORMAT

public static final int DEFAULT_MESSAGE_FORMAT

See Also:
  - Constant Field Values

## Method Details

### getTag

public byte[] getTag()

Specified by:
  `getTag` in interface `Delivery`

### getLink

public LinkImpl getLink()

Specified by:
  `getLink` in interface `Delivery`

### getLocalState

public DeliveryState getLocalState()

Specified by:
  `getLocalState` in interface `Delivery`

### getRemoteState

public DeliveryState getRemoteState()

Specified by:
  `getRemoteState` in interface `Delivery`

### remotelySettled

public boolean remotelySettled()

Specified by:
  `remotelySettled` in interface `Delivery`

### setMessageFormat

public void setMessageFormat(int messageFormat)
Description copied from interface: `Delivery`
Sets the message-format for this Delivery, representing the 32bit value using an int. The default value is 0 as per the message format defined in the core AMQP 1.0 specification.

See the following for more details:
http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-transport-v1.0-os.html#type-transfer
http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-transport-v1.0-os.html#type-message-format
http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#section-message-format
http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#definition-MESSAGE-FORMAT

Specified by:
  `setMessageFormat` in interface `Delivery`
Parameters:
  `messageFormat` - the message format

### getMessageFormat

public int getMessageFormat()
Description copied from interface: `Delivery`
Gets the message-format for this Delivery, representing the 32bit value using an int.

Specified by:
  `getMessageFormat` in interface `Delivery`
Returns:
  the message-format
See Also:
  - `Delivery.setMessageFormat(int)`

### disposition

public void disposition(DeliveryState state)
Description copied from interface: `Delivery`
updates the state of the delivery The new state may have no on-the-wire effect, if delivery settlement was already communicated to/from the peer.

Specified by:
  `disposition` in interface `Delivery`
Parameters:
  `state` - the new delivery state

### settle

public void settle()
Description copied from interface: `Delivery`
Settles this delivery. Causes the delivery to be removed from the connection's work list (see `Connection.getWorkHead()`). If this delivery is its link's current delivery, the link's current delivery pointer is advanced.

Specified by:
  `settle` in interface `Delivery`

### next

public DeliveryImpl next()

Specified by:
  `next` in interface `Delivery`

### free

public void free()
Description copied from interface: `Delivery`
TODO When does an application call this method? Do we really need this?

Specified by:
  `free` in interface `Delivery`

### getWorkNext

public DeliveryImpl getWorkNext()

Specified by:
  `getWorkNext` in interface `Delivery`
See Also:
  - `Connection.getWorkHead()`

### isSettled

public boolean isSettled()
Description copied from interface: `Delivery`
Returns whether this delivery has been settled. TODO proton-j and proton-c return the local and remote statuses respectively. Resolve this ambiguity.

Specified by:
  `isSettled` in interface `Delivery`
See Also:
  - `Delivery.settle()`

### available

public int available()
Description copied from interface: `Delivery`
Returns the number of bytes currently available for this delivery, which may not be complete yet, that are still to either be received by the application or sent by the transport. Note that this value will change as bytes are received/sent, and is in general not equal to the total length of a delivery, except the point where `Delivery.isPartial()` returns false and no content has yet been received by the application or sent by the transport.

Specified by:
  `available` in interface `Delivery`
Returns:
  the number of bytes currently available for the delivery
See Also:
  - `Receiver.recv(byte[], int, int)`
  - `Receiver.recv(org.apache.qpid.proton.codec.WritableBuffer)`
  - `Sender.send(byte[], int, int)`
  - `Sender.send(org.apache.qpid.proton.codec.ReadableBuffer)`

### isWritable

public boolean isWritable()

Specified by:
  `isWritable` in interface `Delivery`

### isReadable

public boolean isReadable()
Description copied from interface: `Delivery`
Returns whether this delivery has data ready to be received.

Specified by:
  `isReadable` in interface `Delivery`
See Also:
  - `Receiver.recv(byte[], int, int)`

### isAborted

public boolean isAborted()
Description copied from interface: `Delivery`
Check for whether the delivery was aborted.

Specified by:
  `isAborted` in interface `Delivery`
Returns:
  true if the delivery was aborted.

### isPartial

public boolean isPartial()
Description copied from interface: `Delivery`
Check for whether the delivery is still partial. For a receiving Delivery, this means the delivery does not hold a complete message payload as all the content hasn't been received yet. Note that an `aborted` delivery will also be considered partial and the full payload won't be received. For a sending Delivery, this means the sender link has not been `advanced` to complete the delivery yet.

Specified by:
  `isPartial` in interface `Delivery`
Returns:
  true if the delivery is partial
See Also:
  - `Delivery.isAborted()`

### isUpdated

public boolean isUpdated()
Description copied from interface: `Delivery`
Returns whether this delivery's state or settled flag has ever remotely changed. TODO what is the main intended use case for calling this method?

Specified by:
  `isUpdated` in interface `Delivery`

### clear

public void clear()

Specified by:
  `clear` in interface `Delivery`

### isBuffered

public boolean isBuffered()

Specified by:
  `isBuffered` in interface `Delivery`

### getContext

public Object getContext()

Specified by:
  `getContext` in interface `Delivery`

### setContext

public void setContext(Object context)

Specified by:
  `setContext` in interface `Delivery`

### attachments

public Record attachments()

Specified by:
  `attachments` in interface `Extendable`

### toString

public String toString()

Overrides:
  `toString` in class `Object`

### pending

public int pending()

Specified by:
  `pending` in interface `Delivery`

### setDefaultDeliveryState

public void setDefaultDeliveryState(DeliveryState state)
Description copied from interface: `Delivery`
Configures a default DeliveryState to be used if a received delivery is settled/freed without any disposition state having been previously applied.

Specified by:
  `setDefaultDeliveryState` in interface `Delivery`
Parameters:
  `state` - the default delivery state

### getDefaultDeliveryState

public DeliveryState getDefaultDeliveryState()

Specified by:
  `getDefaultDeliveryState` in interface `Delivery`