Wie können wir eine Variant-Nachricht (einen von wenigen Nachrichtentypen) in eine Protobuf-Nachricht einfügen?

7

Wie können wir eine abweichende Nachricht (einen von wenigen Nachrichtentypen) in eine protobuf-Nachricht einfügen?

%Vor%     
Tom Fishman 07.01.2014, 11:47
quelle

2 Antworten

20

Sie müssen es so machen:

%Vor%

Wenn es viele Varianten gibt, möchten Sie vielleicht auch ein Tag-Feld hinzufügen, damit Sie has_*() nicht für jedes einzelne überprüfen müssen.

Dies ist in den Protobuf-Dokumenten beschrieben: Ссылка

PS. Diese fehlende Funktion von Protobufs ist in Cap'n Proto , einem neuen Serialisierungssystem des gleichen Autors (mir), behoben: Cap'n Proto implementiert "Gewerkschaften" zu diesem Zweck. Ich habe auch in Protobufs Gewerkschaften implementiert, bevor ich Google verließ, aber es gelang mir nicht, meine Änderung in die Hauptleitung zu integrieren, bevor ich ging. Es tut uns leid. : (

EDIT: Es sieht so aus, als ob das Protobuf-Team meine Änderung zusammengeführt und Version 2.6.0 damit veröffentlicht hat. :) Siehe die Deklaration oneof .

    
Kenton Varda 08.01.2014, 01:23
quelle
13

Sehen Sie sich das neue Feature oneof in Version 2.6 an: Ссылка

Sie können jetzt etwas wie folgt machen:

%Vor%

Felder im selben oneof teilen sich den Speicher und nur ein Feld kann gleichzeitig gesetzt werden.

    
yellavon 03.09.2014 14:14
quelle

Tags und Links