prog:protobuf
Ceci est une ancienne révision du document !
Protocol Buffers
Cas simple
Le format de base est simple. Language Guide | Protocol Buffers
Ici, on crée deux messages AddSubscriber et RemoveSubscriber pour le pattern publisher. Dans chaque message, chaque champ doit avoir un identifiant numéraire.
syntax = "proto3";
package llgc.protobuf.pattern.publisher;
message AddSubscriber
{
optional uint32 id_message = 1;
}
message RemoveSubscriber
{
optional uint32 id_message = 1;
}
Import
Il est possible de créer des structures plus complexes avec des sous niveaux et d'importer les messages d'autres fichiers.
syntax = "proto3";
import "pattern_publisher.proto";
package llgc.protobuf.test;
message Tcp
{
message Msg
{
message Test
{
}
oneof data
{
optional llgc.protobuf.pattern.publisher.AddSubscriber add_subscriber = 1;
optional llgc.protobuf.pattern.publisher.RemoveSubscriber remove_subscriber = 2;
optional Test test = 3;
}
}
repeated Msg msg = 1;
}
Évolutions
- Si un champ n'est définitivement plus utilisé, remplacer la ligne avec son identifiant par
reserved id;; - Les identifiants entre 1 et 15 occupent un octet. Ils sont à privilégier pour les champs répétées. Ceux entre 16 et 2047 sont sur deux octets.
- Pour des raisons historiques et de maintenance, il est déconseillé d'utiliser un champ
requiredet toujoursoptional. Car un champrequiredpeut évoluer et deveniroptionalau profit d'un autre. [packed=true]deproto2est par défaut dans toutes les répétitions dansproto3.- Si un champ devient déprécié, ajouter
[deprecated=true].
prog/protobuf.1534598174.txt.gz · Dernière modification : de root
