Предположим, у меня есть определение службы gRP C:
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
(пример взят из https://grpc.io/docs/guides/). Когда определение службы известно во время компиляции, я могу просто сделать
s := grpc.NewServer()
s.RegisterGreeterServer(s, impl)
s.Serve(lis)
, где impl
- моя реализация.
Я ищу способ сделать эквивалентную вещь, когда определение службы неизвестно во время компиляции.
Если это поможет, вы можете предположить, что у меня есть такая функция (для простоты предположим, что у меня в службе только унарные вызовы):
func genericImpl(
ctx context.Context,
method protoreflect.MethodDescriptor,
in protoreflect.Message,
) (out protoreflect.Message, err error) {
…
}