2 Star 2 Fork 2

tym_hmm/mysql-mydumper

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
eof.go 1.51 KB
一键复制 编辑 原始数据 按行查看 历史
天蝎儿 提交于 2021-12-16 21:06 +08:00 . 完成底层封装
/*
* go-mysqlstack
* xelabs.org
*
* Copyright (c) XeLabs
* GPL License
*
*/
package proto
import (
"gitee.com/tym_hmm/mysql-mydumper/extend/mysql/sqldb"
"gitee.com/tym_hmm/mysql-mydumper/extend/mysql/sqlparser/depends/common"
)
const (
// EOF_PACKET is the EOF packet.
EOF_PACKET byte = 0xfe
)
// EOF used for EOF packet.
type EOF struct {
Header byte // 0x00
Warnings uint16
StatusFlags uint16
}
// UnPackEOF used to unpack the EOF packet.
// https://dev.mysql.com/doc/internals/en/packet-EOF_Packet.html
// This method unsed.
func UnPackEOF(data []byte) (*EOF, error) {
var err error
e := &EOF{}
buf := common.ReadBuffer(data)
// header
if e.Header, err = buf.ReadU8(); err != nil {
return nil, sqldb.NewSQLErrorf(sqldb.ER_MALFORMED_PACKET, "invalid eof packet header: %v", data)
}
if e.Header != EOF_PACKET {
return nil, sqldb.NewSQLErrorf(sqldb.ER_MALFORMED_PACKET, "invalid oeof packet header: %v", e.Header)
}
// Warnings
if e.Warnings, err = buf.ReadU16(); err != nil {
return nil, sqldb.NewSQLErrorf(sqldb.ER_MALFORMED_PACKET, "invalid eof packet warnings: %v", data)
}
// Status
if e.StatusFlags, err = buf.ReadU16(); err != nil {
return nil, sqldb.NewSQLErrorf(sqldb.ER_MALFORMED_PACKET, "invalid eof packet statusflags: %v", data)
}
return e, nil
}
// PackEOF used to pack the EOF packet.
func PackEOF(e *EOF) []byte {
buf := common.NewBuffer(64)
// EOF
buf.WriteU8(EOF_PACKET)
// warnings
buf.WriteU16(e.Warnings)
// status
buf.WriteU16(e.StatusFlags)
return buf.Datas()
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/tym_hmm/mysql-mydumper.git
git@gitee.com:tym_hmm/mysql-mydumper.git
tym_hmm
mysql-mydumper
mysql-mydumper
v1.0.3

搜索帮助