ICE的输入流和输出流

1、ICE提供流式接口InputStream来进行对象的解码操作,通过如下方法构造一个输入流对象:
   InputStreamPtr createInputStream(const Ice::CommunicatorPtr& communicator, const std::vector<Ice::Byte>& data);
2、在输入流对象InputStream上提供了多个重载的read方法,用来从输入流中提取内容:
   A、提供基本数据类型的read:
      double d; in->read(d); string s; in->read(s);
   B、提供内置sequence对象的read:参考ice\slice\ice\buildinSequence.ice
      IntSeq s; in->read(s);
   C、从效率上考虑,提供sequence的零拷贝read:
      std::pair<const Ice::Int*, const Ice::Int*> p;
      IceUtil::ScopedArray<Ice::Int> a;
      in->read(p, a);
   D、提供读取proxy对象的方法:
      Ice::ObjectPrx readProxy(),使用时需要向下转型
      template<typename T> inline void read(IceInternal::ProxyHandle<T>& v),传入已有proxy,自动做向下转型
   E、提供读取class对象的方法:
      template<typename T> inline void read(IceInternal::Handle<T>& v)
   F、提供读取异常的方法:
      void throwException(),通过在try&catch中调用该方法获取异常
   G、提供读取指针到开始的方法:void rewind()
   H、其他的扩展类型为了能够支持InputStream的提取操作,在slice中定义类型,让后在编译slice文件时加上--stream参数
3、ICE提供流式接口OutputStream来进行对象的编码操作,通过如下方法构造一个输入流对象:
   OutputStreamPtr createOutputStream(const Ice::CommunicatorPtr& communicator);
4、在输出流对象OutputStream上提供了多个重载的write方法,用来向输出流中写入内容:
   A、提供基本数据类型的write:
      double d=3.1; out->write(d); string s="abc"; out->write(s);
   B、提供内置sequence对象的write:参考ice\slice\ice\buildinSequence.ice
      IntSeq s; out->write(s);
   C、从效率上考虑,提供sequence的零拷贝write:
      vector<Ice::Byte> data = ...;
      out->write(&v[0], &v[v.size()]);
   D、提供写入proxy对象的方法:
      template<typename T> inline void write(const IceInternal::ProxyHandle<T>& v)
   E、提供写入class对象的方法:
      template<typename T> inline void write(const IceInternal::Handle<T>& v)
   F、提供写入异常的方法:
      void writeException(const Ice::UserException & ex)
   G、提供将流式buffer中内容写入byte数组方法:void finished(std::vector< Ice::Byte > & data)
   H、提供写入位置重置和清除写入buffer的方法:void reset(bool clearBuffer)
   I、其他的扩展类型为了能够支持OutputStream的写入操作,在slice中定义类型,让后在编译slice文件时加上--stream参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值