rogchap / wombat

Cross platform gRPC client
MIT License
1.38k stars 53 forks source link

Support `google.protobuf.Value` #100

Open shhac opened 1 year ago

shhac commented 1 year ago

I'm working with gRPC, field masks and google.protobuf.Value, and the fact that it is cyclic is making Wombat unusable 😞

It is rare that people use a cyclic structure to depths of more than 4 or 5, so would it be possible to change the error on cyclic types to instead depth count and "snip" when it reaches some reasonable/configured depth (e.g. 7) rather than throwing away the whole graph?

import "google/protobuf/field_mask.proto";
import "google/protobuf/struct.proto";

service ExampleService {
  rpc Example(ExampleRequest) returns (ExampleResponse);
}

message ExampleRequest {
  google.protobuf.FieldMask field_mask = 1;
  google.protobuf.Value data = 2;
}

message ExampleResponse {
  bool success = 1;
}
shhac commented 2 weeks ago

I made a PR with the idea around depth 7, but I'm not sure how to actually run go app to confirm this is the behaviour we'd want (go run . resulted in the window opening but blank)

https://github.com/rogchap/wombat/pull/111