public abstract class SslClientHelloHandler<T>
extends io.netty.handler.codec.ByteToMessageDecoder
implements io.netty.channel.ChannelOutboundHandler
ByteToMessageDecoder which allows to be notified once a full ClientHello was received.| Modifier and Type | Field and Description |
|---|---|
static int |
MAX_CLIENT_HELLO_LENGTH
The maximum length of client hello message as defined by
RFC5246.
|
| Modifier | Constructor and Description |
|---|---|
|
SslClientHelloHandler() |
protected |
SslClientHelloHandler(int maxClientHelloLength) |
| Modifier and Type | Method and Description |
|---|---|
void |
bind(io.netty.channel.ChannelHandlerContext ctx,
SocketAddress localAddress,
io.netty.channel.ChannelPromise promise) |
void |
close(io.netty.channel.ChannelHandlerContext ctx,
io.netty.channel.ChannelPromise promise) |
void |
connect(io.netty.channel.ChannelHandlerContext ctx,
SocketAddress remoteAddress,
SocketAddress localAddress,
io.netty.channel.ChannelPromise promise) |
protected void |
decode(io.netty.channel.ChannelHandlerContext ctx,
io.netty.buffer.ByteBuf in,
List<Object> out) |
void |
deregister(io.netty.channel.ChannelHandlerContext ctx,
io.netty.channel.ChannelPromise promise) |
void |
disconnect(io.netty.channel.ChannelHandlerContext ctx,
io.netty.channel.ChannelPromise promise) |
void |
flush(io.netty.channel.ChannelHandlerContext ctx) |
protected void |
handlerRemoved0(io.netty.channel.ChannelHandlerContext ctx) |
protected abstract io.netty.util.concurrent.Future<T> |
lookup(io.netty.channel.ChannelHandlerContext ctx,
io.netty.buffer.ByteBuf clientHello)
Kicks off a lookup for the given
ClientHello and returns a Future which in turn will
notify the onLookupComplete(ChannelHandlerContext, Future) on completion. |
protected abstract void |
onLookupComplete(io.netty.channel.ChannelHandlerContext ctx,
io.netty.util.concurrent.Future<T> future)
Called upon completion of the
lookup(ChannelHandlerContext, ByteBuf) Future. |
void |
read(io.netty.channel.ChannelHandlerContext ctx) |
void |
write(io.netty.channel.ChannelHandlerContext ctx,
Object msg,
io.netty.channel.ChannelPromise promise) |
actualReadableBytes, callDecode, channelInactive, channelRead, channelReadComplete, decodeLast, discardSomeReadBytes, handlerRemoved, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecode, userEventTriggeredchannelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaughtensureNotSharable, handlerAdded, isSharablepublic static final int MAX_CLIENT_HELLO_LENGTH
public SslClientHelloHandler()
protected SslClientHelloHandler(int maxClientHelloLength)
protected void decode(io.netty.channel.ChannelHandlerContext ctx,
io.netty.buffer.ByteBuf in,
List<Object> out)
throws Exception
decode in class io.netty.handler.codec.ByteToMessageDecoderExceptionprotected void handlerRemoved0(io.netty.channel.ChannelHandlerContext ctx)
throws Exception
handlerRemoved0 in class io.netty.handler.codec.ByteToMessageDecoderExceptionprotected abstract io.netty.util.concurrent.Future<T> lookup(io.netty.channel.ChannelHandlerContext ctx, io.netty.buffer.ByteBuf clientHello) throws Exception
ClientHello and returns a Future which in turn will
notify the onLookupComplete(ChannelHandlerContext, Future) on completion.
See https://tools.ietf.org/html/rfc5246#section-7.4.1.2
struct {
ProtocolVersion client_version;
Random random;
SessionID session_id;
CipherSuite cipher_suites<2..2^16-2>;
CompressionMethod compression_methods<1..2^8-1>;
select (extensions_present) {
case false:
struct {};
case true:
Extension extensions<0..2^16-1>;
};
} ClientHello;
ExceptiononLookupComplete(ChannelHandlerContext, Future)protected abstract void onLookupComplete(io.netty.channel.ChannelHandlerContext ctx,
io.netty.util.concurrent.Future<T> future)
throws Exception
lookup(ChannelHandlerContext, ByteBuf) Future.Exceptionlookup(ChannelHandlerContext, ByteBuf)public void read(io.netty.channel.ChannelHandlerContext ctx)
throws Exception
read in interface io.netty.channel.ChannelOutboundHandlerExceptionpublic void bind(io.netty.channel.ChannelHandlerContext ctx,
SocketAddress localAddress,
io.netty.channel.ChannelPromise promise)
throws Exception
bind in interface io.netty.channel.ChannelOutboundHandlerExceptionpublic void connect(io.netty.channel.ChannelHandlerContext ctx,
SocketAddress remoteAddress,
SocketAddress localAddress,
io.netty.channel.ChannelPromise promise)
throws Exception
connect in interface io.netty.channel.ChannelOutboundHandlerExceptionpublic void disconnect(io.netty.channel.ChannelHandlerContext ctx,
io.netty.channel.ChannelPromise promise)
throws Exception
disconnect in interface io.netty.channel.ChannelOutboundHandlerExceptionpublic void close(io.netty.channel.ChannelHandlerContext ctx,
io.netty.channel.ChannelPromise promise)
throws Exception
close in interface io.netty.channel.ChannelOutboundHandlerExceptionpublic void deregister(io.netty.channel.ChannelHandlerContext ctx,
io.netty.channel.ChannelPromise promise)
throws Exception
deregister in interface io.netty.channel.ChannelOutboundHandlerExceptionpublic void write(io.netty.channel.ChannelHandlerContext ctx,
Object msg,
io.netty.channel.ChannelPromise promise)
throws Exception
write in interface io.netty.channel.ChannelOutboundHandlerExceptionCopyright © 2008–2025 The Netty Project. All rights reserved.