Files
natpass/code/network/encoding/proto/proto.go
T
lwch bc5d709dcb 1. 增加代码注释
2. 增加通用encoding层
2023-02-01 17:08:09 +08:00

34 lines
693 B
Go

package proto
import (
"fmt"
"github.com/lwch/natpass/code/network/encoding"
"google.golang.org/protobuf/proto"
)
type codec struct{}
// New create protobuf codec
func New() encoding.Codec {
return &codec{}
}
// Marshal protobuf marshal
func (*codec) Marshal(v interface{}) ([]byte, error) {
vv, ok := v.(proto.Message)
if !ok {
return nil, fmt.Errorf("invalid value type, want proto.Message, got %T", v)
}
return proto.Marshal(vv)
}
// Unmarshal protobuf unmarshal
func (*codec) Unmarshal(data []byte, v interface{}) error {
vv, ok := v.(proto.Message)
if !ok {
return fmt.Errorf("invalid value type, want proto.Message, got %T", v)
}
return proto.Unmarshal(data, vv)
}