12.07.2015 Views

VisiBroker Edition

VisiBroker Edition

VisiBroker Edition

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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

扩 展 DynamicImplementation 类}public String[] _all_interfaces(POA poa, byte[] objectId) { return null; }public void invoke(org.omg.CORBA.ServerRequest request) {Float balance;// 从 对 象 id 中 取 得 帐 户 名 称String name = new String(_object_id());// 确 保 操 作 名 称 是 正 确 的if (!request.operation().equals("balance")) {throw new org.omg.CORBA.BAD_OPERATION();}// 找 出 余 额 并 填 写 结 果org.omg.CORBA.NVList params = _orb.create_list(0);request.arguments(params);balance = (Float)_registry.get(name);if (balance == null) {throw new org.omg.CORBA.OBJECT_NOT_EXIST();}org.omg.CORBA.Any result = _orb.create_any();result.insert_float(balance.floatValue());request.set_result(result);System.out.println("Checked " + name + "'s balance: " +balance.floatValue());}private Random _random = new Random();static private Hashtable _registry = new Hashtable();private POA _poa;private org.omg.CORBA.ORB _orb;}以 下 的 代 码 示 例 说 明 需 要 用 DSL 实 现 的 AccountManagerImpl 类 的 实 现 。 它 是 从DynamicImplementation 类 派 生 的 , 声 明 了 invoke 方 法 。<strong>VisiBroker</strong> ORB 将 调 用invoke 方 法 将 客 户 操 作 请 求 以 ServerRequest 对 象 的 形 式 传 递 到 实 现 。C++: class AccountManagerImpl : public PortableServer::DynamicImplementation {public:AccountManagerImpl(AccountImpl* accounts) { _accounts = accounts; }CORBA::Object_ptr open(const char* name) {return _accounts->get(name);}private:AccountImpl* _accounts;CORBA::RepositoryId _primary_interface(const PortableServer::ObjectId&oid,PortableServer::POA_ptr poa) {return CORBA::string_dup((const char *)"IDL:Bank/AccountManager:1.0");};void invoke(CORBA::ServerRequest_ptr request) {// 确 定 操 作 名 称 是 正 确 的if (strcmp(request->operation(), "open") != 0)throw CORBA::BAD_OPERATION();// 取 得 输 入 参 数char *name = NULL;try {CORBA::NVList_ptr params = new CORBA::NVList(1);CORBA::Any any;使 用 动 态 框 架 接 口 19-5

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

Saved successfully!

Ooh no, something went wrong!