Как визуализировать данные из буфера протокола Google?
Я хотел бы хранить данные с помощью буферов протокола Google (также будет работать другой сериализованный формат), а затем пользовательский интерфейс для просмотра этих данных. Есть ли С++ framework/API, который позволил бы мне это сделать?
Например, он может использовать интерфейс отражения protobuf, а затем заполнять данные в Qt QTableView (или из другого инструментария). Я мог бы написать такой код сам - однако, скорее, я бы повторно использовал существующий код, поэтому я прошу совета здесь!
Или существуют ли более общие инструменты пользовательского интерфейса, которые могут визуализировать данные, доступные через некоторый API отражения?
Ответы
Ответ 1
Один графический интерфейс, с которым я только что столкнулся, - protobufeditor - он кажется довольно эффективным для просмотра общих данных. Он написан на Java, поэтому его нельзя легко использовать и расширять с С++. (И в данный момент это не особенно полируется, например, нужно максимизировать главное окно, чтобы получить полудоступную компоновку под-окон.) Таким образом, это довольно временное решение.
![Screenshot protobufeditor]()
Ответ 2
Wireshark имеет плагин protobuf, который позволяет визуализировать содержимое сообщений protobuf. Я также буду копаться в DebugString() в google/protobuf/message.h или message_lite.h(я забыл, что с моей головы) и посмотреть, можете ли вы легко одеть это для представления пользователю.
http://code.google.com/p/protobuf-wireshark/
Ответ 3
Если вы хотите написать его самостоятельно, одним из вариантов может быть использование Python/PySide вместе с QML, обработка ваших данных и сохранение их в QAbstractListModel, который подключен к вашему QML ListView. В зависимости от сложности ваших данных делегат списка должен надеяться, что он сможет его визуализировать.
Этот вопрос может быть полезен в этом случае:
Как предоставить данные из подкласса PySide QAbstractItemModel в QML ListView?
Если XML является опцией, QML XmlListModel очень удобен и прост в использовании.
Ответ 4
В прошлом году я работал над таким решением, используя Qt. К сожалению, приложение еще не завершено, но я думаю, что я был в точке, где можно было более или менее успешно визуализировать данные из общего потока буфера протокола. Вы можете проверить код на
https://github.com/oneamtu/QProtoViewer
Опять же, это не готовое решение, и вам придется работать, чтобы он соответствовал вашим собственным потребностям/проекту. Я был бы более чем счастлив помочь, если вы решите это сделать.
Ответ 5
Один из вариантов: Протокол Buffer Workbench. Хорошей особенностью этого инструмента является то, что вы можете использовать его для легкого преобразования JSON в буфер закодированного протокола и наоборот.
Ответ 6
Надеемся, что это приложение поможет вам [Только для macOS]
https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/ra/ng/app/1165908879/osx/versioninfo/deliverable
![введите описание изображения здесь]()
Ответ 7
Если вы хотите, вы можете использовать web ui для создания сообщения protobuf
https://github.com/Groterik/protobuf-webui
Это проект python, и у него есть образец, который выполняет HTTP-сервер, составляющий желаемый тип сообщения импортированного модуля protobuf. Но это python, поэтому вы можете написать простой способ обхода, который динамически импортирует компилируемый модуль protobuf и выбирает тип сообщения во время выполнения.
Вы можете перегрузить метод постпроцессинга, чтобы он мог выполнить некоторую полезную работу с сообщением (хранить в файл, отправлять по сети и т.д.)
Ответ 8
Для решения двоичного представления без схемы сложно.
Но если вы хотите просто лучше просмотреть текстовый формат pb или DebugString(), вы можете попробовать Protobuf Visualizer:
http://codingstory.com/pv