Interface Delivery

All Superinterfaces:
Extendable
All Known Implementing Classes:
DeliveryImpl

public interface Delivery extends Extendable
A delivery of a message on a particular link. Whilst a message is logically a long-lived object, a delivery is short-lived - it is only intended to be used by the application until it is settled and all its data has been read.
  • Method Details

    • getTag

      byte[] getTag()
    • getLink

      Link getLink()
    • getLocalState

      DeliveryState getLocalState()
    • getRemoteState

      DeliveryState getRemoteState()
    • disposition

      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.
      Parameters:
      state - the new delivery state
    • settle

      void settle()
      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.
    • isSettled

      boolean isSettled()
      Returns whether this delivery has been settled. TODO proton-j and proton-c return the local and remote statuses respectively. Resolve this ambiguity.
      See Also:
    • remotelySettled

      boolean remotelySettled()
    • free

      void free()
      TODO When does an application call this method? Do we really need this?
    • getWorkNext

      Delivery getWorkNext()
      See Also:
    • next

      Delivery next()
    • isWritable

      boolean isWritable()
    • isReadable

      boolean isReadable()
      Returns whether this delivery has data ready to be received.
      See Also:
    • setContext

      void setContext(Object o)
    • getContext

      Object getContext()
    • isUpdated

      boolean isUpdated()
      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?
    • clear

      void clear()
    • isPartial

      boolean isPartial()
      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.
      Returns:
      true if the delivery is partial
      See Also:
    • isAborted

      boolean isAborted()
      Check for whether the delivery was aborted.
      Returns:
      true if the delivery was aborted.
    • pending

      int pending()
    • isBuffered

      boolean isBuffered()
    • setDefaultDeliveryState

      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.
      Parameters:
      state - the default delivery state
    • getDefaultDeliveryState

      DeliveryState getDefaultDeliveryState()
    • setMessageFormat

      void setMessageFormat(int messageFormat)
      Parameters:
      messageFormat - the message format
    • getMessageFormat

      int getMessageFormat()
      Gets the message-format for this Delivery, representing the 32bit value using an int.
      Returns:
      the message-format
      See Also:
    • available

      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. 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 isPartial() returns false and no content has yet been received by the application or sent by the transport.
      Returns:
      the number of bytes currently available for the delivery
      See Also: