46 lines
820 B
Go
46 lines
820 B
Go
// Gbp
|
|
package netlib
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"google.golang.org/protobuf/proto"
|
|
)
|
|
|
|
var ErrorTypeNotFit = errors.New("packet not proto.Message type")
|
|
|
|
var Gpb = &GbpEncDecoder{}
|
|
|
|
type GbpEncDecoder struct {
|
|
}
|
|
|
|
func (this *GbpEncDecoder) Unmarshal(buf []byte, pack interface{}) error {
|
|
if protomsg, ok := pack.(proto.Message); ok {
|
|
err := proto.Unmarshal(buf, protomsg)
|
|
if err != nil {
|
|
return err
|
|
} else {
|
|
return nil
|
|
}
|
|
}
|
|
|
|
return ErrorTypeNotFit
|
|
}
|
|
|
|
func (this *GbpEncDecoder) Marshal(pack interface{}) ([]byte, error) {
|
|
if protomsg, ok := pack.(proto.Message); ok {
|
|
return proto.Marshal(protomsg)
|
|
}
|
|
|
|
return nil, ErrorTypeNotFit
|
|
}
|
|
|
|
func init() {
|
|
RegisteEncoding(EncodingTypeGPB, Gpb, func(pack interface{}) int {
|
|
if _, ok := pack.(proto.Message); ok {
|
|
return EncodingTypeGPB
|
|
}
|
|
return -1
|
|
})
|
|
}
|