Package io.netty.handler.codec.haproxy
Class HAProxyMessageEncoder
- java.lang.Object
-
- io.netty.channel.ChannelHandlerAdapter
-
- io.netty.channel.ChannelOutboundHandlerAdapter
-
- io.netty.handler.codec.MessageToByteEncoder<HAProxyMessage>
-
- io.netty.handler.codec.haproxy.HAProxyMessageEncoder
-
- All Implemented Interfaces:
ChannelHandler,ChannelOutboundHandler
@Sharable public final class HAProxyMessageEncoder extends MessageToByteEncoder<HAProxyMessage>
Encodes an HAProxy proxy protocol message- See Also:
- Proxy Protocol Specification
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
ChannelHandler.Sharable
-
-
Field Summary
Fields Modifier and Type Field Description static HAProxyMessageEncoderINSTANCE(package private) static intTOTAL_UNIX_ADDRESS_BYTES_LENGTH(package private) static intUNIX_ADDRESS_BYTES_LENGTHprivate static intV2_VERSION_BITMASK
-
Constructor Summary
Constructors Modifier Constructor Description privateHAProxyMessageEncoder()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidencode(ChannelHandlerContext ctx, HAProxyMessage msg, ByteBuf out)Encode a message into aByteBuf.private static voidencodeChildTlvs(java.util.List<HAProxyTLV> haProxyTLVs, ByteBuf out)Encodes a genuine tree of encapsulated TLVs, e.g.private static voidencodeTlv(HAProxyTLV haProxyTLV, ByteBuf out)private static voidencodeTlvs(java.util.List<HAProxyTLV> haProxyTLVs, ByteBuf out)Encodes the top-level TLV list as returned byHAProxyMessage.tlvs().private static voidencodeV1(HAProxyMessage msg, ByteBuf out)private static voidencodeV2(HAProxyMessage msg, ByteBuf out)-
Methods inherited from class io.netty.handler.codec.MessageToByteEncoder
acceptOutboundMessage, allocateBuffer, isPreferDirect, write
-
Methods inherited from class io.netty.channel.ChannelOutboundHandlerAdapter
bind, close, connect, deregister, disconnect, flush, read
-
Methods inherited from class io.netty.channel.ChannelHandlerAdapter
ensureNotSharable, exceptionCaught, handlerAdded, handlerRemoved, isSharable
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.netty.channel.ChannelHandler
exceptionCaught, handlerAdded, handlerRemoved
-
-
-
-
Field Detail
-
V2_VERSION_BITMASK
private static final int V2_VERSION_BITMASK
- See Also:
- Constant Field Values
-
UNIX_ADDRESS_BYTES_LENGTH
static final int UNIX_ADDRESS_BYTES_LENGTH
- See Also:
- Constant Field Values
-
TOTAL_UNIX_ADDRESS_BYTES_LENGTH
static final int TOTAL_UNIX_ADDRESS_BYTES_LENGTH
- See Also:
- Constant Field Values
-
INSTANCE
public static final HAProxyMessageEncoder INSTANCE
-
-
Method Detail
-
encode
protected void encode(ChannelHandlerContext ctx, HAProxyMessage msg, ByteBuf out) throws java.lang.Exception
Description copied from class:MessageToByteEncoderEncode a message into aByteBuf. This method will be called for each written message that can be handled by this encoder.- Specified by:
encodein classMessageToByteEncoder<HAProxyMessage>- Parameters:
ctx- theChannelHandlerContextwhich thisMessageToByteEncoderbelongs tomsg- the message to encodeout- theByteBufinto which the encoded message will be written- Throws:
java.lang.Exception- is thrown if an error occurs
-
encodeV1
private static void encodeV1(HAProxyMessage msg, ByteBuf out)
-
encodeV2
private static void encodeV2(HAProxyMessage msg, ByteBuf out)
-
encodeTlv
private static void encodeTlv(HAProxyTLV haProxyTLV, ByteBuf out)
-
encodeChildTlvs
private static void encodeChildTlvs(java.util.List<HAProxyTLV> haProxyTLVs, ByteBuf out)
Encodes a genuine tree of encapsulated TLVs, e.g. the direct children of aHAProxySSLTLV. UnlikeHAProxyMessage.tlvs(), this list is not a flattened view, so every element must be encoded.
-
encodeTlvs
private static void encodeTlvs(java.util.List<HAProxyTLV> haProxyTLVs, ByteBuf out)
Encodes the top-level TLV list as returned byHAProxyMessage.tlvs(). That list flattens the direct children of anyHAProxySSLTLVinto it for convenience, so those flattened entries must be skipped here: they are already encoded (recursively) as part of their parentHAProxySSLTLV. Encoding them again would both duplicate their bytes on the wire and make the declared TLV length (seeHAProxyMessage.tlvNumBytes()) not match the number of bytes actually written.
-
-