net.neoremind.fountain.util
类 ProtocolHelper

java.lang.Object
  继承者 net.neoremind.fountain.util.ProtocolHelper

public class ProtocolHelper
extends Object

mysql binlog协议解析工具

作者:
hanxu03 2013-7-9

字段摘要
static BigInteger BIGINT_64_MAX_VALUE
           
static long INTEGER_32_MAX_VALUE
           
static int MEDIUMINT_24_MAX_VALUE
           
static int NULL_LENGTH
           
static int SMALLINT_16_MAX_VALUE
           
static int TINYINT_8_MAX_VALUE
           
 
构造方法摘要
ProtocolHelper()
           
 
方法摘要
static void fillBitMap(byte[] data, Position position, int columnsLength, BitSet bitSet)
          解析位图
static double getDoubleByLittleEndian(byte[] data, Position position)
          获取double,小端
static byte[] getFixedBytes(byte[] data, Position position, int length)
          获取指定的固定长度字节
static float getFloatByLittleEndian(byte[] data, Position position)
          获取float,小端
static int getIntByLittleEndian(byte[] data, Position position, int length)
          读取小端int
static byte[] getLengthCodedBytes(byte[] data, Position position)
          获取lengthCode bytes
static long getLengthCodedLength(byte[] data, Position position)
          获取coded length
static long getLongByLittleEndian(byte[] data, Position position, int length)
          读取小端long
static byte[] getNullTerminatedByte(byte[] data, Position position)
          读取以null结束的数据
static String getNullTerminatedString(byte[] data, Position position)
          获取以null结尾的string
static PacketHeader getProtocolHeader(byte[] data)
          解析协议头
static long getUnsignedIntByLittleEndian(byte[] data, Position position, int length)
          读取无符号int,使用long类型接收
static BigInteger getUnsignedLongByLittleEndian(byte[] data, Position position, int length)
          读取无符号long,使用BigInteger接收
static String toAsciiString(byte[] buffer)
          转换byte to ansi string
static String toAsciiString(byte[] buffer, int startPos, int length)
          转换byte to ansi string
static void writeIntWithByteByLittleEndian(int data, int byteCnt, ByteArrayOutputStream out)
          输出指定位数int
static void writeLengthCodedBinary(byte[] data, ByteArrayOutputStream out)
          输出length code bytes
static void writeNullTerminatedString(String str, ByteArrayOutputStream out)
          输出以null结尾的string
static void writeUnsignedIntByLittleEndian(int data, ByteArrayOutputStream out)
          输出小端无符号int
static void writeUnsignedLongByLittleEndian(long data, ByteArrayOutputStream out)
          输出小端无符号int
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

NULL_LENGTH

public static final int NULL_LENGTH
另请参见:
常量字段值

TINYINT_8_MAX_VALUE

public static final int TINYINT_8_MAX_VALUE
另请参见:
常量字段值

SMALLINT_16_MAX_VALUE

public static final int SMALLINT_16_MAX_VALUE
另请参见:
常量字段值

MEDIUMINT_24_MAX_VALUE

public static final int MEDIUMINT_24_MAX_VALUE
另请参见:
常量字段值

INTEGER_32_MAX_VALUE

public static final long INTEGER_32_MAX_VALUE
另请参见:
常量字段值

BIGINT_64_MAX_VALUE

public static final BigInteger BIGINT_64_MAX_VALUE
构造方法详细信息

ProtocolHelper

public ProtocolHelper()
方法详细信息

getProtocolHeader

public static PacketHeader getProtocolHeader(byte[] data)
解析协议头

参数:
data - bytes数据包
返回:
PacketHeader

getNullTerminatedByte

public static byte[] getNullTerminatedByte(byte[] data,
                                           Position position)
读取以null结束的数据

参数:
data - 指定数据包
position - 开始位置
返回:
bytes

getNullTerminatedString

public static String getNullTerminatedString(byte[] data,
                                             Position position)
获取以null结尾的string

