2015-03-05 18 views
8

Próbuję użyć Google Protobuf i jestem posiadające następujące opisy:Czy metoda obsługi protokołu protobuf może zwrócić typ pierwotny?

message.proto file:

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

service.proto file:

import "message.proto"; 

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

Próbuję wygenerować źródła C++ i uzyskać błąd:

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

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

Czy muszę zwracać tylko typy zdefiniowane przez użytkownika? Czy prymitywny (jak bool lub string) jest obsługiwany? Czy mogę używać typów pierwotnych jako argumentów metody usługi (w moim przykładzie zamiast Request)?

+0

Jak o 'wiadomość Bool { status bool = 1; } ' – Andy

Odpowiedz

10

Nie, nie można używać zarówno jako prymitywny typ żądania lub odpowiedzi. Musisz użyć typu wiadomości.

Jest to ważne, ponieważ typ wiadomości może zostać przedłużony później, w przypadku, gdy zdecydujesz, że chcesz dodać nowy parametr lub powrócić jakieś dodatkowe dane.

Powiązane problemy