Package io.netty.handler.ssl
Class SslClientHelloHandler<T>
- java.lang.Object
-
- io.netty.channel.ChannelHandlerAdapter
-
- io.netty.channel.ChannelInboundHandlerAdapter
-
- io.netty.handler.codec.ByteToMessageDecoder
-
- io.netty.handler.ssl.SslClientHelloHandler<T>
-
- All Implemented Interfaces:
io.netty.channel.ChannelHandler,io.netty.channel.ChannelInboundHandler,io.netty.channel.ChannelOutboundHandler
- Direct Known Subclasses:
AbstractSniHandler
public abstract class SslClientHelloHandler<T> extends io.netty.handler.codec.ByteToMessageDecoder implements io.netty.channel.ChannelOutboundHandlerByteToMessageDecoderwhich allows to be notified once a fullClientHellowas received.
-
-
Field Summary
Fields Modifier and Type Field Description static intMAX_CLIENT_HELLO_LENGTHThe maximum length of client hello message as defined by RFC5246.
-
Constructor Summary
Constructors Modifier Constructor Description SslClientHelloHandler()protectedSslClientHelloHandler(int maxClientHelloLength)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidbind(io.netty.channel.ChannelHandlerContext ctx, SocketAddress localAddress, io.netty.channel.ChannelPromise promise)voidclose(io.netty.channel.ChannelHandlerContext ctx, io.netty.channel.ChannelPromise promise)voidconnect(io.netty.channel.ChannelHandlerContext ctx, SocketAddress remoteAddress, SocketAddress localAddress, io.netty.channel.ChannelPromise promise)protected voiddecode(io.netty.channel.ChannelHandlerContext ctx, io.netty.buffer.ByteBuf in, List<Object> out)voidderegister(io.netty.channel.ChannelHandlerContext ctx, io.netty.channel.ChannelPromise promise)voiddisconnect(io.netty.channel.ChannelHandlerContext ctx, io.netty.channel.ChannelPromise promise)voidflush(io.netty.channel.ChannelHandlerContext ctx)protected voidhandlerRemoved0(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 givenClientHelloand returns aFuturewhich in turn will notify theonLookupComplete(ChannelHandlerContext, Future)on completion.protected abstract voidonLookupComplete(io.netty.channel.ChannelHandlerContext ctx, io.netty.util.concurrent.Future<T> future)Called upon completion of thelookup(ChannelHandlerContext, ByteBuf)Future.voidread(io.netty.channel.ChannelHandlerContext ctx)voidwrite(io.netty.channel.ChannelHandlerContext ctx, Object msg, io.netty.channel.ChannelPromise promise)-
Methods inherited from class io.netty.handler.codec.ByteToMessageDecoder
actualReadableBytes, callDecode, channelInactive, channelRead, channelReadComplete, decodeLast, discardSomeReadBytes, handlerRemoved, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecode, userEventTriggered
-
Methods inherited from class io.netty.channel.ChannelInboundHandlerAdapter
channelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught
-
Methods inherited from class io.netty.channel.ChannelHandlerAdapter
ensureNotSharable, handlerAdded, isSharable
-
-
-
-
Field Detail
-
MAX_CLIENT_HELLO_LENGTH
public static final int MAX_CLIENT_HELLO_LENGTH
The maximum length of client hello message as defined by RFC5246.- See Also:
- Constant Field Values
-
-
Method Detail
-
decode
protected void decode(io.netty.channel.ChannelHandlerContext ctx, io.netty.buffer.ByteBuf in, List<Object> out) throws Exception- Specified by:
decodein classio.netty.handler.codec.ByteToMessageDecoder- Throws:
Exception
-
handlerRemoved0
protected void handlerRemoved0(io.netty.channel.ChannelHandlerContext ctx) throws Exception- Overrides:
handlerRemoved0in classio.netty.handler.codec.ByteToMessageDecoder- Throws:
Exception
-
lookup
protected abstract io.netty.util.concurrent.Future<T> lookup(io.netty.channel.ChannelHandlerContext ctx, io.netty.buffer.ByteBuf clientHello) throws Exception
Kicks off a lookup for the givenClientHelloand returns aFuturewhich in turn will notify theonLookupComplete(ChannelHandlerContext, Future)on completion. See https://tools.ietf.org/html/rfc5246#section-7.4.1.2struct { 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;- Throws:
Exception- See Also:
onLookupComplete(ChannelHandlerContext, Future)
-
onLookupComplete
protected abstract void onLookupComplete(io.netty.channel.ChannelHandlerContext ctx, io.netty.util.concurrent.Future<T> future) throws ExceptionCalled upon completion of thelookup(ChannelHandlerContext, ByteBuf)Future.- Throws:
Exception- See Also:
lookup(ChannelHandlerContext, ByteBuf)
-
read
public void read(io.netty.channel.ChannelHandlerContext ctx) throws Exception- Specified by:
readin interfaceio.netty.channel.ChannelOutboundHandler- Throws:
Exception
-
bind
public void bind(io.netty.channel.ChannelHandlerContext ctx, SocketAddress localAddress, io.netty.channel.ChannelPromise promise) throws Exception- Specified by:
bindin interfaceio.netty.channel.ChannelOutboundHandler- Throws:
Exception
-
connect
public void connect(io.netty.channel.ChannelHandlerContext ctx, SocketAddress remoteAddress, SocketAddress localAddress, io.netty.channel.ChannelPromise promise) throws Exception- Specified by:
connectin interfaceio.netty.channel.ChannelOutboundHandler- Throws:
Exception
-
disconnect
public void disconnect(io.netty.channel.ChannelHandlerContext ctx, io.netty.channel.ChannelPromise promise) throws Exception- Specified by:
disconnectin interfaceio.netty.channel.ChannelOutboundHandler- Throws:
Exception
-
close
public void close(io.netty.channel.ChannelHandlerContext ctx, io.netty.channel.ChannelPromise promise) throws Exception- Specified by:
closein interfaceio.netty.channel.ChannelOutboundHandler- Throws:
Exception
-
deregister
public void deregister(io.netty.channel.ChannelHandlerContext ctx, io.netty.channel.ChannelPromise promise) throws Exception- Specified by:
deregisterin interfaceio.netty.channel.ChannelOutboundHandler- Throws:
Exception
-
write
public void write(io.netty.channel.ChannelHandlerContext ctx, Object msg, io.netty.channel.ChannelPromise promise) throws Exception- Specified by:
writein interfaceio.netty.channel.ChannelOutboundHandler- Throws:
Exception
-
-