参数:
data - 指定数据包
position - 开始位置
返回:
string

writeNullTerminatedString

public static void writeNullTerminatedString(String str,
                                             ByteArrayOutputStream out)
                                      throws IOException
输出以null结尾的string

参数:
str - string数据
out - 输出buffer
抛出:
IOException - io异常

getIntByLittleEndian

public static int getIntByLittleEndian(byte[] data,
                                       Position position,
                                       int length)
读取小端int

参数:
data - 数据包
position - 开始位置
length - 读取长度,<=4
返回:
int

getLongByLittleEndian

public static long getLongByLittleEndian(byte[] data,
                                         Position position,
                                         int length)
读取小端long

参数:
data - 数据包
position - 开始位置
length - 读取长度,<=8
返回:
long

getUnsignedIntByLittleEndian

public static long getUnsignedIntByLittleEndian(byte[] data,
                                                Position position,
                                                int length)
读取无符号int,使用long类型接收

参数:
data - 数据包
position - 开始位置
length - 长度,<=4
返回:
long

getUnsignedLongByLittleEndian

public static BigInteger getUnsignedLongByLittleEndian(byte[] data,
                                                       Position position,
                                                       int length)
读取无符号long,使用BigInteger接收

参数:
data - 数据包
position - 开始位置
length - 长度,=8
返回:
BigInteger

writeUnsignedIntByLittleEndian

public static void writeUnsignedIntByLittleEndian(int data,
                                                  ByteArrayOutputStream out)
输出小端无符号int

参数:
data - int 数据
out - ByteArrayOutputStream

writeUnsignedLongByLittleEndian

public static void writeUnsignedLongByLittleEndian(long data,
                                                   ByteArrayOutputStream out)
输出小端无符号int

参数:
data - int 数据
out - ByteArrayOutputStream

writeIntWithByteByLittleEndian

public static void writeIntWithByteByLittleEndian(int data,
                                                  int byteCnt,
                                                  ByteArrayOutputStream out)
输出指定位数int

参数:
data - int 数据
byteCnt - 指定位数
out - ByteArrayOutputStream

getFloatByLittleEndian

public static float getFloatByLittleEndian(byte[] data,
                                           Position position)
获取float,小端

参数:
data - 数据包
position - 开始位置
返回:
float

getDoubleByLittleEndian

public static double getDoubleByLittleEndian(byte[] data,
                                             Position position)
获取double,小端

参数:
data - 数据包
position - 开始位置
返回:
double

getFixedBytes

public static byte[] getFixedBytes(byte[] data,
                                   Position position,
                                   int length)
获取指定的固定长度字节

参数:
data - 数据包
position - 开始位置
length - 指定长度
返回:
bytes

writeLengthCodedBinary

public static void writeLengthCodedBinary(byte[] data,
                                          ByteArrayOutputStream out)
                                   throws IOException
输出length code bytes

参数:
data - 指定长度
out - ByteArrayOutputStream
抛出:
IOException - IOException

getLengthCodedBytes

public static byte[] getLengthCodedBytes(byte[] data,
                                         Position position)
获取lengthCode bytes

参数:
data - 数据包
position - 开始位置
返回:
bytes

getLengthCodedLength

public static long getLengthCodedLength(byte[] data,
                                        Position position)
获取coded length

参数:
data - 数据包
position - 开始位置
返回:
long

fillBitMap

public static void fillBitMap(byte[] data,
                              Position position,
                              int columnsLength,
                              BitSet bitSet)
解析位图

参数:
data - 数据包
position - 开始位置
columnsLength - 列数
bitSet - 位图

toAsciiString

public static final String toAsciiString(byte[] buffer,
                                         int startPos,
                                         int length)
转换byte to ansi string

参数:
buffer - 数据包
startPos - 开始位置
length - 长度
返回:
ansi string

toAsciiString

public static final String toAsciiString(byte[] buffer)
转换byte to ansi string

参数:
buffer - 数据包
返回:
ansi string


Copyright © 2016 neoremind. All rights reserved.