2015-03-05 1 views
8

Я пытаюсь использовать Google Protobuf и у меня возникают следующие описания:Может ли метод protobuf использовать метод примитивного примитива?

message.proto файл:

message Request { 
    required int32 id = 1; 
    optional string value = 2; 
} 

service.proto файл:

import "message.proto"; 

service Service { 
    rpc request (Request) returns (bool); 
} 

Я пытаюсь генерировать источники C++ и получать ошибку:

$ protoc service.proto --cpp_out=/tmp/proto/build

service.proto:4:40: Expected message type.

Нужно ли мне возвращать только определенные пользователем типы? Являются примитивными (например, bool или string) поддерживаются? Могу ли я использовать примитивные типы в качестве аргумента метода службы (вместо Request в моем примере)?

+0

Как насчет 'message Bool { bool status = 1; } ' – Andy

ответ

10

Нет, вы не можете использовать примитивный тип в качестве запроса или ответа. Вы должны использовать тип сообщения.

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