如何制作新的varint编码的protobuf消息?

时间:2014-04-29 21:24:04

标签: java encoding buffer protocol-buffers

我有一个我正在生成的protobuf消息的ArrayList,我想知道如何用它们生成varint编码的消息。

假设我想要的消息叫做“Foobar”。它将使用protoc --java_out创建我想要这样做:

VarintFoobarVarintFoobarVarintFoobar

Varint应该代表Foobar之后的长度。

一旦消息被编码成字节数组,下面的代码应该能够撤消所有内容(假设输出是我开始使用的ArrayList,输入是编码的protobuf):

List<Foobar> output = new ArrayList<Foobar>();
CodedInputStream cis = CodedInputStream.newInstance(input);
for (int i = 0; !cis.isAtEnd(); i++) {
    int x = cis.readRawVarint32();
    output.add(Foobar.parseFrom(cis.readRawBytes(x)));
}

0 个答案:

没有答案