Package io.grpc.internal
Class ApplicationThreadDeframerListener
- java.lang.Object
-
- io.grpc.internal.ApplicationThreadDeframerListener
-
- All Implemented Interfaces:
MessageDeframer.Listener
final class ApplicationThreadDeframerListener extends java.lang.Object implements MessageDeframer.Listener
Listener for when deframing on the application thread, which calls the real listener on the transport thread. May only be called on the application thread.Does not call the delegate's
messagesAvailable()
. It's expected thatmessageReadQueuePoll()
is called on the application thread from within a message producer managed elsewhere.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
ApplicationThreadDeframerListener.TransportExecutor
-
Field Summary
Fields Modifier and Type Field Description private java.util.Queue<java.io.InputStream>
messageReadQueue
Queue for messages returned by the deframer when deframing in the application thread.private MessageDeframer.Listener
storedListener
private ApplicationThreadDeframerListener.TransportExecutor
transportExecutor
-
Constructor Summary
Constructors Constructor Description ApplicationThreadDeframerListener(MessageDeframer.Listener listener, ApplicationThreadDeframerListener.TransportExecutor transportExecutor)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
bytesRead(int numBytes)
Called when the given number of bytes has been read from the input source of the deframer.void
deframeFailed(java.lang.Throwable cause)
Called when aMessageDeframer.deframe(ReadableBuffer)
operation failed.void
deframerClosed(boolean hasPartialMessage)
Called when the deframer closes.java.io.InputStream
messageReadQueuePoll()
void
messagesAvailable(StreamListener.MessageProducer producer)
Called to deliver the next complete message.
-
-
-
Field Detail
-
transportExecutor
private final ApplicationThreadDeframerListener.TransportExecutor transportExecutor
-
storedListener
private final MessageDeframer.Listener storedListener
-
messageReadQueue
private final java.util.Queue<java.io.InputStream> messageReadQueue
Queue for messages returned by the deframer when deframing in the application thread.
-
-
Constructor Detail
-
ApplicationThreadDeframerListener
public ApplicationThreadDeframerListener(MessageDeframer.Listener listener, ApplicationThreadDeframerListener.TransportExecutor transportExecutor)
-
-
Method Detail
-
bytesRead
public void bytesRead(int numBytes)
Description copied from interface:MessageDeframer.Listener
Called when the given number of bytes has been read from the input source of the deframer. This is typically used to indicate to the underlying transport that more data can be accepted.- Specified by:
bytesRead
in interfaceMessageDeframer.Listener
- Parameters:
numBytes
- the number of bytes read from the deframer's input source.
-
messagesAvailable
public void messagesAvailable(StreamListener.MessageProducer producer)
Description copied from interface:MessageDeframer.Listener
Called to deliver the next complete message.- Specified by:
messagesAvailable
in interfaceMessageDeframer.Listener
- Parameters:
producer
- single message producer wrapping the message.
-
deframerClosed
public void deframerClosed(boolean hasPartialMessage)
Description copied from interface:MessageDeframer.Listener
Called when the deframer closes.- Specified by:
deframerClosed
in interfaceMessageDeframer.Listener
- Parameters:
hasPartialMessage
- whether the deframer contained an incomplete message at closing.
-
deframeFailed
public void deframeFailed(java.lang.Throwable cause)
Description copied from interface:MessageDeframer.Listener
Called when aMessageDeframer.deframe(ReadableBuffer)
operation failed.- Specified by:
deframeFailed
in interfaceMessageDeframer.Listener
- Parameters:
cause
- the actual failure
-
messageReadQueuePoll
public java.io.InputStream messageReadQueuePoll()
-
-