Files
go-pkg/serialize/proto.go
2022-03-04 17:24:23 +08:00

30 lines
553 B
Go

package serialize
import (
"errors"
"github.com/golang/protobuf/proto"
)
type protoSerializer struct{}
func Proto() Serializer {
return protoSerializer{}
}
func (ps protoSerializer) Encode(v interface{}) (data []byte, err error) {
if m, ok := v.(proto.Message); ok {
return proto.Marshal(m)
}
err = errors.New("not proto.Message")
return
}
func (ps protoSerializer) Decode(data []byte, v interface{}) (err error) {
if m, ok := v.(proto.Message); ok {
return proto.Unmarshal(data, m)
}
err = errors.New("not proto.Message")
return
}