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;
}
Usr をエンコードできます。
UsrBin = usr_pb:encode_usr(#usr{id = 1})
Usr をデコードします。
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")
何が問題だったのですか?間違った方法でコーディングしていると思いました。助けてください!