org.apache.tools.ant.util

## Class LeadPipeInputStream

- java.lang.Object
- - java.io.InputStream
  - - java.io.PipedInputStream
    - - org.apache.tools.ant.util.LeadPipeInputStream

- All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

      public class LeadPipeInputStream
      extends java.io.PipedInputStream

  Special `PipedInputStream` that will not die when the writing `Thread` is no longer alive.
  Since:
    Ant 1.6.2

- - ### Field Summary

    - ### Fields inherited from class java.io.PipedInputStream

      `buffer, in, out, PIPE_SIZE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `LeadPipeInputStream()` Construct a new `LeadPipeInputStream`.
    `LeadPipeInputStream(int size)` Construct a new `LeadPipeInputStream` with the specified buffer size.
    `LeadPipeInputStream(java.io.PipedOutputStream src)` Construct a new `LeadPipeInputStream` to pull from the specified `PipedOutputStream`.
    `LeadPipeInputStream(java.io.PipedOutputStream src, int size)` Construct a new `LeadPipeInputStream` to pull from the specified `PipedOutputStream`, using a circular buffer of the specified size.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `log(java.lang.String message, int loglevel)` Log a message with the specified logging level.
    `int` | `read()` Read a byte from the stream.
    `void` | `setBufferSize(int size)` Set the size of the buffer.
    `void` | `setManagingComponent(ProjectComponent pc)` Set a managing `ProjectComponent` for this `LeadPipeInputStream`.
    `void` | `setManagingTask(Task task)` Set a managing `Task` for this `LeadPipeInputStream`.

    - ### Methods inherited from class java.io.PipedInputStream

      `available, close, connect, read, receive`

    - ### Methods inherited from class java.io.InputStream

      `mark, markSupported, read, reset, skip`

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

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

- - ### Constructor Detail

    - #### LeadPipeInputStream

          public LeadPipeInputStream()

      Construct a new `LeadPipeInputStream`.

    - #### LeadPipeInputStream

          public LeadPipeInputStream(int size)

      Construct a new `LeadPipeInputStream` with the specified buffer size.
      Parameters:
        `size` - the size of the circular buffer.

    - #### LeadPipeInputStream

          public LeadPipeInputStream(java.io.PipedOutputStream src)
                              throws java.io.IOException

      Construct a new `LeadPipeInputStream` to pull from the specified `PipedOutputStream`.
      Parameters:
        `src` - the `PipedOutputStream` source.
      Throws:
        `java.io.IOException` - if unable to construct the stream.

    - #### LeadPipeInputStream

          public LeadPipeInputStream(java.io.PipedOutputStream src,
                             int size)
                              throws java.io.IOException

      Construct a new `LeadPipeInputStream` to pull from the specified `PipedOutputStream`, using a circular buffer of the specified size.
      Parameters:
        `src` - the `PipedOutputStream` source.
        `size` - the size of the circular buffer.
      Throws:
        `java.io.IOException` - if there is an error.

  - ### Method Detail

    - #### read

          public int read()
                   throws java.io.IOException

      Read a byte from the stream.
      Overrides:
        `read` in class `java.io.PipedInputStream`
      Returns:
        the byte (0 to 255) or -1 if there are no more.
      Throws:
        `java.io.IOException` - if there is an error.

    - #### setBufferSize

          public void setBufferSize(int size)

      Set the size of the buffer.
      Parameters:
        `size` - the new buffer size. Ignored if <= current size.

    - #### setManagingTask

          public void setManagingTask(Task task)

      Set a managing `Task` for this `LeadPipeInputStream`.
      Parameters:
        `task` - the managing `Task`.

    - #### setManagingComponent

          public void setManagingComponent(ProjectComponent pc)

      Set a managing `ProjectComponent` for this `LeadPipeInputStream`.
      Parameters:
        `pc` - the managing `ProjectComponent`.

    - #### log

          public void log(java.lang.String message,
                 int loglevel)

      Log a message with the specified logging level.
      Parameters:
        `message` - the `String` message.
        `loglevel` - the `int` logging level.