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参数
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参数