Class PartSeriesConsumer

java.lang.Object
org.simpleframework.http.message.PartSeriesConsumer
All Implemented Interfaces:
BodyConsumer, ByteConsumer

class PartSeriesConsumer extends Object implements BodyConsumer
The PartSeriesConsumer object is used to consume a list of parts encoded in the multipart format. This is can consume any number of parts from a cursor. Each part consumed is added to an internal part list which can be used to acquire the contents of the upload and inspect the headers provided for each uploaded part. To ensure that only a fixed number of bytes are consumed this uses a content length for an internal buffer.
  • Field Details

    • consumer

      private PartEntryConsumer consumer
      This is used to consume individual parts from the part list.
    • factory

      private PartEntryFactory factory
      This is the factory that is used to create the consumers used.
    • buffer

      private BufferAllocator buffer
      This is used to both allocate and buffer the part list body.
    • series

      private PartSeries series
      This is used to accumulate all the parts of the upload.
  • Constructor Details

    • PartSeriesConsumer

      public PartSeriesConsumer(Allocator allocator, byte[] boundary)
      Constructor for the PartSeriesConsumer object. This will create a consumer that is capable of breaking an upload in to individual parts so that they can be accessed and used by the receiver of the HTTP request message.
      Parameters:
      allocator - this is used to allocate the internal buffer
      boundary - this is the boundary used for the upload
    • PartSeriesConsumer

      public PartSeriesConsumer(Allocator allocator, byte[] boundary, long length)
      Constructor for the PartSeriesConsumer object. This will create a consumer that is capable of breaking an upload in to individual parts so that they can be accessed and used by the receiver of the HTTP request message.
      Parameters:
      allocator - this is used to allocate the internal buffer
      boundary - this is the boundary used for the upload
      length - this is the number of bytes the upload should be
    • PartSeriesConsumer

      public PartSeriesConsumer(Allocator allocator, PartSeries series, byte[] boundary)
      Constructor for the PartSeriesConsumer object. This will create a consumer that is capable of breaking an upload in to individual parts so that they can be accessed and used by the receiver of the HTTP request message.
      Parameters:
      allocator - this is used to allocate the internal buffer
      series - this is the part list used to accumulate the parts
      boundary - this is the boundary used for the upload
    • PartSeriesConsumer

      public PartSeriesConsumer(Allocator allocator, PartSeries series, byte[] boundary, long length)
      Constructor for the PartSeriesConsumer object. This will create a consumer that is capable of breaking an upload in to individual parts so that they can be accessed and used by the receiver of the HTTP request message.
      Parameters:
      allocator - this is used to allocate the internal buffer
      series - this is the part list used to accumulate the parts
      boundary - this is the boundary used for the upload
      length - this is the number of bytes the upload should be
  • Method Details

    • getBody

      public Body getBody()
      This is used to acquire the body that has been consumed. This will return a body which can be used to read the content of the message, also if the request is multipart upload then all of the parts are provided as Attachment objects. Each part can then be read as an individual message.
      Specified by:
      getBody in interface BodyConsumer
      Returns:
      the body that has been consumed by this instance
    • consume

      public void consume(ByteCursor cursor) throws IOException
      This is used to consume the part list from the cursor. This initially reads the list of parts, which represents the actual content exposed via the PartSeries object, once the content has been consumed the terminal is consumed.
      Specified by:
      consume in interface ByteConsumer
      Parameters:
      cursor - this is the cursor to consume the list from
      Throws:
      IOException
    • isFinished

      public boolean isFinished()
      This is used to determine whether the part body has been read from the cursor successfully. In order to determine if all of the bytes have been read successfully this will check to see of the terminal token had been consumed.
      Specified by:
      isFinished in interface ByteConsumer
      Returns:
      true if the part body and terminal have been read