tbotd/vendor/src/github.com/asdine/storm/codec/protobuf/protobuf.go

32 lines
664 B
Go

package protobuf
import (
"errors"
"github.com/golang/protobuf/proto"
)
// More details on Protocol Buffers https://github.com/golang/protobuf
var (
Codec = new(protobufCodec)
errNotProtocolBufferMessage = errors.New("value isn't a Protocol Buffers Message")
)
type protobufCodec int
func (c protobufCodec) Encode(v interface{}) ([]byte, error) {
message, ok := v.(proto.Message)
if !ok {
return nil, errNotProtocolBufferMessage
}
return proto.Marshal(message)
}
func (c protobufCodec) Decode(b []byte, v interface{}) error {
message, ok := v.(proto.Message)
if !ok {
return errNotProtocolBufferMessage
}
return proto.Unmarshal(b, message)
}