marshal_any.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. /*
  2. *
  3. * Copyright 2021 gRPC authors.
  4. *
  5. * Licensed under the Apache License, Version 2.0 (the "License");
  6. * you may not use this file except in compliance with the License.
  7. * You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. */
  17. package testutils
  18. import (
  19. "fmt"
  20. "github.com/golang/protobuf/proto"
  21. "github.com/golang/protobuf/ptypes"
  22. "google.golang.org/protobuf/types/known/anypb"
  23. )
  24. // MarshalAny is a convenience function to marshal protobuf messages into any
  25. // protos. It will panic if the marshaling fails.
  26. func MarshalAny(m proto.Message) *anypb.Any {
  27. a, err := ptypes.MarshalAny(m)
  28. if err != nil {
  29. panic(fmt.Sprintf("ptypes.MarshalAny(%+v) failed: %v", m, err))
  30. }
  31. return a
  32. }