Class NonBlockingReaderImpl
java.lang.Object
java.io.Reader
org.jline.utils.NonBlockingReader
org.jline.utils.NonBlockingReaderImpl
- All Implemented Interfaces:
Closeable, AutoCloseable, Readable
This class wraps a regular reader and allows it to appear as if it
is non-blocking; that is, reads can be performed against it that timeout
if no data is seen for a period of time. This effect is achieved by having
a separate thread perform all non-blocking read requests and then
waiting on the thread to complete.
VERY IMPORTANT NOTES
- This class is not thread safe. It expects at most one reader.
- The
shutdown()method must be called in order to shut down the thread that handles blocking I/O.
- Since:
- 2.7
-
Field Summary
FieldsFields inherited from class NonBlockingReader
closed, EOF -
Constructor Summary
ConstructorsConstructorDescriptionNonBlockingReaderImpl(String name, Reader in) Creates aNonBlockingReaderout of a normal blocking reader. -
Method Summary
Modifier and TypeMethodDescriptionvoidclear()voidclose()Closes this reader and marks it as closed.protected intread(long timeout, boolean isPeek) Attempts to read a character from the input stream for a specific period of time.intreadBuffered(char[] b, int off, int len, long timeout) booleanready()voidshutdown()Shuts down the thread that is handling blocking I/O.Methods inherited from class NonBlockingReader
available, checkClosed, peek, read, read, read, readBuffered, readBufferedMethods inherited from class Reader
mark, markSupported, nullReader, of, read, read, readAllAsString, readAllLines, reset, skip, transferTo
-
Field Details
-
READ_EXPIRED
public static final int READ_EXPIRED- See Also:
-
-
Constructor Details
-
NonBlockingReaderImpl
Creates aNonBlockingReaderout of a normal blocking reader. Note that this call also spawn a separate thread to perform the blocking I/O on behalf of the thread that is using this class. Theshutdown()method must be called in order to shut this thread down.- Parameters:
name- The reader namein- The reader to wrap
-
-
Method Details
-
shutdown
public void shutdown()Shuts down the thread that is handling blocking I/O. Note that if the thread is currently blocked waiting for I/O it will not actually shut down until the I/O is received.- Overrides:
shutdownin classNonBlockingReader
-
close
Description copied from class:NonBlockingReaderCloses this reader and marks it as closed.Subsequent read operations behavior depends on the
PROP_CLOSE_MODEsetting:"strict"- ThrowClosedException"warn"- Log a warning but continue (default in JLine 3.x)"lenient"- Silently allow access
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classNonBlockingReader- Throws:
IOException- if an I/O error occurs
-
ready
- Overrides:
readyin classReader- Throws:
IOException
-
readBuffered
- Specified by:
readBufferedin classNonBlockingReader- Throws:
IOException
-
read
Attempts to read a character from the input stream for a specific period of time.- Specified by:
readin classNonBlockingReader- Parameters:
timeout- The amount of time to wait for the characterisPeek-trueif the character read must not be consumed- Returns:
- The character read, -1 if EOF is reached, or -2 if the read timed out.
- Throws:
IOException- if anything wrong happens
-
clear
- Throws:
IOException
-