34 lines
894 B
Go
34 lines
894 B
Go
/*
|
|
Copyright IBM Corp. All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package dispatcher
|
|
|
|
import (
|
|
"github.com/golang/protobuf/proto"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
// Protobuf defines the subset of protobuf lifecycle needs and allows
|
|
// for injection of mocked marshaling errors.
|
|
type Protobuf interface {
|
|
Marshal(msg proto.Message) (marshaled []byte, err error)
|
|
Unmarshal(marshaled []byte, msg proto.Message) error
|
|
}
|
|
|
|
// ProtobufImpl is the standard implementation to use for Protobuf
|
|
type ProtobufImpl struct{}
|
|
|
|
// Marshal passes through to proto.Marshal
|
|
func (p ProtobufImpl) Marshal(msg proto.Message) ([]byte, error) {
|
|
res, err := proto.Marshal(msg)
|
|
return res, errors.WithStack(err)
|
|
}
|
|
|
|
// Unmarshal passes through to proto.Unmarshal
|
|
func (p ProtobufImpl) Unmarshal(marshaled []byte, msg proto.Message) error {
|
|
return errors.WithStack(proto.Unmarshal(marshaled, msg))
|
|
}
|