rossvideo / Catena

Other
5 stars 1 forks source link

Investigate whether Embedded Proto only supports MessageLite #62

Open mejohnnaylor opened 7 months ago

mejohnnaylor commented 7 months ago

"full metal" protobuf provides reflection and JSON serialization.

MessageLite protobuf doesn't.

Probably need a Lite and Full-Metal version of the SDK.

"Reflection" in this context indicates the ability of a GRPC client (such as grpc_cli) to query a gRPC service for it's service definition.

e.g.

$ ./grpc_cli ls localhost:5255 -l
filename: service.proto
package: catena;
service CatenaService {
  rpc DeviceRequest(catena.DeviceRequestPayload) returns (stream catena.DeviceComponent) {}
  rpc ExecuteCommand(stream catena.ExecuteCommandPayload) returns (stream catena.CommandResponse) {}
  rpc ExternalObjectRequest(catena.ExternalObjectRequestPayload) returns (stream catena.ExternalObjectPayload) {}
  rpc BasicParamInfoRequest(catena.BasicParamInfoRequestPayload) returns (stream catena.BasicParamInfoResponse) {}
  rpc SetValue(catena.SetValuePayload) returns (google.protobuf.Empty) {}
  rpc GetValue(catena.GetValuePayload) returns (catena.Value) {}
  rpc MultiSetValue(catena.MultiSetValuePayload) returns (google.protobuf.Empty) {}
  rpc UpdateSubscriptions(catena.UpdateSubscriptionsPayload) returns (stream catena.DeviceComponent.ComponentParam) {}
  rpc GetParam(catena.GetParamPayload) returns (stream catena.DeviceComponent.ComponentParam) {}
  rpc Connect(catena.ConnectPayload) returns (stream catena.PushUpdates) {}
  rpc AddLanguage(catena.AddLanguagePayload) returns (catena.GeneralResponse) {}
  rpc LanguagePackRequest(catena.LanguagePackRequestPayload) returns (catena.DeviceComponent.ComponentLanguagePack) {}
  rpc ListLanguages(catena.GeneralRequest) returns (catena.LanguageList) {}
}

filename: src/proto/grpc/reflection/v1/reflection.proto
package: grpc.reflection.v1;
service ServerReflection {
  rpc ServerReflectionInfo(stream grpc.reflection.v1.ServerReflectionRequest) returns (stream grpc.reflection.v1.ServerReflectionResponse) {}
}

filename: src/proto/grpc/reflection/v1alpha/reflection.proto
package: grpc.reflection.v1alpha;
service ServerReflection {
  rpc ServerReflectionInfo(stream grpc.reflection.v1alpha.ServerReflectionRequest) returns (stream grpc.reflection.v1alpha.ServerReflectionResponse) {}
}

will list out the service at localhost:5055, complete with message types.