2015-04-16 2 views
12

Я пытаюсь описать службу RPC с использованием протокола Буферы компании Googleметод Protobuf RPC Service без параметров

service WhoamiService { 
    rpc WhoAreYou() returns (Whoami) {} 
} 

message Whoami { 
    optional bytes request_id = 1; 
    optional string hostname = 2; 
    optional string message = 3; 
} 

Когда я пытаюсь скомпилировать это определение, я получаю сообщение об ошибке Expected type name указывающую на WhoAreYou() части.

Он отлично работает, если я заменяю WhoAreYou() на WhoAreYou(Whoami), но в этом случае для метода не требуются какие-либо параметры. Есть ли способ сделать это или он просто не поддерживается?

+0

посетители этой страницы также могут быть заинтересованы в https://stackoverflow.com/a/31772973/10278 и google.protobuf.Empty – pestophagous

ответ

20

Вы должны указать тип ввода. Если вы не хотите метод принимать какие-либо параметры, определить пустой тип сообщения, как:

message WhoAreYouParams {} 

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

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