public class MysqlPacket
extends java.lang.Object
更多信息请参考: MySQL Packets
说明:MysqlPacket 类是非线程安全的,不允许多个线程使用同一个实例。
| 构造器和说明 |
|---|
MysqlPacket(int sequenceId,
byte[] payload)
构造一个 MYSQL 服务端与客户端之间进行通信的数据包。
|
| 限定符和类型 | 方法和说明 |
|---|---|
byte[] |
buildMysqlPacketBytes()
根据已写入的内容信息,生成 MYSQL 数据包字节数组,MYSQL 数据包格式定义:
MySQL Packets
|
static int |
getBytesLengthForLengthEncodedInteger(long value)
将该无符号整数转换为 "Protocol::LengthEncodedInteger" 类型所需的字节长度。
|
byte[] |
getPayload()
获得内容信息字节数组。
|
int |
getPosition()
获得下一个被读取字节的索引位置。
|
int |
getSequenceId()
获得数据包序号。
|
boolean |
hasRemaining()
判断 position 的值是否小于 payload 的长度。
|
byte[] |
readFixedLengthBytes(int length)
读取固定长度的字节数组。
|
long |
readFixedLengthInteger(int length)
读取 "Protocol::FixedLengthInteger" 类型的无符号整数,长度允许的范围为: [1, 8]。
|
java.lang.String |
readFixedLengthString(int length,
java.nio.charset.Charset charset)
读取 "Protocol::FixedLengthString" 类型的字符串,该方法不会返回
null。 |
long |
readLengthEncodedInteger()
读取 "Protocol::LengthEncodedInteger" 类型的无符号整数。
|
java.lang.String |
readLengthEncodedString(java.nio.charset.Charset charset)
读取 "Protocol::LengthEncodedString" 类型的字符串,该方法不会返回
null。 |
java.lang.String |
readNullTerminatedString(java.nio.charset.Charset charset)
读取 "Protocol::NullTerminatedString" 类型的字符串。
|
java.lang.String |
readRestOfPacketString(java.nio.charset.Charset charset)
读取 "Protocol::RestOfPacketString" 类型的字符串,可能返回
null。 |
void |
setPosition(int position)
设置下一个被读取字节的索引位置。
|
java.lang.String |
toString() |
MysqlPacket |
writeFixedLengthBytes(byte[] src)
写入固定长度的字节数组。
|
MysqlPacket |
writeFixedLengthInteger(int length,
long value)
以字节形式写入 "Protocol::FixedLengthInteger" 类型的无符号整数。
|
MysqlPacket |
writeLengthEncodedInteger(long value)
以字节形式写入 "Protocol::LengthEncodedInteger" 类型的无符号整数。
|
MysqlPacket |
writeLengthEncodedString(byte[] text)
以字节形式写入 "Protocol::LengthEncodedString" 类型的字符串。
|
MysqlPacket |
writeNullTerminatedString(byte[] text)
以字节形式写入 "Protocol::NullTerminatedString" 类型的字符串。
|
public MysqlPacket(int sequenceId,
byte[] payload)
sequenceId - 数据包序号payload - 内容信息public int getSequenceId()
public byte[] getPayload()
注意:请勿直接修改内容信息字节数组中的内容。
public int getPosition()
public void setPosition(int position)
position - 下一个被读取字节的索引位置public boolean hasRemaining()
public byte[] readFixedLengthBytes(int length)
throws java.lang.IndexOutOfBoundsException,
java.lang.IllegalArgumentException
length - 字节长度java.lang.ArrayIndexOutOfBoundsException - 如果访问数组越界,将会抛出此异常java.lang.IllegalArgumentException - 如果 length 小于 0,将会抛出此异常java.lang.IndexOutOfBoundsExceptionpublic long readFixedLengthInteger(int length)
throws java.lang.ArrayIndexOutOfBoundsException,
java.lang.IllegalArgumentException
更多信息请参考: Protocol::FixedLengthInteger
length - 字节长度java.lang.ArrayIndexOutOfBoundsException - 如果访问数组越界,将会抛出此异常java.lang.IllegalArgumentException - 如果 length 的值没有在允许的范围内,将会抛出此异常public long readLengthEncodedInteger()
throws java.lang.ArrayIndexOutOfBoundsException
更多信息请参考: Protocol::LengthEncodedInteger
java.lang.ArrayIndexOutOfBoundsException - 如果访问数组越界,将会抛出此异常public java.lang.String readNullTerminatedString(java.nio.charset.Charset charset)
throws java.lang.ArrayIndexOutOfBoundsException
更多信息请参考: Protocol::NullTerminatedString
charset - 字符集编码java.lang.ArrayIndexOutOfBoundsException - 如果访问数组越界,将会抛出此异常public java.lang.String readLengthEncodedString(java.nio.charset.Charset charset)
throws java.lang.ArrayIndexOutOfBoundsException
null。
更多信息请参考: Protocol::LengthEncodedString
charset - 字符集编码java.lang.ArrayIndexOutOfBoundsException - 如果访问数组越界,将会抛出此异常public java.lang.String readFixedLengthString(int length,
java.nio.charset.Charset charset)
throws java.lang.ArrayIndexOutOfBoundsException,
java.lang.IllegalArgumentException
null。
更多信息请参考: Protocol::FixedLengthString
length - 字符串长度charset - 字符集编码java.lang.ArrayIndexOutOfBoundsException - 如果访问数组越界,将会抛出此异常java.lang.IllegalArgumentException - 如果 length 小于 0,将会抛出此异常public java.lang.String readRestOfPacketString(java.nio.charset.Charset charset)
null。
更多信息请参考: Protocol::RestOfPacketString
charset - 字符编码public MysqlPacket writeFixedLengthBytes(byte[] src) throws java.lang.IndexOutOfBoundsException, java.lang.NullPointerException
src - 需要写入的字节数组,不允许为 nullMysqlPacket 实例java.lang.IndexOutOfBoundsException - 如果访问数组越界,将会抛出此异常java.lang.NullPointerException - 如果 src 为 null,将会抛出此异常public MysqlPacket writeFixedLengthInteger(int length, long value) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException
更多信息请参考: Protocol::FixedLengthInteger
length - 字节长度value - 无符号整数MysqlPacket 实例java.lang.ArrayIndexOutOfBoundsException - 如果访问数组越界,将会抛出此异常java.lang.IllegalArgumentException - 如果 length 或 value 的值没有在允许的范围内,将会抛出此异常public MysqlPacket writeLengthEncodedInteger(long value) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException
更多信息请参考: Protocol::LengthEncodedInteger
value - 无符号整数MysqlPacket 实例java.lang.ArrayIndexOutOfBoundsException - 如果访问数组越界,将会抛出此异常java.lang.IllegalArgumentException - 如果 value 的值为负数,将会抛出此异常public MysqlPacket writeNullTerminatedString(byte[] text) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException
更多信息请参考: Protocol::NullTerminatedString
text - 字符串字节数组MysqlPacket 实例java.lang.ArrayIndexOutOfBoundsException - 如果访问数组越界,将会抛出此异常java.lang.IllegalArgumentException - 如果 text 为 null,将会抛出此异常public MysqlPacket writeLengthEncodedString(byte[] text) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException
text - 字符串字节数组MysqlPacket 实例java.lang.ArrayIndexOutOfBoundsException - 如果访问数组越界,将会抛出此异常java.lang.IllegalArgumentException - 如果 text 为 null,将会抛出此异常public byte[] buildMysqlPacketBytes()
throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentException - 如果已写入的内容信息为空,即 getPosition() 为 0,将会抛出此异常public java.lang.String toString()
toString 在类中 java.lang.Objectpublic static int getBytesLengthForLengthEncodedInteger(long value)
更多信息请参考: Protocol::LengthEncodedInteger
value - 无符号整数writeLengthEncodedInteger(long)Copyright © 2019. All Rights Reserved.