Package org.eclipse.jetty.io
Class ByteArrayEndPoint
- java.lang.Object
-
- org.eclipse.jetty.io.IdleTimeout
-
- org.eclipse.jetty.io.AbstractEndPoint
-
- org.eclipse.jetty.io.ByteArrayEndPoint
-
- All Implemented Interfaces:
Closeable,AutoCloseable,EndPoint
public class ByteArrayEndPoint extends AbstractEndPoint
ByteArrayEndPoint.
-
-
Field Summary
Fields Modifier and Type Field Description static InetSocketAddressNOIP
-
Constructor Summary
Constructors Constructor Description ByteArrayEndPoint()ByteArrayEndPoint(byte[] input, int outputSize)ByteArrayEndPoint(String input, int outputSize)ByteArrayEndPoint(Scheduler scheduler, long idleTimeoutMs)ByteArrayEndPoint(Scheduler timer, long idleTimeoutMs, byte[] input, int outputSize)ByteArrayEndPoint(Scheduler timer, long idleTimeoutMs, String input, int outputSize)ByteArrayEndPoint(Scheduler timer, long idleTimeoutMs, ByteBuffer input, ByteBuffer output)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddInput(String s)voidaddInput(String s, Charset charset)voidaddInput(ByteBuffer in)voidaddInputAndExecute(ByteBuffer in)voidaddInputEOF()voidclose()Close any backing stream associated with the endpointprotected voidexecute(Runnable task)intfill(ByteBuffer buffer)Fill the passed buffer with data from this endpoint.booleanflush(ByteBuffer... buffers)Flush data from the passed header/buffer to this endpoint.ByteBuffergetOutput()StringgetOutputString()StringgetOutputString(Charset charset)ObjectgetTransport()booleanhasMore()booleanisGrowOutput()booleanisInputShutdown()Test if the input is shutdown.booleanisOpen()This abstract method should be called to check if idle timeouts should still be checked.booleanisOutputShutdown()Test if output is shutdown.protected voidneedsFillInterest()protected voidonIncompleteFlush()voidreset()voidsetGrowOutput(boolean growOutput)voidsetOutput(ByteBuffer out)voidshutdownInput()voidshutdownOutput()Shutdown the output.ByteBuffertakeOutput()StringtakeOutputString()StringtakeOutputString(Charset charset)StringtoString()ByteBufferwaitForOutput(long time, TimeUnit unit)Wait for some output-
Methods inherited from class org.eclipse.jetty.io.AbstractEndPoint
close, fillInterested, getConnection, getCreatedTimeStamp, getFillInterest, getLocalAddress, getRemoteAddress, getWriteFlusher, isFillInterested, isOptimizedForDirectBuffers, onIdleExpired, onOpen, setConnection, tryFillInterested, upgrade, write
-
Methods inherited from class org.eclipse.jetty.io.IdleTimeout
checkIdleTimeout, getIdleFor, getIdleTimeout, getIdleTimestamp, getScheduler, notIdle, onClose, setIdleTimeout
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.eclipse.jetty.io.EndPoint
getIdleTimeout, onClose, setIdleTimeout
-
-
-
-
Field Detail
-
NOIP
public static final InetSocketAddress NOIP
-
-
Constructor Detail
-
ByteArrayEndPoint
public ByteArrayEndPoint()
-
ByteArrayEndPoint
public ByteArrayEndPoint(byte[] input, int outputSize)- Parameters:
input- the input bytesoutputSize- the output size
-
ByteArrayEndPoint
public ByteArrayEndPoint(String input, int outputSize)
- Parameters:
input- the input string (converted to bytes using default encoding charset)outputSize- the output size
-
ByteArrayEndPoint
public ByteArrayEndPoint(Scheduler scheduler, long idleTimeoutMs)
-
ByteArrayEndPoint
public ByteArrayEndPoint(Scheduler timer, long idleTimeoutMs, byte[] input, int outputSize)
-
ByteArrayEndPoint
public ByteArrayEndPoint(Scheduler timer, long idleTimeoutMs, String input, int outputSize)
-
ByteArrayEndPoint
public ByteArrayEndPoint(Scheduler timer, long idleTimeoutMs, ByteBuffer input, ByteBuffer output)
-
-
Method Detail
-
onIncompleteFlush
protected void onIncompleteFlush()
- Specified by:
onIncompleteFlushin classAbstractEndPoint
-
execute
protected void execute(Runnable task)
-
needsFillInterest
protected void needsFillInterest() throws IOException- Specified by:
needsFillInterestin classAbstractEndPoint- Throws:
IOException
-
addInputEOF
public void addInputEOF()
-
addInput
public void addInput(ByteBuffer in)
- Parameters:
in- The in to set.
-
addInputAndExecute
public void addInputAndExecute(ByteBuffer in)
-
addInput
public void addInput(String s)
-
getOutput
public ByteBuffer getOutput()
- Returns:
- Returns the out.
-
getOutputString
public String getOutputString()
- Returns:
- Returns the out.
-
getOutputString
public String getOutputString(Charset charset)
- Parameters:
charset- the charset to encode the output as- Returns:
- Returns the out.
-
takeOutput
public ByteBuffer takeOutput()
- Returns:
- Returns the out.
-
waitForOutput
public ByteBuffer waitForOutput(long time, TimeUnit unit) throws InterruptedException
Wait for some output- Parameters:
time- Time to waitunit- Units for time to wait- Returns:
- The buffer of output
- Throws:
InterruptedException
-
takeOutputString
public String takeOutputString()
- Returns:
- Returns the out.
-
takeOutputString
public String takeOutputString(Charset charset)
- Parameters:
charset- the charset to encode the output as- Returns:
- Returns the out.
-
setOutput
public void setOutput(ByteBuffer out)
- Parameters:
out- The out to set.
-
isOpen
public boolean isOpen()
Description copied from class:IdleTimeoutThis abstract method should be called to check if idle timeouts should still be checked.- Specified by:
isOpenin interfaceEndPoint- Specified by:
isOpenin classIdleTimeout- Returns:
- True if the entity monitored should still be checked for idle timeouts
-
isInputShutdown
public boolean isInputShutdown()
Description copied from interface:EndPointTest if the input is shutdown. The input is shutdown if an EOF has been read while doing aEndPoint.fill(ByteBuffer). Once the input is shutdown, all calls toEndPoint.fill(ByteBuffer)will return -1, until such time as the end point is close, when they will returnEofException.- Returns:
- True if the input is shutdown or the endpoint is closed.
-
isOutputShutdown
public boolean isOutputShutdown()
Description copied from interface:EndPointTest if output is shutdown. The output is shutdown by a call toEndPoint.shutdownOutput()orEndPoint.close().- Returns:
- true if the output is shutdown or the endpoint is closed.
-
shutdownInput
public void shutdownInput()
-
shutdownOutput
public void shutdownOutput()
Description copied from interface:EndPointShutdown the output.This call indicates that no more data will be sent on this endpoint that that the remote end should read an EOF once all previously sent data has been consumed. Shutdown may be done either at the TCP/IP level, as a protocol exchange (Eg TLS close handshake) or both.
If the endpoint has
EndPoint.isInputShutdown()true, then this call has the same effect asEndPoint.close().
-
close
public void close()
Description copied from interface:EndPointClose any backing stream associated with the endpoint- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein interfaceEndPoint- Overrides:
closein classAbstractEndPoint
-
hasMore
public boolean hasMore()
- Returns:
trueif there are bytes remaining to be read from the encoded input
-
fill
public int fill(ByteBuffer buffer) throws IOException
Description copied from interface:EndPointFill the passed buffer with data from this endpoint. The bytes are appended to any data already in the buffer by writing from the buffers limit up to it's capacity. The limit is updated to include the filled bytes.- Parameters:
buffer- The buffer to fill. The position and limit are modified during the fill. After the operation, the position is unchanged and the limit is increased to reflect the new data filled.- Returns:
- an
intvalue indicating the number of bytes filled or -1 if EOF is read or the input is shutdown. - Throws:
IOException- if the endpoint is closed.
-
flush
public boolean flush(ByteBuffer... buffers) throws IOException
Description copied from interface:EndPointFlush data from the passed header/buffer to this endpoint. As many bytes as can be consumed are taken from the header/buffer position up until the buffer limit. The header/buffers position is updated to indicate how many bytes have been consumed.- Parameters:
buffers- the buffers to flush- Returns:
- True IFF all the buffers have been consumed and the endpoint has flushed the data to its destination (ie is not buffering any data).
- Throws:
IOException- If the endpoint is closed or output is shutdown.
-
reset
public void reset()
-
getTransport
public Object getTransport()
- Returns:
- The underlying transport object (socket, channel, etc.)
-
isGrowOutput
public boolean isGrowOutput()
- Returns:
- the growOutput
-
setGrowOutput
public void setGrowOutput(boolean growOutput)
- Parameters:
growOutput- the growOutput to set
-
toString
public String toString()
- Overrides:
toStringin classAbstractEndPoint
-
-