public class PipedReader
extends java.io.Reader
Constructor and Description |
---|
PipedReader(PipedWriter src,
int pipeSize)
Creates a
PipedReader so that it is connected
to the piped writer src and uses the specified
pipe size for the pipe's buffer. |
Modifier and Type | Method and Description |
---|---|
void |
clearStatistics()
Reset the statistics counters.
|
void |
close()
Closes this piped stream and releases any system resources
associated with the stream.
|
void |
connect(PipedWriter src)
Causes this piped reader to be connected
to the piped writer
src . |
int |
getNumEmpty()
Report the number of times the pipe was found empty.
|
int |
getNumFull()
Report the number of times the pipe was found full.
|
long |
getWaitOnEmpty()
Report the number of milliseconds spent waiting on an empty pipe.
|
long |
getWaitOnFull()
Report the number of milliseconds spent waiting on a full pipe.
|
int |
read()
Reads the next character of data from this piped stream.
|
int |
read(char[] cbuf,
int off,
int len)
Reads up to
len characters of data from this piped
stream into an array of characters. |
boolean |
ready()
Tell whether this stream is ready to be read.
|
void |
receive(char[] c,
int off,
int len)
Receives data into an array of characters.
|
void |
setReaderThread()
Mark the thread that is reading from the pipe.
|
public PipedReader(PipedWriter src, int pipeSize) throws java.io.IOException
PipedReader
so that it is connected
to the piped writer src
and uses the specified
pipe size for the pipe's buffer. Data written to src
will then be available as input from this stream.src
- the stream to connect to.pipeSize
- the size of the pipe's buffer.java.io.IOException
- if an I/O error occurs.java.lang.IllegalArgumentException
- if pipeSize <= 0
.public void connect(PipedWriter src) throws java.io.IOException
src
.
If this object is already connected to some
other piped writer, an IOException
is thrown.
If src
is an
unconnected piped writer and snk
is an unconnected piped reader, they
may be connected by either the call:
snk.connect(src)
or the call:
src.connect(snk)
The two calls have the same effect.
src
- The piped writer to connect to.java.io.IOException
- if an I/O error occurs.public void receive(char[] c, int off, int len) throws java.io.IOException
setWriterThread()
prior to first calling this method.c
- the data.off
- the start offset in the data.len
- the number of characters to write.java.io.IOException
- if the pipe is broken,
unconnected
, closed
or an I/O error occurs.public void setReaderThread()
public int read() throws java.io.IOException
-1
is returned.
This method blocks until input data is available, the end of
the stream is detected, or an exception is thrown.read
in class java.io.Reader
-1
if the end of the
stream is reached.java.io.IOException
- if the pipe is
broken
,
unconnected
, closed,
or an I/O error occurs.public int read(char[] cbuf, int off, int len) throws java.io.IOException
len
characters of data from this piped
stream into an array of characters. Less than len
characters
will be read if the end of the data stream is reached or if
len
exceeds the pipe's buffer size. This method
blocks until at least one character of input is available.read
in class java.io.Reader
cbuf
- the buffer into which the data is read.off
- the start offset of the data.len
- the maximum number of characters read.-1
if there is no more data because the end of
the stream has been reached.java.io.IOException
- if the pipe is
broken
,
unconnected
, closed,
or an I/O error occurs.public boolean ready() throws java.io.IOException
ready
in class java.io.Reader
java.io.IOException
- if the pipe is
broken
,
unconnected
, or closed.public void close() throws java.io.IOException
close
in interface java.io.Closeable
close
in interface java.lang.AutoCloseable
close
in class java.io.Reader
java.io.IOException
- if an I/O error occurs.public int getNumEmpty()
public long getWaitOnEmpty()
public int getNumFull()
public long getWaitOnFull()
public void clearStatistics()