Closed zhihuizhang17 closed 8 months ago
This PR implements extension support for proto2 by:
Protobuf.Extension.get_extension_props_by_tag
convert_to_field_descriptor
process_extensions
xxxExtension.proto
Agent.files
:all_extension_numbers_of_type
Agent.extensions
%Agent{ "extensions": { "helloworld.HelloReply": [100, 102, 502] }, "files": { "helloworld.HelloReplyExtension.proto": <<binary>>, "helloworld.HelloReply.proto": <<binary>> } }
Test cases run with proto2.
:file_containing_symbol
> grpcurl -plaintext localhost:50051 describe .helloworld.HelloReply
helloworld.HelloReply is a message: message HelloReply { optional string message = 1; optional .google.protobuf.Timestamp today = 2; extensions 100 to 199, 500 to 1000; }
+ test `:all_extension_numbers_of_type` and `file_containing_extension`
grpcurl -plaintext -format text -d 'name: "gRPCurl"' localhost:50051 helloworld.Greeter.SayHello
message: "Hello gRPCurl" today: < seconds:1702870608 nanos:991037583
[helloworld.extend_message]: "extended message" id: 1 name: "name"
[helloworld.extend_message]: "extended message"
id: 1 name: "name"
Summary
This PR implements extension support for proto2 by:
Protobuf.Extension.get_extension_props_by_tag
to query extensions by type and indexconvert_to_field_descriptor
to convert extension props to field descriptorsprocess_extensions
to generate file descriptors for extensionsxxxExtension.proto
file descriptors inAgent.files
:all_extension_numbers_of_type
request, tracking type extension field numbers inAgent.extensions
, such asUnit test
Test cases run with proto2.
:file_containing_symbol
helloworld.HelloReply is a message: message HelloReply { optional string message = 1; optional .google.protobuf.Timestamp today = 2; extensions 100 to 199, 500 to 1000; }
message: "Hello gRPCurl" today: < seconds:1702870608 nanos:991037583