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
required
et toujoursoptional
. Car un champrequired
peut évoluer et deveniroptional
au profit d'un autre. [packed=true]
deproto2
est 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 : 2018/08/18 15:16 de root