blob: 5dbf3f309419a4c7c800a01c29f9ca8ce9948bd6 [file] [log] [blame]
// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (c) 2012-2014 Monty Program Ab
// Copyright (c) 2015-2021 MariaDB Corporation Ab
package org.mariadb.jdbc.client.socket;
import java.io.IOException;
import org.mariadb.jdbc.HostAddress;
import org.mariadb.jdbc.client.ReadableByteBuf;
import org.mariadb.jdbc.client.util.MutableByte;
/** Packet Reader */
public interface Reader {
/**
* Get next MySQL packet. Packet is expected to have size < 16M and will use if possible an
* internal cached buffer. This packet bytes are expect to be read immediately
*
* @param traceEnable must trace pacjet
* @return Readable byte array packet.
* @throws IOException if socket exception occur.
*/
ReadableByteBuf readReusablePacket(boolean traceEnable) throws IOException;
/**
* Get next MySQL packet. Packet is expected to have size < 16M and will use if possible an
* internal cached buffer. This packet bytes are expect to be read immediately
*
* @return Readable byte array packet.
* @throws IOException if socket exception occur.
*/
ReadableByteBuf readReusablePacket() throws IOException;
/**
* Get next MySQL packet. If packet is more than 16M, read as many packet needed to finish reading
* MySQL packet. (first that has not length = 16Mb)
*
* @param traceEnable must trace packet.
* @return array packet.
* @throws IOException if socket exception occur.
*/
byte[] readPacket(boolean traceEnable) throws IOException;
/**
* Get a readable byte array from byte array. This packet is expected to be read immediately,
* since no lock is set on this packet.
*
* @param buf byte array to be parsed
* @return array packet.
*/
ReadableByteBuf readableBufFromArray(byte[] buf);
/**
* Skip next MySQL packet. Packet is expected to have size < 16M
*
* @throws IOException if socket exception occur.
*/
void skipPacket() throws IOException;
/**
* Get current sequence object
*
* @return current sequence
*/
MutableByte getSequence();
/**
* Close stream
*
* @throws IOException if any error occurs
*/
void close() throws IOException;
/**
* Set server thread id.
*
* @param serverThreadId current server thread id.
* @param hostAddress host information
*/
void setServerThreadId(Long serverThreadId, HostAddress hostAddress);
}