2015-03-05 10 views
8

Ich versuche, Google protobuf zu verwenden, und ich bin die nächsten Beschreibungen mit:Kann Protobuf-Service-Methode primitiven Typ zurückgeben?

message.proto Datei:

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

service.proto Datei:

import "message.proto"; 

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

Ich versuche, C++ - Quellen zu generieren und einen Fehler zu erhalten:

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

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

Muss ich nur benutzerdefinierte Typen zurückgeben? Werden primitive (wie bool oder string) unterstützt? Kann ich primitive Typen als Argument der Servicemethode verwenden (anstelle von Request in meinem Beispiel)?

+0

Wie wäre es mit 'Nachricht Bool { bool status = 1; } ' – Andy

Antwort

10

Nein, Sie können einen primitiven Typ weder als Anforderung noch als Antwort verwenden. Sie müssen einen Nachrichtentyp verwenden.

Dies ist wichtig, da ein Nachrichtentyp später erweitert werden kann, falls Sie einen neuen Parameter hinzufügen oder zusätzliche Daten zurückgeben möchten.

Verwandte Themen