public interface ChannelInboundHandler
ChannelInboundHandler provides control when data is received and needs to be processed. For example data
has received on the socket and needs to be decoded into a Packet.
ChannelInboundHandler are not expected to be thread-safe; each channel will gets its own instance(s).
A ChannelInboundHandler is constructed through a ChannelInitializer.
MemberChannelInboundHandler that reads out any Packet from the decrypted ByteBuffer. Using this
approach encryption can easily be added to any type of communication, not only member 2 member communication.
Currently security is added by using a Channel, but this is not needed if the handlers form a pipeline.
Netty follows a similar approach with pipelining and adding encryption.
There is no explicit support for setting up a 'pipeline' of ChannelInboundHandler/WriterHandlers but t can easily be realized
by setting up the chain and let a handler explicitly forward to the next. Since it isn't a common practice for the handler
so far, isn't needed to add additional complexity to the system; just set up a chain manually.
pseudo code:
public class DecryptingReadHandler implements ChannelInboundHandler {
private final ChannelInboundHandler next;
public DecryptingReadHandler(ChannelInboundHandler next) {
this.next = next;
}
public void onRead(ByteBuffer src) {
decrypt(src, decryptedSrc);
next.onRead(decryptedSrc)
}
}
The next ChannelInboundHandler is the next item in the pipeline.
For encryption is similar approach can be followed where the DecryptingWriteHandler is the last ChannelOutboundHandler in
the pipeline.| Modifier and Type | Method and Description |
|---|---|
void |
onRead(ByteBuffer src)
A callback to indicate that data is available in the src ByteBuffer to be processed.
|
void onRead(ByteBuffer src) throws Exception
src - the ByteBuffer containing the data to read. The ByteBuffer is already in reading mode and when completed,
should not be converted to write-mode using clear/compact.Exception - if something fails while reading data from the ByteBuffer or processing the data (e.g. when a Packet
fails to get processed). When an exception is thrown, the ChannelErrorHandler is called.Copyright © 2017 Hazelcast, Inc.. All Rights Reserved.