赞
踩
资料来源:omniORB4.07库自带 一些简单说明: 实例分析(echo): 使用omniidl.exe编译idl文件,生成c++桩文件。如下: 按照c++的语法,会生成6个类:Echo_Helper、Echo、_objref_Echo 可以认为_objref_Echo* 、Echo_ptr、EchoRef还有Echo_var是相同的东西。 static _ptr_type _nil(); class Echo { static _ptr_type _duplicate(_ptr_type); static inline void _marshalObjRef(_ptr_type, cdrStream&); static inline _ptr_type _unmarshalObjRef(cdrStream& s) { static _core_attr const char* _PD_repoId; class _objref_Echo : inline _objref_Echo() { _PR_setobj(0); } // nil protected: private: _objref_Echo(const _objref_Echo&); friend class Echo; _objref_Echo继承自CORBA::Object(CORBA总基类),因此可以看作Echo_ptr继承于 我们获取引用的方法不直接通过_objref_Echo,而是调Echo的静态方法,以加以保护, 在看一下后三个类的定义: virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*); class _impl_Echo : virtual char* echoString(const char* mesg) = 0; private: class POA_Echo : inline ::Echo_ptr _this() { 我们可以编写真正的服务端代码是POA_Echo的子类,下面是一个本地化的例子: static void hello(Echo_ptr e) int main(int argc, char** argv) return 0; 2、使用IOR(对象字符串域名) server: client: orb->destroy(); |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。