12.07.2015 Views

VisiBroker Edition

VisiBroker Edition

VisiBroker Edition

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

查 看 为 客 户 所 生 成 的 代 码 服 务 ( 在 C++ 下 )表 11.1_var 类 中 的 方 法方 法operator=(const example_ptr p)example_ptr operator->()说 明赋 值 运 算 , 调 用 _ptr 指 向 的 对 象 上 的_release() , 然 后 将 p 的 _duplicate() 存 储在 _ptr 中 。返 回 本 对 象 上 存 储 的 _ptr。 在 正 确 地 初 始 化 本对 象 之 前 , 不 应 该 调 用 此 运 算 。查 看 为 客 户 所 生 成 的 代 码 服 务 ( 在 C++ 下 )以 下 的 代 码 示 例 说 明 IDL 编 译 器 如 何 生 成 以 下 两 个 文 件 :example_s.hh 和example_s.cc。 这 两 个 文 件 提 供 服 务 器 用 以 派 生 实 现 类 的 POA_example 类 。POA_example 类 是 从 PortableServer_ServantBase 类 派 生 的 。小 心 : 不 要 修 改 由 IDL 编 译 器 生 成 的 文 件 的 内 容 。C++: class POA_example : public virtual PortableServer_ServantBase {protected:POA_example() {}virtual ~POA_example() {}public:static const CORBA::TypeInfo _skel_info;virtual const CORBA::TypeInfo *_type_info() const;example_ptr _this();virtual void *_safe_narrow(const CORBA::TypeInfo& ) const;static POA_example * _narrow(PortableServer_ServantBase *_obj);// 需 要 实 现 以 下 的 操 作virtual CORBA::Long op1(CORBA::Char _x, CORBA::Short_out _y) = 0;// 自 动 实 现 的 框 架 操 作static void _op1(void *_obj, CORBA::MarshalInBuffer &_istrm,const char *_oper, VISReplyHandler& handler);};IDL 编 译 器 生 成 的 方 法 ( 框 架 )注 意 : 在 以 下 的 IDL 规 范 中 所 声 明 的 op1 方 法 是 与 _op1 方 法 一 起 生 成 的 。POA_example 类 声 明 一 个 命 名 为 op1 的 纯 虚 方 法 。 从 POA_example 派 生 的 实 现 类 必须 为 该 方 法 提 供 实 现 。POA_example 类 被 称 为 框 架 , 当 收 到 一 个 客 户 请 求 时 , POA 调 用 该 框 架 的 方 法(_op1)。 框 架 的 内 部 方 法 将 汇 集 请 求 的 所 有 参 数 , 调 用 您 的 op1 方 法 , 然 后 将 所有 返 回 的 参 数 或 违 例 汇 集 到 回 答 消 息 中 。 随 后 , ORB 将 把 回 答 送 到 客 户 程 序 。构 建 器 和 解 构 器 均 受 到 保 护 , 它 们 只 能 由 继 承 的 成 员 来 调 用 。 构 建 器 接 受 对 象 名 称以 便 服 务 器 可 以 将 多 个 不 同 的 对 象 实 例 化 。11-8 <strong>VisiBroker</strong> 开 发 者 指 南

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!