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  }