私は 2 つのアプリケーションを持っています (1 つは C++ で作成され、もう 1 つは Java で作成されています)。msgpack
C++ クラスをバイナリ形式にパックするために使用します。次に、これを Java 側に送信します。このメッセージを Java でアンパックして (msgpack
あまりにも使用して)、正しい Java クラス オブジェクトを取得できるのだろうか?
次の例を検討してください。
// C++
class Foo
{
public:
// some methods here...
void Pack(uint8_t *data, size_t size);
private:
std::string m1_;
std::string m2_;
int m3_;
public:
MSGPACK_DEFINE(m1_, m2_, m3_);
}
void Foo::Pack(uint8_t *data, size_t size)
{
msgpack::sbuffer sbuf;
msgpack::pack(sbuf, *this);
data = sbuf.data();
size = sbuf.size();
}
そしてJava側:
// Java
public class Foo
{
public void Unpack(byte[] raw, Foo obj)
{
MessagePack msgpack = new MessagePack();
try
{
obj = msgpack.read(raw, Foo.class);
// Does obj's m1_, m2_ and m3_ contains proper values from C++ class Foo?
}
catch(IOException ex)
{
// ...
}
}
// ...
private String m1_;
private String m2_;
private int m3_;
}
Foo のメンバーがたくさんあるので、1 つずつパックしたくありません。
前もって感謝します。