The Stock_StockBrokerHome_i class is generated automatically by the IDL compiler (using the -GI flag), which is a subclass of POA_Stock::StockBrokerHome class.
This class is also a subclass of ACE_Event_Handler, which can be used as an event handler.
Stock::StockName_init *stockname_factory = new Stock::StockName_init; orb->register_value_factory (stockname_factory->tao_repository_id (), stockname_factory); Stock::Cookie_init *cookie_factory = new Stock::Cookie_init; orb->register_value_factory (cookie_factory->tao_repository_id (), cookie_factory; Stock_PriorityMapping::register_mapping (orb);
if (orb_->orb_core ()->reactor ()->register_handler (SIGINT, this) == -1) ACE_DEBUG ((LM_DEBUG, "ERROR: Failed to register as a signal handler: %p\n", "register_handler\n"));
Stock_StockBroker_i *broker = new Stock_StockBroker_i (orb_, dist, stock_name); PortableServer::ServantBase_var owner_transfer = broker; this->broker_ = broker->_this ();
return Stock::StockBroker::_duplicate (this->broker_.in ());
this->broker_->shutdown (); this->orb_->shutdown (0);
The Stock_StockBroker_i class is generated automatically by the IDL compiler (using the -GI flag), which is a subclass of POA_Stock::StockBroker class.
Stock_StockBroker_i (CORBA::ORB_ptr orb, Stock::StockDistributor_ptr dist, const char *stock_name) : orb_ (CORBA::ORB::_duplicate (orb)), quoter_ (Stock::StockQuoter::_nil()), consumer_ (0), distributor_ (Stock::StockDistributor::_duplicate (dist))The "quoter_", "consumer_", and "distributor_" are four private members of the Stock_StockBroker_i class. They stand for the StockQuoter object that is used to get detailed stock information, the StockNameConsumer object that is used to get notification of updates, and the StockDistributor object that the StockBroker object is used to unsubscribe to.
The main steps of this function are described as follows:
CORBA::Object_var obj = orb->resolve_initial_references ("RTORB"); RTCORBA::RTORB_var rt_orb = RTCORBA::RTORB::_narrow (obj.in ()); TAO::Utils::PolicyList_Destroyer consumer_policies (1); consumer_policies.length (1); consumer_policies[0] = rt_orb->create_priority_model_policy (RTCORBA::CLIENT_PROPAGATED, Stock::Priority_Mapping::MEDIUM); PortableServer::POA_var poa = this->_default_POA (); PortableServer::POAManager_var poa_mgr = poa->the_POAManager (); PortableServer::POA_var child_poa = poa->create_POA ("StockNameConsumer_POA", poa_mgr.in (), consumer_policies); RTPortableServer::POA_var rt_poa = RTPortableServer::POA::_narrow (child_poa.in ()); this->consumer_ = new Stock_StockNameConsumer_i (*this, stock_name); PortableServer::ServantBase_var nameconsumer_owner_transfer = this->consumer_; rt_poa->activate_object (this->consumer_);
Stock::StockNameConsumer_var consumer = this->consumer_->_this (); return consumer._retn();
quoter_ = Stock::StockQuoter::_duplicate (c);
Stock::StockQuoter_var old_quoter = this->quoter_; this->quoter_ = Stock::StockQuoter::_nil(); return old_quoter._retn ();
return Stock::StockQuoter::_duplicate (this->quoter_);
this->distributor_->unsubscribe_notifier (this->consumer_->cookie ());
::Stock::StockBroker_var broker = this->_this (); PortableServer::ObjectId_var oid = this->_default_POA ()->reference_to_id (broker.in ()); this->_default_POA ()->deactivate_object (oid.in ());