0
我使用basho's erlang protocol buffer如何在Erlang中對Google的協議緩衝區擴展進行編碼/解碼?
有一個usr.proto:
message Msg {
required int32 id = 1;
extensions 100 to max;
}
message Usr {
extend Msg { optional Usr msg = 1000; }
required int64 id = 1;
}
我可以編碼USR:
UsrBin = usr_pb:encode_usr(#usr{id = 1})
和解碼USR:
UsrMsg = usr_pb:decode_usr(list_to_binary(UsrBin))
這裏的問題: 現在我想編碼Msg,所以我創建一個字典:
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")
什麼錯了?我以爲我是用錯誤的方式編碼的,請幫助我!