diff --git a/.travis.yml b/.travis.yml index d26a9c52..8f880e90 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,8 +6,8 @@ env: before_script: - go install github.com/golangci/golangci-lint/cmd/golangci-lint script: - - golangci-lint run || true - - go test -v -race ./... || true + # - golangci-lint run || true + # - go test -v -race ./... || true - go test -v ./... notifications: slack: diff --git a/client/grpc/codec.go b/client/grpc/codec.go index 4b224a71..ff377690 100644 --- a/client/grpc/codec.go +++ b/client/grpc/codec.go @@ -69,15 +69,21 @@ func (w wrapCodec) Unmarshal(data []byte, v interface{}) error { } func (protoCodec) Marshal(v interface{}) ([]byte, error) { - b, ok := v.(*bytes.Frame) - if ok { - return b.Data, nil + switch m := v.(type) { + case *bytes.Frame: + return m.Data, nil + case proto.Message: + return proto.Marshal(m) } - return proto.Marshal(v.(proto.Message)) + return nil, fmt.Errorf("failed to marshal: %v is not type of *bytes.Frame or proto.Message", v) } func (protoCodec) Unmarshal(data []byte, v interface{}) error { - return proto.Unmarshal(data, v.(proto.Message)) + m, ok := v.(proto.Message) + if !ok { + return fmt.Errorf("failed to unmarshal: %v is not type of proto.Message", v) + } + return proto.Unmarshal(data, m) } func (protoCodec) Name() string {