Class PacketWriter

java.lang.Object
org.mariadb.jdbc.client.socket.PacketWriter

public class PacketWriter extends Object
  • Field Details

    • SMALL_BUFFER_SIZE

      public static final int SMALL_BUFFER_SIZE
      See Also:
    • logger

      private static final Logger logger
    • QUOTE

      private static final byte QUOTE
      See Also:
    • DBL_QUOTE

      private static final byte DBL_QUOTE
      See Also:
    • ZERO_BYTE

      private static final byte ZERO_BYTE
      See Also:
    • BACKSLASH

      private static final byte BACKSLASH
      See Also:
    • MEDIUM_BUFFER_SIZE

      private static final int MEDIUM_BUFFER_SIZE
      See Also:
    • LARGE_BUFFER_SIZE

      private static final int LARGE_BUFFER_SIZE
      See Also:
    • MAX_PACKET_LENGTH

      private static final int MAX_PACKET_LENGTH
      See Also:
    • sequence

      protected final MutableInt sequence
    • compressSequence

      protected final MutableInt compressSequence
    • maxQuerySizeToLog

      private final int maxQuerySizeToLog
    • out

      private final OutputStream out
    • buf

      protected byte[] buf
    • pos

      protected int pos
    • maxPacketLength

      private int maxPacketLength
    • maxAllowedPacket

      private int maxAllowedPacket
    • cmdLength

      private long cmdLength
    • permitTrace

      private boolean permitTrace
    • serverThreadLog

      private String serverThreadLog
    • mark

      private int mark
    • bufContainDataAfterMark

      private boolean bufContainDataAfterMark
  • Constructor Details

    • PacketWriter

      public PacketWriter(OutputStream out, int maxQuerySizeToLog, MutableInt sequence, MutableInt compressSequence)
      Common feature to write data into socket, creating MariaDB Packet.
      Parameters:
      out - output stream
      maxQuerySizeToLog - maximum query size to log
      sequence - packet sequence
      compressSequence - compressed packet sequence
  • Method Details

    • pos

      public int pos()
    • pos

      public void pos(int pos) throws IOException
      Throws:
      IOException
    • writeByte

      public void writeByte(int value) throws IOException
      Write byte into buf, flush buf to socket if needed.
      Parameters:
      value - byte to send
      Throws:
      IOException - if socket error occur.
    • writeShort

      public void writeShort(short value) throws IOException
      Write short value into buf. flush buf if too small.
      Parameters:
      value - short value
      Throws:
      IOException - if socket error occur
    • writeInt

      public void writeInt(int value) throws IOException
      Write int value into buf. flush buf if too small.
      Parameters:
      value - int value
      Throws:
      IOException - if socket error occur
    • writeLong

      public void writeLong(long value) throws IOException
      Write long value into buf. flush buf if too small.
      Parameters:
      value - long value
      Throws:
      IOException - if socket error occur
    • writeDouble

      public void writeDouble(double value) throws IOException
      Throws:
      IOException
    • writeFloat

      public void writeFloat(float value) throws IOException
      Throws:
      IOException
    • writeBytes

      public void writeBytes(byte[] arr) throws IOException
      Throws:
      IOException
    • writeBytesAtPos

      public void writeBytesAtPos(byte[] arr, int pos)
    • writeBytes

      public void writeBytes(byte[] arr, int off, int len) throws IOException
      Write byte array to buf. If buf is full, flush socket.
      Parameters:
      arr - byte array
      off - offset
      len - byte length to write
      Throws:
      IOException - if socket error occur
    • writeLength

      public void writeLength(long length) throws IOException
      Write field length into buf, flush socket if needed.
      Parameters:
      length - field length
      Throws:
      IOException - if socket error occur.
    • writeAscii

      public void writeAscii(String str) throws IOException
      Throws:
      IOException
    • writeString

      public void writeString(String str) throws IOException
      Throws:
      IOException
    • writeStringEscaped

      public void writeStringEscaped(String str, boolean noBackslashEscapes) throws IOException
      Write string to socket.
      Parameters:
      str - string
      noBackslashEscapes - escape method
      Throws:
      IOException - if socket error occur
    • writeBytesEscaped

      public void writeBytesEscaped(byte[] bytes, int len, boolean noBackslashEscapes) throws IOException
      Write escape bytes to socket.
      Parameters:
      bytes - bytes
      len - len to write
      noBackslashEscapes - escape method
      Throws:
      IOException - if socket error occur
    • growBuffer

      private void growBuffer(int len) throws IOException
      buf growing use 4 size only to avoid creating/copying that are expensive operations. possible size
      1. SMALL_buf_SIZE = 8k (default)
      2. MEDIUM_buf_SIZE = 128k
      3. LARGE_buf_SIZE = 1M
      4. getMaxPacketLength = 16M (+ 4 if using no compression)
      Parameters:
      len - length to add
      Throws:
      IOException
    • writeEmptyPacket

      public void writeEmptyPacket() throws IOException
      Send empty packet.
      Throws:
      IOException - if socket error occur.
    • flush

      public void flush() throws IOException
      Send packet to socket.
      Throws:
      IOException - if socket error occur.
    • checkMaxAllowedLength

      public void checkMaxAllowedLength(int length) throws MaxAllowedPacketException
      Count query size. If query size is greater than max_allowed_packet and nothing has been already send, throw an exception to avoid having the connection closed.
      Parameters:
      length - additional length to query size
      Throws:
      MaxAllowedPacketException - if query has not to be sent.
    • setMaxAllowedPacket

      public void setMaxAllowedPacket(int maxAllowedPacket)
    • permitTrace

      public void permitTrace(boolean permitTrace)
    • setServerThreadId

      public void setServerThreadId(Long serverThreadId, HostAddress hostAddress)
      Set server thread id.
      Parameters:
      serverThreadId - current server thread id.
      hostAddress - host information
    • mark

      public void mark()
    • isMarked

      public boolean isMarked()
    • hasFlushed

      public boolean hasFlushed()
    • flushBufferStopAtMark

      public void flushBufferStopAtMark() throws IOException
      Flush to last mark.
      Throws:
      IOException - if flush fail.
    • bufIsDataAfterMark

      public boolean bufIsDataAfterMark()
    • resetMark

      public byte[] resetMark()
      Reset mark flag and send bytes after mark flag.
      Returns:
      bytes after mark flag
    • initPacket

      public void initPacket()
    • writeSocket

      protected void writeSocket(boolean commandEnd) throws IOException
      Flush the internal buf.
      Parameters:
      commandEnd - command end
      Throws:
      IOException - id connection error occur.
    • close

      public void close() throws IOException
      Throws:
      IOException