我正在使用basho 的 erlang 协议缓冲区
有一个 usr.proto:
message Msg {
required int32 id = 1;
extensions 100 to max;
}
message Usr {
extend Msg { optional Usr msg = 1000; }
required int64 id = 1;
}
我可以对用户进行编码:
UsrBin = usr_pb:encode_usr(#usr{id = 1})
并解码用户:
UsrMsg = usr_pb:decode_usr(list_to_binary(UsrBin))
这是问题所在:现在我想对 Msg 进行编码,所以我创建了一个 dict:
Extensions = dict:append(1000, UsrMsg, dict:new())
然后我编码消息:
MsgBin = usr_pb:encode_msg(#msg{id = 1, '$extensions' = Extensions})
并解码消息:
MsgMsg = usr_pb:decode_msg(list_to_binary(MsgBin))
但是,我无法获得扩展:
msg_pb:get_extension(MsgMsg, 1000)(this returned "undefined")
什么问题?我以为我的编码方式错误,请帮助我!