|
|
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. |
|