Class StreamPumper

  • All Implemented Interfaces:
    java.lang.Runnable

    public class StreamPumper
    extends java.lang.Object
    implements java.lang.Runnable
    Copies all data from an input stream to an output stream.
    Since:
    Ant 1.2
    • Constructor Summary

      Constructors 
      Constructor Description
      StreamPumper​(java.io.InputStream is, java.io.OutputStream os)
      Create a new StreamPumper.
      StreamPumper​(java.io.InputStream is, java.io.OutputStream os, boolean closeWhenExhausted)
      Create a new StreamPumper.
      StreamPumper​(java.io.InputStream is, java.io.OutputStream os, boolean closeWhenExhausted, boolean useAvailable)
      Create a new StreamPumper.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int getBufferSize()
      Get the size in bytes of the read buffer.
      java.lang.Exception getException()
      Get the exception encountered, if any.
      boolean isFinished()
      Tells whether the end of the stream has been reached.
      void run()
      Copies data from the input stream to the output stream.
      void setBufferSize​(int bufferSize)
      Set the size in bytes of the read buffer.
      void waitFor()
      This method blocks until the StreamPumper finishes.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • StreamPumper

        public StreamPumper​(java.io.InputStream is,
                            java.io.OutputStream os,
                            boolean closeWhenExhausted)
        Create a new StreamPumper.
        Parameters:
        is - input stream to read data from
        os - output stream to write data to.
        closeWhenExhausted - if true, the output stream will be closed when the input is exhausted.
      • StreamPumper

        public StreamPumper​(java.io.InputStream is,
                            java.io.OutputStream os,
                            boolean closeWhenExhausted,
                            boolean useAvailable)
        Create a new StreamPumper.

        Note: If you set useAvailable to true, you must explicitly invoke stop or interrupt the corresponding Thread when you are done or the run method will never finish on some JVMs (namely those where available returns 0 on a closed stream). Setting it to true may also impact performance negatively. This flag should only be set to true if you intend to stop the pumper before the input stream gets closed.

        Parameters:
        is - input stream to read data from
        os - output stream to write data to.
        closeWhenExhausted - if true, the output stream will be closed when the input is exhausted.
        useAvailable - whether the pumper should use available to determine whether input is ready, thus trying to emulate non-blocking behavior.
        Since:
        Ant 1.8.0
      • StreamPumper

        public StreamPumper​(java.io.InputStream is,
                            java.io.OutputStream os)
        Create a new StreamPumper.
        Parameters:
        is - input stream to read data from
        os - output stream to write data to.
    • Method Detail

      • run

        public void run()
        Copies data from the input stream to the output stream. Terminates as soon as the input stream is closed or an error occurs.
        Specified by:
        run in interface java.lang.Runnable
      • isFinished

        public boolean isFinished()
        Tells whether the end of the stream has been reached.
        Returns:
        true is the stream has been exhausted.
      • waitFor

        public void waitFor()
                     throws java.lang.InterruptedException
        This method blocks until the StreamPumper finishes.
        Throws:
        java.lang.InterruptedException - if interrupted.
        See Also:
        isFinished()
      • setBufferSize

        public void setBufferSize​(int bufferSize)
        Set the size in bytes of the read buffer.
        Parameters:
        bufferSize - the buffer size to use.
        Throws:
        java.lang.IllegalStateException - if the StreamPumper is already running.
      • getBufferSize

        public int getBufferSize()
        Get the size in bytes of the read buffer.
        Returns:
        the int size of the read buffer.
      • getException

        public java.lang.Exception getException()
        Get the exception encountered, if any.
        Returns:
        the Exception encountered.