com.gc.iotools.stream.is
Class StatsInputStream

java.lang.Object
  extended by java.io.InputStream
      extended by com.gc.iotools.stream.is.StatsInputStream
All Implemented Interfaces:
Closeable
Direct Known Subclasses:
SizeReaderInputStream

public class StatsInputStream
extends InputStream

Gather some statistics of the InputStream passed in the constructor.

It can be used to read:

Full statistics are available after the stream has been fully processed (by other parts of the application), or after invoking the method close() while partial statistics are available on the fly.

Usage:

 StatsInputStream srIstream = new StatsInputStream(originalStream);
 //performs all the application operation on stream
 performTasksOnStream(srIstream);
 srIstream.close();
 long size = srIstream.getSize();
 

Since:
1.2.1
Author:
dvd.smnt

Constructor Summary
StatsInputStream(InputStream source)
           Constructs an SizeReaderInputStream.
StatsInputStream(InputStream istream, boolean fullReadOnClose)
          Constructs an SizeReaderInputStream and allow to specify actions to do on close.
 
Method Summary
 int available()
          
 void close()
          Closes the inner stream.
 float getBitRate()
          Returns the reading bit rate in KB per second.
 String getBitRateString()
          Returns the reading bit rate formatted with a convenient unit.
 long getSize()
          Returns the bytes read until now or total length of the stream if the close() method has been called or EOF was reached.
 long getTime(TimeUnit tu)
           Returns the time spent until now waiting for the internal stream to respond.
 boolean isFullReadOnClose()
          Returns the behavior of the close method.
 void mark(int readlimit)
          
 boolean markSupported()
          
 int read()
          
 int read(byte[] b)
          
 int read(byte[] b, int off, int len)
          
 void reset()
          
 long skip(long n)
          
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StatsInputStream

public StatsInputStream(InputStream source)

Constructs an SizeReaderInputStream. When close() is called the underlying stream will be closed. No further read will be done.

Parameters:
source - Stream whose statistics must be calculated.

StatsInputStream

public StatsInputStream(InputStream istream,
                        boolean fullReadOnClose)
Constructs an SizeReaderInputStream and allow to specify actions to do on close.

Parameters:
istream - Stream whose bytes must be counted.
fullReadOnClose - if true after the close the inner stream is read completely and the effective size of the inner stream is calculated.
Method Detail

available

public int available()
              throws IOException

Overrides:
available in class InputStream
Throws:
IOException

close

public void close()
           throws IOException
Closes the inner stream. If fullReadOnClose was set in the constructor it also count all the bytes of the underlying stream.

Specified by:
close in interface Closeable
Overrides:
close in class InputStream
Throws:
IOException - if an I/O error occurs reading the whole content of the stream.
See Also:
InputStream.close()

getBitRate

public float getBitRate()
Returns the reading bit rate in KB per second.

Returns:
The KB/Sec bitRate of the stream.

getBitRateString

public String getBitRateString()
Returns the reading bit rate formatted with a convenient unit.

Returns:
The bitRate of the stream.

getSize

public long getSize()
Returns the bytes read until now or total length of the stream if the close() method has been called or EOF was reached.

Returns:
bytes read until now or the total length of the stream if close() was called.

getTime

public long getTime(TimeUnit tu)

Returns the time spent until now waiting for the internal stream to respond.

Parameters:
tu - Unit to measure the time.
Returns:
time spent in waiting.

isFullReadOnClose

public boolean isFullReadOnClose()
Returns the behavior of the close method. If true when close is invoked a full read of the stream will be performed.

Returns:
Whether a full read will be performed on the invocation of close() method.

mark

public void mark(int readlimit)

Overrides:
mark in class InputStream

markSupported

public boolean markSupported()

Overrides:
markSupported in class InputStream

read

public int read()
         throws IOException

Specified by:
read in class InputStream
Throws:
IOException

read

public int read(byte[] b)
         throws IOException

Overrides:
read in class InputStream
Throws:
IOException

read

public int read(byte[] b,
                int off,
                int len)
         throws IOException

Overrides:
read in class InputStream
Throws:
IOException

reset

public void reset()
           throws IOException

Overrides:
reset in class InputStream
Throws:
IOException

skip

public long skip(long n)
          throws IOException

Overrides:
skip in class InputStream
Throws:
IOException


Copyright © 2008-2009. All Rights Reserved.