Class PacketWriter


  • public class PacketWriter
    extends Object
    • Field Detail

      • sequence

        protected final org.mariadb.jdbc.util.MutableInt sequence
      • compressSequence

        protected final org.mariadb.jdbc.util.MutableInt compressSequence
      • buf

        protected byte[] buf
      • pos

        protected int pos
    • Constructor Detail

      • PacketWriter

        public PacketWriter​(OutputStream out,
                            int maxQuerySizeToLog,
                            org.mariadb.jdbc.util.MutableInt sequence,
                            org.mariadb.jdbc.util.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 Detail

      • pos

        public int pos()
      • 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
      • 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.
      • 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
      • 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.