Package io.grpc.internal
Class SquelchLateMessagesAvailableDeframerListener
- java.lang.Object
-
- io.grpc.internal.ForwardingDeframerListener
-
- io.grpc.internal.SquelchLateMessagesAvailableDeframerListener
-
- All Implemented Interfaces:
MessageDeframer.Listener
final class SquelchLateMessagesAvailableDeframerListener extends ForwardingDeframerListener
A delegating Listener that throws away notifications of messagesAvailable() after the deframer has closed or failed. This can be used by deframers that "abuse" the MessageProducer to run work on the app thread, to avoid breaking the normal invariant that there are no messages after deframing is complete. Since the producer may not be run, it must not hold resources or it should implementCloseable
.
-
-
Field Summary
Fields Modifier and Type Field Description private boolean
closed
private MessageDeframer.Listener
delegate
-
Constructor Summary
Constructors Constructor Description SquelchLateMessagesAvailableDeframerListener(MessageDeframer.Listener delegate)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
deframeFailed(java.lang.Throwable cause)
Called when aMessageDeframer.deframe(ReadableBuffer)
operation failed.void
deframerClosed(boolean hasPartialMessage)
Called when the deframer closes.protected MessageDeframer.Listener
delegate()
void
messagesAvailable(StreamListener.MessageProducer producer)
Called to deliver the next complete message.-
Methods inherited from class io.grpc.internal.ForwardingDeframerListener
bytesRead
-
-
-
-
Field Detail
-
delegate
private final MessageDeframer.Listener delegate
-
closed
private boolean closed
-
-
Constructor Detail
-
SquelchLateMessagesAvailableDeframerListener
public SquelchLateMessagesAvailableDeframerListener(MessageDeframer.Listener delegate)
-
-
Method Detail
-
delegate
protected MessageDeframer.Listener delegate()
- Specified by:
delegate
in classForwardingDeframerListener
-
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
- Overrides:
messagesAvailable
in classForwardingDeframerListener
- 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
- Overrides:
deframerClosed
in classForwardingDeframerListener
- 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
- Overrides:
deframeFailed
in classForwardingDeframerListener
- Parameters:
cause
- the actual failure
-
-