代码出处:Notification Service
int TAO_Notify_Service_Driver::init_dispatching_ORB (int& argc, ACE_TCHAR *argv []) { this->dispatching_orb_ = CORBA::ORB_init (argc, argv, "dispatcher"); this->apply_timeout (this->dispatching_orb_.in ()); return 0; } void TAO_Notify_Service_Driver::apply_timeout (CORBA::ORB_ptr orb) { #if defined (TAO_HAS_CORBA_MESSAGING) && TAO_HAS_CORBA_MESSAGING != 0 if (this->timeout_ != 0) { // convert from msec to "TimeT" CORBA::Any timeout; TimeBase::TimeT value = 10000 * this->timeout_; timeout <<= value; CORBA::Object_var object = orb->resolve_initial_references ("ORBPolicyManager"); CORBA::PolicyManager_var policy_manager = CORBA::PolicyManager::_narrow (object.in ()); if (CORBA::is_nil (policy_manager.in ())) throw CORBA::INTERNAL (); CORBA::PolicyList policy_list (1); policy_list.length (1); policy_list[0] = orb->create_policy ( Messaging::RELATIVE_RT_TIMEOUT_POLICY_TYPE, timeout); policy_manager->set_policy_overrides (policy_list, CORBA::SET_OVERRIDE); policy_list[0]->destroy (); } #else ACE_UNUSED_ARG (orb); #endif /* TAO_HAS_CORBA_MESSAGING != 0 */ }
初始化ORB与设置超时
本文介绍了一个名为TAO_Notify_Service_Driver的类中初始化ORB并应用超时策略的方法。该方法首先通过调用CORBA::ORB_init来初始化一个ORB实例,并随后如果设置了超时值,则会进一步设置ORB的相对实时超时策略。

2007

被折叠的 条评论
为什么被折叠?



