Как написать клиент/сервер gRPC на C?

У меня есть программа, написанная на C, и я хочу включить в нее gRPC. Однако API для gRPC написан на C++.

Я посмотрел здесь и заработал foo_client и foo_server. https://github.com/Juniper/grpc-c/tree/master/examples

Однако клиент C несовместим с моим сервером gRPC C++. Они не будут разговаривать друг с другом. Я полагаю, это потому, что я использую последнюю версию gRPC, в которой используется protocbuf версии 3.2.0. А grpc-c от Juniper использует более старую версию gRPC, в которой используется protocbuf версии 3.0.0.

Таким образом, версия Juniper на C, похоже, не работает с новым gRPC. Я знаю, что низкоуровневый C API gRPC должен быть здесь: https://github.com/grpc/grpc/blob/master/include/grpc/grpc.h Но у меня возникли трудности с его реализацией. Может ли кто-нибудь помочь мне понять это?

Я давно не программировал на C, поэтому немного заржавел.


person cyanbreak    schedule 20.06.2018    source источник


Ответы (1)


Если вы используете основную библиотеку gRPC напрямую, вам потребуется выполнить собственную сериализацию и работать с низкоуровневыми операциями, описанными в https://github.com/grpc/grpc/blob/master/include./grpc/impl/codegen/grpc_types.h.

Если у вас есть какие-то конкретные вопросы, мы будем рады помочь, но если это разовая вещь, может быть проще просто решить проблему несовместимости версий или, может быть, просто обернуть реализацию C++ интерфейсом C.

person Yash Tibrewal    schedule 20.06.2018