Я пытаюсь прочитать файлы, содержащие сообщения буфера протокола с разделителями по длине, каждая запись представляет собой переменную, указывающую длину сообщения, за которой следует само сообщение protobuf.
Но нет способа сделать это по умолчанию (что я мог видеть).
Я использую библиотеку google / protobuf 3.6.1
Однако API Java в версии 2.1.0 получил набор функций ввода-вывода с разделителями, которые, очевидно, выполняют эту работу:
parseDelimitedFrom
mergeDelimitedFrom
Есть ли в PHP эквиваленты? чтобы я мог разобрать эти сообщения в PHP?
Нет, я получаю эту ошибку при использовании метода mergeFromString
«Произошла ошибка при разборе: Неожиданный тип провода.»
Я не проверял, но на основе источника это может работать:
$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);
Других решений пока нет …