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?

18
demandé sur Exa 2011-05-17 18:14:55

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.

Screenshot protobufeditor

9
répondu hrr 2011-05-24 22:21:03

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.

http://code.google.com/p/protobuf-wireshark/

6
répondu Sean 2011-05-24 20:22:53

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.

4
répondu fejd 2017-05-23 10:31:02

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.

2
répondu Northern Bite 2012-04-12 18:50:13

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.

1
répondu Dan 2015-01-11 19:48:31

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...)

0
répondu user3310239 2014-05-04 08:06:22

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:

http://codingstory.com/pv

0
répondu Zhou Yunqing 2014-05-21 18:56:50

Espérons que cette application peut vous aider à [Uniquement pour macOS]

https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/ra/ng/app/1165908879/osx/versioninfo/deliverable

enter image description here

0
répondu x4snowman 2016-10-18 14:15:10