know how many bytes does your ICE object occupy..

occasionally, we need to konw the exact size of each Ice object. so we have to do serialization manually.

 

first...compile .ice file with --stream.

 

ICE will generate a helper function for every entity class.

 

for checking size, write it to outputstream first:

 

Ice.Communicator comm = Ice.Util.initialize();
Ice.OutputStream os = Ice.Util.createOutputStream(comm);

Txx xx = new Txx() //this Txx type is derived from Ice.Object

 

TxxHelper.write(os, xx);

os.writePendingObjects(); //make sure all bytes run into stream buffer.

 

byte[] data = os.finished();

os.destroy();

 

now check the size of data and you will know how many bytes your object does consume.

 

for reading an object from inputstream. do it in opposite way:

 

Ice.InputStream ins = Ice.Util.createInputStream(comm, data);

TxxHelper helper = new TxxHelper(ins);

helper.read();

ins.readPendingObjects();

 

if no exception, you may play the object with helper.value .

 

According to the manual, --stream is available for c++/java/c# only.

你可能感兴趣的:(C++,c,OS,C#)