Package org.apache.synapse.transport.passthru

# Class Pipe

java.lang.Object
org.apache.synapse.transport.passthru.Pipe

public class Pipe extends Object
This is a buffer shared by both producers and consumers.

- ## Field Summary

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

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Pipe(org.apache.http.nio.IOControl producerIoControl, ControlledByteBuffer buffer, String name, BaseConfiguration baseConfig)`
  `Pipe(ControlledByteBuffer buffer, String name, BaseConfiguration baseConfig)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `attachConsumer(org.apache.http.nio.IOControl consumerIoControl)`
  Set the consumers IOControl
  `int`
  `consume(org.apache.http.nio.ContentEncoder encoder)`
  Consume the data from the buffer.
  `void`
  `consumerError()`
  `ByteBuffer`
  `copyAndConsume(org.apache.http.nio.ContentEncoder encoder)`
  Consume the data from the buffer.
  `ByteBuffer`
  `copyAndProduce(org.apache.http.nio.ContentDecoder decoder)`
  Same as `produce(org.apache.http.nio.ContentDecoder)` and gives a copy of data produced
  `void`
  `forceProducerComplete(org.apache.http.nio.ContentDecoder decoder)`
  Helper method to mark as producer completed.
  `void`
  `forceSetSerializationRest()`
  `ControlledByteBuffer`
  `getBuffer()`
  `InputStream`
  `getInputStream()`
  Creates an InputStream object on the underlying ByteBuffer.
  `OutputStream`
  `getOutputStream()`
  Creates a separate ByteBuffer for the output data and returns an OutputStream on top of it.
  `boolean`
  `hasHttpProducer()`
  `boolean`
  `isConsumeRequired()`
  This method returns whether buffer consumption is required or not.
  `boolean`
  `isDiscardable()`
  `boolean`
  `isProducerCompleted()`
  `boolean`
  `isProducerError()`
  Checks the state of the producerError property
  `boolean`
  `isSerializationComplete()`
  `int`
  `produce(org.apache.http.nio.ContentDecoder decoder)`
  Produce data in to the buffer.
  `void`
  `producerError()`
  `OutputStream`
  `resetOutputStream()`
  Creates a separate ByteBuffer for the output data and returns an OutputStream on top of it.
  `void`
  `setDiscardable(boolean discardable)`
  `void`
  `setRawSerializationComplete(boolean rawSerializationComplete)`
  `void`
  `setSerializationComplete(boolean serializationComplete)`
  `String`
  `toString()`

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

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

- ## Field Details

  - ### DEFAULT_TIME_OUT_VALUE

    public static final int DEFAULT_TIME_OUT_VALUE
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### Pipe

    public Pipe(org.apache.http.nio.IOControl producerIoControl, ControlledByteBuffer buffer, String name, BaseConfiguration baseConfig)

  - ### Pipe

    public Pipe(ControlledByteBuffer buffer, String name, BaseConfiguration baseConfig)

- ## Method Details

  - ### isProducerCompleted

    public boolean isProducerCompleted()

  - ### attachConsumer

    public void attachConsumer(org.apache.http.nio.IOControl consumerIoControl)
    Set the consumers IOControl
    Parameters:
      `consumerIoControl` - IOControl of the consumer

  - ### consume

    public int consume(org.apache.http.nio.ContentEncoder encoder) throws IOException
    Consume the data from the buffer. Before calling this method attachConsumer method must be called with a valid IOControl.
    Parameters:
      `encoder` - encoder used to write the data means there will not be any data written in to this buffer
    Returns:
      number of bytes written (consumed)
    Throws:
      `IOException` - if an error occurred while consuming data

  - ### copyAndConsume

    public ByteBuffer copyAndConsume(org.apache.http.nio.ContentEncoder encoder) throws IOException
    Consume the data from the buffer. Same as `consume(org.apache.http.nio.ContentEncoder)` but this gives a copy of data which has been consumed.
    Parameters:
      `encoder` - encoder used to write
    Returns:
      a buffer with data written (consumed)
    Throws:
      `IOException` - if an error occurred while consuming data

  - ### produce

    public int produce(org.apache.http.nio.ContentDecoder decoder) throws IOException
    Produce data in to the buffer.
    Parameters:
      `decoder` - decoder to read bytes from the underlying stream
    Returns:
      bytes read (consumed)
    Throws:
      `IOException` - if an error occurs while reading data

  - ### copyAndProduce

    public ByteBuffer copyAndProduce(org.apache.http.nio.ContentDecoder decoder) throws IOException
    Same as `produce(org.apache.http.nio.ContentDecoder)` and gives a copy of data produced
    Parameters:
      `decoder` - decoder to read bytes from the underlying stream
    Returns:
      bytes of data read (consumed)
    Throws:
      `IOException` - if an error occurs while reading data

  - ### forceProducerComplete

    public void forceProducerComplete(org.apache.http.nio.ContentDecoder decoder)
    Helper method to mark as producer completed. The normal behavior only set the boolean param to true only when decoder is completed. However in some cases it is needed to intentionally close chunk stream and mark as producer completed in order to prevent consumer further waiting on end of stream condition.
    Parameters:
      `decoder` - decoder instance to consume input

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`

  - ### consumerError

    public void consumerError()

  - ### producerError

    public void producerError()

  - ### getInputStream

    public InputStream getInputStream()
    Creates an InputStream object on the underlying ByteBuffer. The returned InputStream can be used to read bytes from the underlying buffer which is being filled by the producer.
    Returns:
      An InputStream object

  - ### getOutputStream

    public OutputStream getOutputStream()
    Creates a separate ByteBuffer for the output data and returns an OutputStream on top of it.
    Returns:
      An OutputStream object

  - ### resetOutputStream

    public OutputStream resetOutputStream()
    Creates a separate ByteBuffer for the output data and returns an OutputStream on top of it.
    Returns:
      An OutputStream object

  - ### setSerializationComplete

    public void setSerializationComplete(boolean serializationComplete)

  - ### setRawSerializationComplete

    public void setRawSerializationComplete(boolean rawSerializationComplete)

  - ### forceSetSerializationRest

    public void forceSetSerializationRest()

  - ### isSerializationComplete

    public boolean isSerializationComplete()

  - ### getBuffer

    public ControlledByteBuffer getBuffer()

  - ### hasHttpProducer

    public boolean hasHttpProducer()

  - ### isDiscardable

    public boolean isDiscardable()

  - ### setDiscardable

    public void setDiscardable(boolean discardable)

  - ### isConsumeRequired

    public boolean isConsumeRequired() throws IOException
    This method returns whether buffer consumption is required or not.
    Returns:
      boolean
    Throws:
      `IOException`

  - ### isProducerError

    public boolean isProducerError()
    Checks the state of the producerError property
    Returns:
      boolean