Class XThreadInputStream
- java.lang.Object
-
- java.io.InputStream
-
- org.apache.manifoldcf.connectorcommon.common.XThreadInputStream
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
public class XThreadInputStream extends java.io.InputStream
Cross-thread input stream. Use this class when you have a helper thread reading from a socket, and you need the ability to read safely from a ManifoldCF worker thread.
-
-
Constructor Summary
Constructors Constructor Description XThreadInputStream()
Constructor, from another source.XThreadInputStream(java.io.InputStream sourceStream)
Constructor, from a given input stream.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
abort()
Call this method to abort the stuffQueue() method.int
available()
Get available.void
close()
Close.void
doneStuffingQueue()
Call this method when there is no more data to write.void
mark(int readLimit)
Mark.boolean
markSupported()
Check if mark is supported.int
read()
Read a byte.int
read(byte[] b)
Read lots of bytes.int
read(byte[] b, int off, int len)
Read lots of specific bytes.void
reset()
Reset.long
skip(long n)
Skipvoid
stuffQueue()
This method is called from the helper thread side, to keep the queue stuffed from the input stream.void
stuffQueue(byte[] byteBuffer, int offset, int amount)
This method is called from the helper thread side, to stuff bytes onto the queue when there is no input stream.
-
-
-
Method Detail
-
abort
public void abort()
Call this method to abort the stuffQueue() method.
-
stuffQueue
public void stuffQueue(byte[] byteBuffer, int offset, int amount) throws java.lang.InterruptedException
This method is called from the helper thread side, to stuff bytes onto the queue when there is no input stream. It exits only when interrupted or done.- Throws:
java.lang.InterruptedException
-
doneStuffingQueue
public void doneStuffingQueue()
Call this method when there is no more data to write.
-
stuffQueue
public void stuffQueue() throws java.io.IOException, java.lang.InterruptedException
This method is called from the helper thread side, to keep the queue stuffed from the input stream. It exits when the stream is empty, or when interrupted.- Throws:
java.io.IOException
java.lang.InterruptedException
-
read
public int read() throws java.io.IOException
Read a byte.- Specified by:
read
in classjava.io.InputStream
- Throws:
java.io.IOException
-
read
public int read(byte[] b) throws java.io.IOException
Read lots of bytes.- Overrides:
read
in classjava.io.InputStream
- Throws:
java.io.IOException
-
read
public int read(byte[] b, int off, int len) throws java.io.IOException
Read lots of specific bytes.- Overrides:
read
in classjava.io.InputStream
- Throws:
java.io.IOException
-
skip
public long skip(long n) throws java.io.IOException
Skip- Overrides:
skip
in classjava.io.InputStream
- Throws:
java.io.IOException
-
available
public int available() throws java.io.IOException
Get available.- Overrides:
available
in classjava.io.InputStream
- Throws:
java.io.IOException
-
mark
public void mark(int readLimit)
Mark.- Overrides:
mark
in classjava.io.InputStream
-
reset
public void reset() throws java.io.IOException
Reset.- Overrides:
reset
in classjava.io.InputStream
- Throws:
java.io.IOException
-
markSupported
public boolean markSupported()
Check if mark is supported.- Overrides:
markSupported
in classjava.io.InputStream
-
close
public void close() throws java.io.IOException
Close.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classjava.io.InputStream
- Throws:
java.io.IOException
-
-