Как предоставить услугу gRP C, известную только во время выполнения? - PullRequest
0 голосов
/ 29 мая 2020

Предположим, у меня есть определение службы 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) {
…
}
...