Package org.mockserver.netty.proxy
Class MysqlMessageFramer
java.lang.Object
io.netty.channel.ChannelHandlerAdapter
io.netty.channel.ChannelInboundHandlerAdapter
io.netty.handler.codec.ByteToMessageDecoder
org.mockserver.netty.proxy.BinaryMessageFramer
org.mockserver.netty.proxy.MysqlMessageFramer
- All Implemented Interfaces:
io.netty.channel.ChannelHandler,io.netty.channel.ChannelInboundHandler
Cuts a binary connection into the messages of the MySQL client/server protocol, as a client sends them. A packet is
a 3-byte little-endian payload length, a 1-byte sequence id, then the payload. A payload of 0xFFFFFF bytes or more
is sent as several packets, each full one followed by the next, ending with one shorter than 0xFFFFFF (possibly
empty): those packets, headers included, are one message, as they carry one command. Any other packet is a
message of its own.
A TLS handshake is looked for only straight after an SSLRequest (a 32-byte payload, sequence id 1, with the CLIENT_SSL capability), as a MySQL packet at a message boundary can start with bytes that look like one.
-
Nested Class Summary
Nested classes/interfaces inherited from class io.netty.handler.codec.ByteToMessageDecoder
io.netty.handler.codec.ByteToMessageDecoder.CumulatorNested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
io.netty.channel.ChannelHandler.Sharable -
Field Summary
Fields inherited from class org.mockserver.netty.proxy.BinaryMessageFramer
NOT_YET_KNOWNFields inherited from class io.netty.handler.codec.ByteToMessageDecoder
COMPOSITE_CUMULATOR, MERGE_CUMULATOR -
Constructor Summary
ConstructorsConstructorDescriptionMysqlMessageFramer(int maxMessageBytes, org.mockserver.logging.MockServerLogger mockServerLogger) -
Method Summary
Modifier and TypeMethodDescriptionintbytesBeforeTlsMayStart(io.netty.buffer.ByteBuf in, int available) A client sends its ClientHello straight after an SSLRequest, without waiting for a reply, so the two can be read together.protected longmessageBytes(io.netty.channel.ChannelHandlerContext ctx, io.netty.buffer.ByteBuf in) How many bytes the message that starts at the reader index has,BinaryMessageFramer.NOT_YET_KNOWNwhile the bytes held cannot say, or anything afterBinaryMessageFramer.refuse(io.netty.channel.ChannelHandlerContext, io.netty.buffer.ByteBuf, java.lang.String).protected voidmessageTaken(io.netty.buffer.ByteBuf message) Called with each whole message before it is passed on.protected booleanMethods inherited from class org.mockserver.netty.proxy.BinaryMessageFramer
atMessageBoundary, decode, forConfiguration, maxMessageBytes, refuse, tlsMayStartHereMethods inherited from class io.netty.handler.codec.ByteToMessageDecoder
actualReadableBytes, callDecode, channelInactive, channelRead, channelReadComplete, decodeLast, discardSomeReadBytes, handlerRemoved, handlerRemoved0, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecode, userEventTriggeredMethods inherited from class io.netty.channel.ChannelInboundHandlerAdapter
channelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaughtMethods inherited from class io.netty.channel.ChannelHandlerAdapter
ensureNotSharable, handlerAdded, isSharableMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.netty.channel.ChannelHandler
handlerAdded
-
Constructor Details
-
MysqlMessageFramer
public MysqlMessageFramer(int maxMessageBytes, org.mockserver.logging.MockServerLogger mockServerLogger)
-
-
Method Details
-
messageBytes
protected long messageBytes(io.netty.channel.ChannelHandlerContext ctx, io.netty.buffer.ByteBuf in) Description copied from class:BinaryMessageFramerHow many bytes the message that starts at the reader index has,BinaryMessageFramer.NOT_YET_KNOWNwhile the bytes held cannot say, or anything afterBinaryMessageFramer.refuse(io.netty.channel.ChannelHandlerContext, io.netty.buffer.ByteBuf, java.lang.String). Must not move the reader index.- Specified by:
messageBytesin classBinaryMessageFramer
-
messageTaken
protected void messageTaken(io.netty.buffer.ByteBuf message) Description copied from class:BinaryMessageFramerCalled with each whole message before it is passed on.- Overrides:
messageTakenin classBinaryMessageFramer
-
bytesBeforeTlsMayStart
public int bytesBeforeTlsMayStart(io.netty.buffer.ByteBuf in, int available) A client sends its ClientHello straight after an SSLRequest, without waiting for a reply, so the two can be read together.- Overrides:
bytesBeforeTlsMayStartin classBinaryMessageFramer
-
protocolAllowsTlsHere
protected boolean protocolAllowsTlsHere()- Overrides:
protocolAllowsTlsHerein classBinaryMessageFramer
-