convert.go raw

   1  // Copyright 2023 The Go Authors. All rights reserved.
   2  // Use of this source code is governed by a BSD-style
   3  // license that can be found in the LICENSE file.
   4  
   5  // Package protoadapt bridges the original and new proto APIs.
   6  package protoadapt
   7  
   8  import (
   9  	"google.golang.org/protobuf/proto"
  10  	"google.golang.org/protobuf/runtime/protoiface"
  11  	"google.golang.org/protobuf/runtime/protoimpl"
  12  )
  13  
  14  // MessageV1 is the original [github.com/golang/protobuf/proto.Message] type.
  15  type MessageV1 = protoiface.MessageV1
  16  
  17  // MessageV2 is the [google.golang.org/protobuf/proto.Message] type used by the
  18  // current [google.golang.org/protobuf] module, adding support for reflection.
  19  type MessageV2 = proto.Message
  20  
  21  // MessageV1Of converts a v2 message to a v1 message.
  22  // It returns nil if m is nil.
  23  func MessageV1Of(m MessageV2) MessageV1 {
  24  	return protoimpl.X.ProtoMessageV1Of(m)
  25  }
  26  
  27  // MessageV2Of converts a v1 message to a v2 message.
  28  // It returns nil if m is nil.
  29  func MessageV2Of(m MessageV1) MessageV2 {
  30  	return protoimpl.X.ProtoMessageV2Of(m)
  31  }
  32