types

package
v0.53.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 29, 2025 License: Apache-2.0 Imports: 10 Imported by: 18,455

Documentation

Overview

Package types defines the InterfaceRegistry type as well as aliases for types that now live in the github.com/cosmos/gogoproto/types/any package for backwards compatibility with legacy code.

Index

Constants

This section is empty.

Variables

View Source
var (

	// MaxUnpackAnySubCalls extension point that defines the maximum number of sub-calls allowed during the unpacking
	// process of protobuf Any messages.
	MaxUnpackAnySubCalls = 100

	// MaxUnpackAnyRecursionDepth extension point that defines the maximum allowed recursion depth during protobuf Any
	// message unpacking.
	MaxUnpackAnyRecursionDepth = 10
)
View Source
var Debug = true

Deprecated: this is no longer used for anything.

NewAnyWithValue is an alias for github.com/cosmos/gogoproto/types/any.NewAnyWithCacheWithValue.

UnsafePackAny is an alias for github.com/cosmos/gogoproto/types/any.UnsafePackAnyWithCache.

Functions

func MsgTypeURL added in v0.50.0

func MsgTypeURL(msg proto.Message) string

MsgTypeURL returns the TypeURL of a `sdk.Msg`.

func UnpackInterfaces

func UnpackInterfaces(x interface{}, unpacker gogoprotoany.AnyUnpacker) error

UnpackInterfaces is a convenience function that calls UnpackInterfaces on x if x implements UnpackInterfacesMessage

Types

type AminoJSONPacker

type AminoJSONPacker = gogoany.AminoJSONPacker

AminoJSONPacker is an alias for github.com/cosmos/gogoproto/types/any.AminoJSONPacker.

type AminoJSONUnpacker

type AminoJSONUnpacker = gogoany.AminoJSONUnpacker

AminoJSONUnpacker is an alias for github.com/cosmos/gogoproto/types/any.AminoJSONUnpacker.

type AminoPacker

type AminoPacker = gogoany.AminoPacker

AminoPacker is an alias for github.com/cosmos/gogoproto/types/any.AminoPacker.

type AminoUnpacker

type AminoUnpacker = gogoany.AminoUnpacker

AminoUnpacker is an alias for github.com/cosmos/gogoproto/types/any.AminoUnpacker.

type Any

type Any = gogoany.Any

Any is an alias for github.com/cosmos/gogoproto/types/any.Any.

type AnyUnpacker

type AnyUnpacker = gogoprotoany.AnyUnpacker

AnyUnpacker is an alias for github.com/cosmos/gogoproto/types/any.AnyUnpacker.

type InterfaceRegistry

type InterfaceRegistry interface {
	gogoprotoany.AnyUnpacker
	jsonpb.AnyResolver

	// RegisterInterface associates protoName as the public name for the
	// interface passed in as iface. This is to be used primarily to create
	// a public facing registry of interface implementations for clients.
	// protoName should be a well-chosen public facing name that remains stable.
	// RegisterInterface takes an optional list of impls to be registered
	// as implementations of iface.
	//
	// Ex:
	//   registry.RegisterInterface("cosmos.base.v1beta1.Msg", (*sdk.Msg)(nil))
	RegisterInterface(protoName string, iface any, impls ...proto.Message)

	// RegisterImplementations registers impls as concrete implementations of
	// the interface iface.
	//
	// Ex:
	//  registry.RegisterImplementations((*sdk.Msg)(nil), &MsgSend{}, &MsgMultiSend{})
	RegisterImplementations(iface any, impls ...proto.Message)

	// ListAllInterfaces list the type URLs of all registered interfaces.
	ListAllInterfaces() []string

	// ListImplementations lists the valid type URLs for the given interface name that can be used
	// for the provided interface type URL.
	ListImplementations(ifaceTypeURL string) []string

	// EnsureRegistered ensures there is a registered interface for the given concrete type.
	EnsureRegistered(iface any) error

	protodesc.Resolver

	// RangeFiles iterates over all registered files and calls f on each one. This
	// implements the part of protoregistry.Files that is needed for reflecting over
	// the entire FileDescriptorSet.
	RangeFiles(f func(protoreflect.FileDescriptor) bool)

	SigningContext() *signing.Context
	// contains filtered or unexported methods
}

InterfaceRegistry provides a mechanism for registering interfaces and implementations that can be safely unpacked from Any

func NewInterfaceRegistry

func NewInterfaceRegistry() InterfaceRegistry

NewInterfaceRegistry returns a new InterfaceRegistry

func NewInterfaceRegistryWithOptions added in v0.50.0

func NewInterfaceRegistryWithOptions(options InterfaceRegistryOptions) (InterfaceRegistry, error)

NewInterfaceRegistryWithOptions returns a new InterfaceRegistry with the given options.

type InterfaceRegistryOptions added in v0.50.0

type InterfaceRegistryOptions struct {
	// ProtoFiles is the set of files to use for the registry. It is required.
	ProtoFiles signing.ProtoFileResolver

	// SigningOptions are the signing options to use for the registry.
	SigningOptions signing.Options
}

InterfaceRegistryOptions are options for creating a new InterfaceRegistry.

type ProtoJSONPacker added in v0.40.0

type ProtoJSONPacker = gogoany.ProtoJSONPacker

ProtoJSONPacker is an alias for github.com/cosmos/gogoproto/types/any.ProtoJSONPacker.

type UnpackInterfacesMessage

type UnpackInterfacesMessage interface {
	// UnpackInterfaces is implemented in order to unpack values packed within
	// Any's using the AnyUnpacker. It should generally be implemented as
	// follows:
	//   func (s *MyStruct) UnpackInterfaces(unpacker AnyUnpacker) error {
	//		var x AnyInterface
	//		// where X is an Any field on MyStruct
	//		err := unpacker.UnpackAny(s.X, &x)
	//		if err != nil {
	//			return nil
	//		}
	//		// where Y is a field on MyStruct that implements UnpackInterfacesMessage itself
	//		err = s.Y.UnpackInterfaces(unpacker)
	//		if err != nil {
	//			return nil
	//		}
	//		return nil
	//	 }
	UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error
}

UnpackInterfacesMessage is meant to extend protobuf types (which implement proto.Message) to support a post-deserialization phase which unpacks types packed within Any's using the whitelist provided by AnyUnpacker

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL