Class MessageInputStream
- java.lang.Object
-
- java.io.InputStream
-
- org.eclipse.jetty.websocket.common.message.MessageInputStream
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,MessageAppender
public class MessageInputStream extends java.io.InputStream implements MessageAppender
Support class for reading a (single) WebSocket BINARY message via a InputStream.An InputStream that can access a queue of ByteBuffer payloads, along with expected InputStream blocking behavior.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classMessageInputStream.State
-
Field Summary
Fields Modifier and Type Field Description private java.nio.ByteBufferactiveBufferprivate org.eclipse.jetty.io.ByteBufferPoolbufferPoolprivate java.util.concurrent.BlockingDeque<java.nio.ByteBuffer>buffersprivate static java.nio.ByteBufferEOFprivate static org.eclipse.jetty.util.log.LoggerLOGprivate Sessionsessionprivate MessageInputStream.Statestateprivate SuspendTokensuspendTokenprivate longtimeoutMs
-
Constructor Summary
Constructors Constructor Description MessageInputStream(Session session)MessageInputStream(Session session, int timeoutMs)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private java.nio.ByteBufferacquire(int capacity, boolean direct)voidappendFrame(java.nio.ByteBuffer framePayload, boolean fin)Append the frame payload to the message.voidclose()voidhandlerComplete()voidmark(int readlimit)booleanmarkSupported()voidmessageComplete()Notification that message is to be considered complete.intread()intread(byte[] b, int off, int len)voidreset()
-
-
-
Field Detail
-
LOG
private static final org.eclipse.jetty.util.log.Logger LOG
-
EOF
private static final java.nio.ByteBuffer EOF
-
session
private final Session session
-
bufferPool
private final org.eclipse.jetty.io.ByteBufferPool bufferPool
-
buffers
private final java.util.concurrent.BlockingDeque<java.nio.ByteBuffer> buffers
-
timeoutMs
private final long timeoutMs
-
activeBuffer
private java.nio.ByteBuffer activeBuffer
-
suspendToken
private SuspendToken suspendToken
-
state
private MessageInputStream.State state
-
-
Method Detail
-
appendFrame
public void appendFrame(java.nio.ByteBuffer framePayload, boolean fin) throws java.io.IOExceptionDescription copied from interface:MessageAppenderAppend the frame payload to the message.- Specified by:
appendFramein interfaceMessageAppender- Parameters:
framePayload- the frame payload to append.fin- flag indicating if this is the last part of the message or not.- Throws:
java.io.IOException- if unable to append the frame payload
-
close
public void close()
- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Overrides:
closein classjava.io.InputStream
-
handlerComplete
public void handlerComplete()
-
read
public int read() throws java.io.IOException- Specified by:
readin classjava.io.InputStream- Throws:
java.io.IOException
-
read
public int read(byte[] b, int off, int len) throws java.io.IOException- Overrides:
readin classjava.io.InputStream- Throws:
java.io.IOException
-
messageComplete
public void messageComplete()
Description copied from interface:MessageAppenderNotification that message is to be considered complete.Any cleanup or final actions should be taken here.
- Specified by:
messageCompletein interfaceMessageAppender
-
reset
public void reset() throws java.io.IOException- Overrides:
resetin classjava.io.InputStream- Throws:
java.io.IOException
-
mark
public void mark(int readlimit)
- Overrides:
markin classjava.io.InputStream
-
markSupported
public boolean markSupported()
- Overrides:
markSupportedin classjava.io.InputStream
-
acquire
private java.nio.ByteBuffer acquire(int capacity, boolean direct)
-
-