Je suis à la recherche de l'équivalent protobuf-net de l'API C++ Message::ByteSize
pour connaître la longueur du message sérialisé en octets.Tampons de protocole C# (protobuf-net) Message :: ByteSize
Répondre
Je n'ai pas joué avec l'API C++, vous devrez donc me donner un peu plus de contexte/d'information. Que fait cette méthode? Peut-être un exemple d'utilisation?
Si vous consommez des données à partir d'un flux, il existe des versions de « WithLengthPrefix » pour automatisent limiter à discret messages, ou je croient la méthode pour lire le suivant longueur du flux est sur l'API publique.
Si vous voulez obtenir une longueur en place de sérialisation, alors je soupçonne que l'option la plus facile pourrait être de sérialiser en un flux fictif et de suivre la longueur. Assez curieusement, une ancienne version de protobuf-net avait des méthodes «obtenir la longueur sans faire le travail», mais après une discussion sur le protobuf-net, j'ai supprimé celles-ci. Les données sérialisées sont toujours suivies, évidemment. Cependant, parce que l'API est différente de la longueur de données binaires pour les objets n'est pas disponible "gratuitement".
Si vous clarifiez ce qu'est le cas d'utilisation, je suis sûr que nous pouvons le rendre facilement disponible (si ce n'est déjà fait).
Re le commentaire; c'est ce que je soupçonnais. Parce que protobuf-net diffère la traduction binaire au dernier moment (car il s'agit de types .NET normaux, pas de code auto-généré), il n'y a pas de façon automatique d'obtenir cette valeur sans faire le travail. Je pourrais ajouter un mécanisme pour vous permettre d'obtenir cette valeur en écrivant à Stream.Null
? mais si vous avez besoin des données de toute façon vous pourriez bénéficier de simplement écrire à MemoryStream
et en vérifiant le .Length
avant de copier les données.
La méthode Message :: ByteSize() renvoie la taille sérialisée du message et toutes ses données, y compris les sous-messages. Je cherchais une fonctionnalité similaire pour assigner des buffers avant l'appel SerializeWithLengthPrefix() mais en alternative, laisser le MemoryStream gérer le buffer d'expansion et utiliser l'appel ToArray() pour obtenir un buffer pour le code de réseau. –
@ Sébastien Taylor - Je vais mettre à jour ... –
- 1. Tampons de protocole de Google dans C#
- 2. Génération d'une définition de tampons de protocole
- 3. Google tampons de protocole comparer
- 4. Tampons de protocole Google avec Objective-C et Java
- 5. Tampons de protocole Google et servlets
- 6. Envoi de tampons de protocole via REST
- 7. Comment utiliser les tampons de protocole?
- 8. Tampons de protocole avec des extensions
- 9. Aller intégration avec les tampons de protocole?
- 10. version compressible des tampons de protocole
- 11. Performance de getSerializedSize() dans les tampons de protocole
- 12. Comment puis-je savoir quel message j'ai reçu en utilisant la bibliothèque de tampons de protocole?
- 13. en c et tampons
- 14. Quelles bibliothèques doivent être liées avec des tampons de protocole générés code C++
- 15. 'bytesize' dans le module PySerial
- 16. ID de message dans un protocole POP3
- 17. C# problème de protocole ascii
- 18. Comment coderiez-vous une carte <String, Object> en utilisant des tampons de protocole?
- 19. Utilisation de tampons de protocole pour envoyer des icônes/petites images
- 20. Tableau de tampons en programmation C?
- 21. tampons de protocole et options de transport réelles - sockets ou middleware
- 22. Y a-t-il des bases de données qui prennent en charge les tampons de protocole?
- 23. comment envoyer des classes définies dans .proto (protocole-tampons) sur un socket
- 24. Solution de protocole C# POP3
- 25. C#: Gestion de "violation de protocole" WebClient
- 26. Comment les tampons de protocole peuvent-ils prendre en charge la sérialisation/désérialisation des conteneurs std?
- 27. XStream <-> Formats binaires alternatifs (par exemple, tampons de protocole)
- 28. C# client-serveur protocole/question de modèle
- 29. Utilisation de tampons de vertex OpenGL en C++
- 30. Ajouter une valeur sérialisée brute à un champ répété dans les tampons de protocole (protobuf-net, protobuf-csharp)
Pagination Marc Gravell ... :) –
Considérez-moi paginé –