Как читать функции ввода-вывода с разделением буферов протокола - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь прочитать файлы, содержащие сообщения буфера протокола с разделителями по длине, каждая запись представляет собой переменную, указывающую длину сообщения, за которой следует само сообщение protobuf.Но нет способа сделать это по умолчанию (что я мог видеть).Я использую библиотеку google / protobuf 3.6.1

Однако API Java в версии 2.1.0 получил набор функций ввода / вывода с разделителями, которые, очевидно, выполняют эту работу: parseDelimitedFrom mergeDelimitedFrom

Есть ли в PHP эквиваленты?чтобы я мог разобрать эти сообщения в PHP?Нет, я получаю эту ошибку при использовании метода mergeFromString
"Ошибка при синтаксическом анализе: непредвиденный тип провода."

1 Ответ

0 голосов
/ 13 декабря 2018

Я не тестировал, но в зависимости от источника это может работать:

 $data = /* Length-prefixed protobuf data in string */;
 $input = new CodedInputStream($data);

 /* Read length prefix */
 $length = 0;
 $input->readVarint32($length);

 /* Limit the stream so that only $length bytes get parsed */
 $input->pushLimit($length);

 /* Parse the message */
 $msg = new MyMessage();
 $msg->parseFromStream($input);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...