Maison > développement back-end > C++ > E/S délimitées par tampon de protocole C : existe-t-il des fonctions équivalentes à Java ?

E/S délimitées par tampon de protocole C : existe-t-il des fonctions équivalentes à Java ?

Barbara Streisand
Libérer: 2024-12-05 00:32:12
original
206 Les gens l'ont consulté

C   Protocol Buffer Delimited I/O: Are There Java-Equivalent Functions?

Fonctions d'E/S délimitées par les tampons de protocole : équivalents C ?

Dans le but de lire et d'écrire plusieurs messages de tampons de protocole à partir de fichiers utilisant à la fois C et Java, il a Il a été observé que Java fournit un ensemble de fonctions d'E/S "délimitées" à cet effet. Cependant, il reste incertain si C offre des fonctionnalités similaires.

Les fonctions de l'API Java sont :

  • parseDelimitedFrom
  • mergeDelimitedFrom
  • writeDelimitedTo

Équivalents C

Comme de la version 3.3.0, Google a résolu ce problème en introduisant les équivalents C suivants dans google/protobuf/util/delimited_message_util.h :

bool writeDelimitedTo(
    const google::protobuf::MessageLite& message,
    google::protobuf::io::ZeroCopyOutputStream* rawOutput) {
  // Code to write delimited messages
}

bool readDelimitedFrom(
    google::protobuf::io::ZeroCopyInputStream* rawInput,
    google::protobuf::MessageLite* message) {
  // Code to read delimited messages
}
Copier après la connexion

Format Wire pour les préfixes de taille Java

Pour ceux qui cherchent à analyser les messages avec préfixe de taille en C sans utiliser la bibliothèque officielle, le format filaire est le suivant suit :

  1. La taille du message est représentée par un entier de longueur variable de 32 bits.
  2. Un seul octet est ajouté après la taille pour garantir la compatibilité ascendante.
  3. Les données du message sont ajoutées après la taille et la compatibilité byte.

Optimisations

Les implémentations C fournies incluent des optimisations qui manquaient dans d'autres réponses. Ces optimisations garantissent que les fonctions :

  • N'échouent pas après 64 Mo de saisie.
  • Appliquez la limite de 64 Mo sur chaque message individuel.
  • Utilisez une connexion directe plus rapide. chemin de sérialisation vers le tableau lorsque cela est possible.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal