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 interfaceApplicationThreadDeframerListener.TransportExecutor
-
Field Summary
Fields Modifier and Type Field Description private java.util.Queue<java.io.InputStream>messageReadQueueQueue for messages returned by the deframer when deframing in the application thread.private MessageDeframer.ListenerstoredListenerprivate ApplicationThreadDeframerListener.TransportExecutortransportExecutor
-
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 voidbytesRead(int numBytes)Called when the given number of bytes has been read from the input source of the deframer.voiddeframeFailed(java.lang.Throwable cause)Called when aMessageDeframer.deframe(ReadableBuffer)operation failed.voiddeframerClosed(boolean hasPartialMessage)Called when the deframer closes.java.io.InputStreammessageReadQueuePoll()voidmessagesAvailable(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.ListenerCalled 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:
bytesReadin 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.ListenerCalled to deliver the next complete message.- Specified by:
messagesAvailablein interfaceMessageDeframer.Listener- Parameters:
producer- single message producer wrapping the message.
-
deframerClosed
public void deframerClosed(boolean hasPartialMessage)
Description copied from interface:MessageDeframer.ListenerCalled when the deframer closes.- Specified by:
deframerClosedin 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.ListenerCalled when aMessageDeframer.deframe(ReadableBuffer)operation failed.- Specified by:
deframeFailedin interfaceMessageDeframer.Listener- Parameters:
cause- the actual failure
-
messageReadQueuePoll
public java.io.InputStream messageReadQueuePoll()
-
-