2016-08-19 6 views
0

Я новичок в gRPC и пытаюсь использовать его в моей существующей системе. Тем не менее, я получаю эту неиспользуемую ошибку параметра при ее компиляции.Неиспользуемый сервер gRPCContext

server_grpc.cc:100:39: error: unused parameter ‘context’[-Werror=unused-parameter] 
    Status MyFunc(ServerContext* context, const QueryRequest* request, 

Возможно, параметр контекста используется в некоторых других случаях. Но в простом hello world тип примера не используется. Есть ли способ скомпилировать буфер протокола без генерации параметра ServerContext?

Я знаю, что могу заставить компилятор игнорировать предупреждающие сообщения. Но просто интересно, можно ли это сделать, не влияя на то, как моя система компилируется прямо сейчас.

Я хотел бы знать, как используется контекст? Было бы здорово, если бы кто-нибудь мог дать указания, как использовать этот контекст. Я мог бы использовать его в своей работе.

ответ

0

ServerContext предоставляется, ну, добавляйте контекст для каждого RPC, который вы получаете. Это позволит вам настроить некоторые аспекты RPC, такие как проверка подлинности или добавление метаданных к вашему ответу клиенту. Вы можете или не нуждаетесь в этом параметре, очевидно, в зависимости от ваших потребностей.

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

Status SayHello(ServerContext* context, const HelloRequest* request, 
        HelloReply* reply) override { 
    (void) context; // ignore that variable without causing warnings 
    std::string prefix("Hello "); 
    reply->set_message(prefix + request->name()); 
    return Status::OK; 
    } 

И вот как я бы предложите вам позаботиться об этом предупреждении в этом конкретном экземпляре, не заставляя весь проект не включать предупреждения.

+0

Спасибо за объяснение. Надеемся, что документация gRPC улучшит немного больше, показывая примеры использования этого Контекста. – damleak

Смежные вопросы