六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 27|回复: 0

know how many bytes does your ICE object occupy..

[复制链接]

升级  66.67%

42

主题

42

主题

42

主题

秀才

Rank: 2

积分
150
 楼主| 发表于 2013-1-15 02:37:09 | 显示全部楼层 |阅读模式
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.
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表