Как читать функции ввода-вывода с разделением буферов протокола

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

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

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

2

Решение

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

 $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);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]