createTypeResolver creates a custom type resolver from compiled proto files. This resolver enables the protojson marshaler to resolve google.protobuf.Any type URLs like "type.googleapis.com/fuzz.Inner" to their actual message descriptors.
(files []protoreflect.FileDescriptor)
| 310 | // This resolver enables the protojson marshaler to resolve google.protobuf.Any type URLs |
| 311 | // like "type.googleapis.com/fuzz.Inner" to their actual message descriptors. |
| 312 | func createTypeResolver(files []protoreflect.FileDescriptor) *protoregistry.Types { |
| 313 | types := &protoregistry.Types{} |
| 314 | |
| 315 | // Register all message types from all files |
| 316 | for _, file := range files { |
| 317 | registerMessagesFromFile(types, file) |
| 318 | } |
| 319 | |
| 320 | return types |
| 321 | } // registerMessagesFromFile recursively registers all message types from a file descriptor |
| 322 | func registerMessagesFromFile(types *protoregistry.Types, file protoreflect.FileDescriptor) { |
| 323 | messages := file.Messages() |
| 324 | for i := 0; i < messages.Len(); i++ { |