github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/proto/v2/pcodec/pack.go (about) 1 package pcodec 2 3 import ( 4 "encoding/binary" 5 "io" 6 ) 7 8 // 基础包 9 type Package struct { 10 Length int32 // 长度大小 11 PbMsg []byte // pb协议信息 12 } 13 14 func NewPack(data *[]byte) *Package { 15 return &Package{ 16 Length: int32(len(*data)), 17 PbMsg: *data, 18 } 19 } 20 21 // 打包 22 func (p *Package) Pack(writer io.Writer) error { 23 var err error 24 err = binary.Write(writer, binary.BigEndian, &p.Length) 25 err = binary.Write(writer, binary.BigEndian, &p.PbMsg) 26 return err 27 } 28 29 // 30 func (p *Package) Unpack(reader io.Reader) error { 31 var err error 32 err = binary.Read(reader, binary.BigEndian, &p.Length) 33 p.PbMsg = make([]byte, p.Length) // 创建大小 34 err = binary.Read(reader, binary.BigEndian, &p.PbMsg) 35 return err 36 }