Outils pour utilisateurs

Outils du site


prog:protobuf

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
prog:protobuf [2018/08/18 17:36] – [gRPC] : oubli de faire un aperçu dans le client rootprog:protobuf [2018/09/22 22:59] (Version actuelle) – [Protocol Buffers] : ajout de "Emplacement du .pb.* généré" root
Ligne 1: Ligne 1:
-====Protocol Buffers==== +=====Protocol Buffers===== 
-===Cas simple===+====Cas simple====
 Le format de base est simple. [[https://developers.google.com/protocol-buffers/docs/proto|Language Guide Proto 2 | Protocol Buffers ]], [[https://developers.google.com/protocol-buffers/docs/proto3|Language Guide Proto 3 | Protocol Buffers ]] Le format de base est simple. [[https://developers.google.com/protocol-buffers/docs/proto|Language Guide Proto 2 | Protocol Buffers ]], [[https://developers.google.com/protocol-buffers/docs/proto3|Language Guide Proto 3 | Protocol Buffers ]]
  
Ligne 21: Ligne 21:
 </code> </code>
  
-===Import===+====Import====
 Il est possible de créer des structures plus complexes avec des sous niveaux et d'importer les messages d'autres fichiers. Il est possible de créer des structures plus complexes avec des sous niveaux et d'importer les messages d'autres fichiers.
  
Ligne 51: Ligne 51:
 </code> </code>
  
-===Évolutions===+====Subtilités==== 
 +===Emplacement du .pb.* généré=== 
 +Si le fichier ''.proto'' est dans un sous dossier, cela dépend le fichier est dans un ''-I''
 + 
 +Généré dans le dossier ''tests/pattern/abstract_factory''
 +  /usr/bin/protoc --cpp_out=tests -I tests tests/pattern/abstract_factory/abstract_factory.proto 
 + 
 +Généré dans ''tests''
 +  /usr/bin/protoc --cpp_out=tests -I tests/pattern/abstract_factory tests/pattern/abstract_factory/abstract_factory.proto 
 + 
 +====Évolutions====
   * proto2 :   * proto2 :
     * Il faut toujours mettre ''optional'' pour les champs non répétés. Il est déconseillé d'utiliser un champ ''required'' car un champ peut évoluer et devenir ''optional'' au profit d'un autre. Ces deux champs ont disparu dans ''proto3'' et ''optional'' est appliqué.     * Il faut toujours mettre ''optional'' pour les champs non répétés. Il est déconseillé d'utiliser un champ ''required'' car un champ peut évoluer et devenir ''optional'' au profit d'un autre. Ces deux champs ont disparu dans ''proto3'' et ''optional'' est appliqué.
Ligne 116: Ligne 126:
   // Tant que cette méthode n'est pas terminée, la connexion avec le   // Tant que cette méthode n'est pas terminée, la connexion avec le
   // client reste active.   // client reste active.
 +  // Tous les threads travaillent sur la même instance de la classe.
   ::grpc::Status Talk(::grpc::ServerContext* context,   ::grpc::Status Talk(::grpc::ServerContext* context,
   ::grpc::ServerReaderWriter< ::llgc::protobuf::test::Rpc,   ::grpc::ServerReaderWriter< ::llgc::protobuf::test::Rpc,
Ligne 141: Ligne 152:
 // Pour instancier le serveur // Pour instancier le serveur
 GreeterImpl service; GreeterImpl service;
-// Le builder n'a besoin d'exister que jusqu'à la command BuildAndStart.+// Le builder n'a besoin d'exister que jusqu'à la commande BuildAndStart.
 ServerBuilder builder; ServerBuilder builder;
 builder.AddListeningPort("0.0.0.0:1234", grpc::InsecureServerCredentials()); builder.AddListeningPort("0.0.0.0:1234", grpc::InsecureServerCredentials());
 builder.RegisterService(&service); builder.RegisterService(&service);
 +// La variable service doit exister tant que l'instance du serveur existe.
 std::unique_ptr<Server> server(builder.BuildAndStart()); std::unique_ptr<Server> server(builder.BuildAndStart());
 // Lancement du serveur. Fonction bloquante. // Lancement du serveur. Fonction bloquante.
Ligne 172: Ligne 184:
 // Ferme la communication avec le serveur dans le sens client vers serveur. // Ferme la communication avec le serveur dans le sens client vers serveur.
 stream->WritesDone(); stream->WritesDone();
-// Attente la réponse.+// Attente de la réponse de façon bloquante.
 stream->Read(&message); stream->Read(&message);
 +// Pour arrêter un Read bloquant, il faut lancer depuis un autre thread
 +context.TryCancel();
 // Ferme la communication. // Ferme la communication.
 // L'appel à Finish fait que la fonction stream->Read coté serveur // L'appel à Finish fait que la fonction stream->Read coté serveur
prog/protobuf.1534606610.txt.gz · Dernière modification : 2018/08/18 17:36 de root