
com.github.mauricio.async.db.mysql.codec.SendLongDataEncoder.scala Maven / Gradle / Ivy
The newest version!
package com.github.mauricio.async.db.mysql.codec
import com.github.mauricio.async.db.mysql.message.client.{
ClientMessage,
SendLongDataMessage
}
import com.github.mauricio.async.db.util.{ByteBufferUtils, Log}
import io.netty.buffer.Unpooled
import io.netty.channel.ChannelHandlerContext
import io.netty.handler.codec.MessageToMessageEncoder
object SendLongDataEncoder {
val log = Log.get[SendLongDataEncoder]
val LONG_THRESHOLD = 1023
}
class SendLongDataEncoder
extends MessageToMessageEncoder[SendLongDataMessage](
classOf[SendLongDataMessage]
) {
import com.github.mauricio.async.db.mysql.codec.SendLongDataEncoder.log
def encode(
ctx: ChannelHandlerContext,
message: SendLongDataMessage,
out: java.util.List[Object]
): Unit = {
if (log.isTraceEnabled) {
log.trace(s"Writing message ${message.toString}")
}
val sequence = 0
val headerBuffer = ByteBufferUtils.mysqlBuffer(3 + 1 + 1 + 4 + 2)
ByteBufferUtils.write3BytesInt(
headerBuffer,
1 + 4 + 2 + message.value.readableBytes()
)
headerBuffer.writeByte(sequence)
headerBuffer.writeByte(ClientMessage.PreparedStatementSendLongData)
headerBuffer.writeBytes(message.statementId)
headerBuffer.writeShort(message.paramId)
val result = Unpooled.wrappedBuffer(headerBuffer, message.value)
out.add(result)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy