Comment visualiser les données de Google protocol buffer?
je voudrais stocker des données en utilisant des tampons de protocole google (un autre format sérialisé fonctionnerait aussi), et avoir ensuite une interface utilisateur pour parcourir ces données. Y a-t-il un framework/API C++ qui me permettrait de faire cela?
par exemple, il pourrait utiliser l'interface de réflexion de protobuf, puis remplir les données dans QTableView de Qt (ou à partir d'une autre boîte à outils). Je pourrais écrire un tel code moi-même -- cependant, je préférerais réutiliser le code existant, c'est pourquoi je demande des conseils ici!
ou y a-t-il des boîtes à outils plus générales de L'interface utilisateur qui permettent de visualiser des données accessibles via une API de réflexion?
8 réponses
Une interface graphique, je viens de tomber dessus, c'est protobufeditor -- il semble assez puissant pour la navigation de données générique. Il est écrit en Java, donc on ne peut pas facilement l'utiliser/l'étendre à partir de C++. (Et il n'est pas particulièrement poli à ce point, par exemple, il faut maximiser la fenêtre principale pour obtenir une disposition semi-utile des sous-fenêtres.) Il s'agit donc d'une solution plutôt temporaire.
Wireshark a un plugin protobuf qui vous permet de visualiser le contenu des messages protobuf. J'ai aussi creusé dans le DebugString () dans google/protobuf/message.h ou message_lite.h (j'oublie qui sur le dessus de ma tête) et voir si vous pouvez facilement habiller cela pour la présentation à un utilisateur.
si vous voulez l'écrire vous-même, une option pourrait être D'utiliser Python/PySide avec QML, de traiter vos données et de les stocker dans un QAbstractListModel qui est connecté à votre ListView QML. En fonction de la complexité de vos données, le délégué de vue de liste devrait être en mesure de les visualiser.
Cette question pourrait être utile dans ce cas: comment fournir des données de la sous-classe Qabstractemmodel PySide à ListView QML?
si XML est une option, le QML XmlListModel est très soigné et facile à utiliser.
je travaillais sur une telle solution l'année dernière en utilisant Qt. Malheureusement, l'application n'est pas encore complète, mais je pense que j'en étais au point où l'on pouvait plus ou moins bien visualiser les données d'un flux tampon de protocole générique. Vous pouvez consulter le code à
https://github.com/oneamtu/QProtoViewer
encore une fois, il ne s'agit pas d'une solution originale, et vous devrez travailler pour l'adapter à vos propres besoins/projets. Je serais plus qu'heureux de de l'aide si vous choisissez de le faire.
une option est Protocole Buffer Workbench. Une caractéristique agréable avec cet outil est que vous pouvez l'utiliser pour convertir facilement JSON en un tampon de protocole encodé et vice versa.
si vous voulez, vous pouvez utiliser Web ui pour composer un message protobuf
https://github.com/Groterik/protobuf-webui
c'est le projet python et il a un exemple qui exécute le serveur http composant le type de message désiré du module protobuf importé. Mais c'est python, donc vous pouvez écrire un contournement simple qui importe de façon dynamique le module protobuf compilé et choisit le type de message dans l'exécution.
vous pouvez surcharger la méthode de post-traitement de sorte qu'il serait faire quelque chose d'utile avec message (stocker le fichier, envoyer par le réseau, etc...)
résoudre la représentation binaire sans schéma est difficile. Mais si vous souhaitez simplement avoir une meilleure vue du format texte de pb ou de DebugString (), vous pouvez essayer le visualiseur Protobuf:
Espérons que cette application peut vous aider à [Uniquement pour macOS]