23 lines
690 B
Go
23 lines
690 B
Go
|
package encoding
|
||
|
|
||
|
import (
|
||
|
_ "google.golang.org/grpc/encoding/proto" // Ensure default codec is registered before our one.
|
||
|
"google.golang.org/protobuf/proto"
|
||
|
"google.golang.org/protobuf/protoadapt"
|
||
|
)
|
||
|
|
||
|
// messageV2Of converts v to a proto.Message.
|
||
|
// This is needed for this library to continue working in presence of external gRPC packages,
|
||
|
// such as opentelemetry gRPC exporter.
|
||
|
// Copied from https://github.com/grpc/grpc-go/blob/e524655becd8d4c7ba9e8687faef456e495e341e/encoding/proto/proto.go#L59.
|
||
|
func messageV2Of(v any) proto.Message {
|
||
|
switch v := v.(type) {
|
||
|
case protoadapt.MessageV1:
|
||
|
return protoadapt.MessageV2Of(v)
|
||
|
case protoadapt.MessageV2:
|
||
|
return v
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|