github.com/cosmos/cosmos-sdk@v0.50.10/server/grpc/gogoreflection/fix_registration.go (about)

     1  package gogoreflection
     2  
     3  import (
     4  	"reflect"
     5  
     6  	_ "github.com/cosmos/gogoproto/gogoproto" // required so it does register the gogoproto file descriptor
     7  	gogoproto "github.com/cosmos/gogoproto/proto"
     8  
     9  	_ "github.com/cosmos/cosmos-proto" // look above
    10  	"github.com/golang/protobuf/proto" //nolint:staticcheck // migrate in a future pr
    11  )
    12  
    13  func getFileDescriptor(filePath string) []byte {
    14  	// Since we got well known descriptors which are not registered into gogoproto
    15  	// registry but are instead registered into the proto one, we need to check both.
    16  	fd := gogoproto.FileDescriptor(filePath)
    17  	if len(fd) != 0 {
    18  		return fd
    19  	}
    20  
    21  	return proto.FileDescriptor(filePath) //nolint:staticcheck // keep for backward compatibility
    22  }
    23  
    24  func getMessageType(name string) reflect.Type {
    25  	typ := gogoproto.MessageType(name)
    26  	if typ != nil {
    27  		return typ
    28  	}
    29  
    30  	return proto.MessageType(name) //nolint:staticcheck // keep for backward compatibility
    31  }
    32  
    33  func getExtension(extID int32, m proto.Message) *gogoproto.ExtensionDesc {
    34  	// check first in gogoproto registry
    35  	for id, desc := range gogoproto.RegisteredExtensions(m) {
    36  		if id == extID {
    37  			return desc
    38  		}
    39  	}
    40  
    41  	// check into proto registry
    42  	for id, desc := range proto.RegisteredExtensions(m) { //nolint:staticcheck // keep for backward compatibility
    43  		if id == extID {
    44  			return &gogoproto.ExtensionDesc{
    45  				ExtendedType:  desc.ExtendedType,  //nolint:staticcheck // keep for backward compatibility
    46  				ExtensionType: desc.ExtensionType, //nolint:staticcheck // keep for backward compatibility
    47  				Field:         desc.Field,         //nolint:staticcheck // keep for backward compatibility
    48  				Name:          desc.Name,          //nolint:staticcheck // keep for backward compatibility
    49  				Tag:           desc.Tag,           //nolint:staticcheck // keep for backward compatibility
    50  				Filename:      desc.Filename,      //nolint:staticcheck // keep for backward compatibility
    51  			}
    52  		}
    53  	}
    54  
    55  	return nil
    56  }
    57  
    58  func getExtensionsNumbers(m proto.Message) []int32 {
    59  	gogoProtoExts := gogoproto.RegisteredExtensions(m)
    60  
    61  	out := make([]int32, 0, len(gogoProtoExts))
    62  	for id := range gogoProtoExts {
    63  		out = append(out, id)
    64  	}
    65  	if len(out) != 0 {
    66  		return out
    67  	}
    68  
    69  	protoExts := proto.RegisteredExtensions(m) //nolint:staticcheck // kept for backwards compatibility
    70  	out = make([]int32, 0, len(protoExts))
    71  	for id := range protoExts {
    72  		out = append(out, id)
    73  	}
    74  
    75  	return out
    76  }