smartnoise-core
smartnoise-core copied to clipboard
gRPC service definitions
Are there plans to include gRPC service definitions for this package? I only see messages declared in api.proto
.
I don't currently have plans to add gRPC service definitions, but I'm not opposed to adding them. We don't currently use gRPC because, for my use case, gRPC hasn't been necessary- I'm just working with ffi. I see how these can be useful though.
I did a little research into this-- Looking at grpc-rs, we could switch the codec to prost: https://github.com/tikv/grpc-rs#feature-prost-codec-and-protobuf-codec
I see some additional necessary dependencies like Cmake, binutils, yasm, perl. On the face of it, this makes me prefer gating gRPC behind a feature flag to keep the dependencies down. The feature flag would need to be present in the validator crate's build process, so we can swap the prost build out with the grpc-rs build. What other details do you foresee in how you see this feature being integrated? Do you have opinions on exposing it as a separate crate, or via conditional compilation on an existing crate?
I agree, I don't think you need to pull in the grpc client / server library; but rather, since this repository is the source of truth for the api, it would be nice to have that api described in the proto definition, as a service with methods.
This would help leverage some other libraries eg to handle oauth tokens, generate REST wrappers, etc, when building a system.
In a non-network context, it might also make it easier to quickly create other language bindings as well. I could definitely imagine generating api.R
+ wrapper.c
directly from a service definition, for example. I think prost already provides callback hooks for that type of thing.