::Components::FacetDescriptions * Connector_Servant_Impl_Base::get_all_facets (void) { CIAO_TRACE ("Connector_Servant_Impl_Base::get_all_facets (void)"); ::Components::FacetDescriptions_var retval = 0; ACE_NEW_THROW_EX (retval, ::Components::FacetDescriptions, CORBA::NO_MEMORY ()); retval->length (this->facet_table_.size ()); CORBA::ULong i = 0UL; { ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, mon, this->lock_, CORBA::NO_RESOURCES ()); for (FacetTable::const_iterator iter = this->facet_table_.begin (); iter != this->facet_table_.end (); ++iter, ++i) { ::Components::FacetDescription *fd = 0; ACE_NEW_THROW_EX (fd, ::OBV_Components::FacetDescription (iter->first.c_str (), iter->second->_interface_repository_id (), iter->second), CORBA::NO_MEMORY ()); retval[i] = fd; } } return retval._retn (); }
::Components::ConsumerDescriptions * Servant_Impl_Base::get_all_consumers (void) { CIAO_TRACE("Servant_Impl_Base::get_all_consumers (void)"); ::Components::ConsumerDescriptions *tmp = 0; ACE_NEW_THROW_EX (tmp, ::Components::ConsumerDescriptions ( this->consumer_table_.size ()), CORBA::NO_MEMORY ()); ::Components::ConsumerDescriptions_var retval = tmp; retval->length (this->consumer_table_.size ()); CORBA::ULong i = 0UL; for (ConsumerTable::const_iterator iter = this->consumer_table_.begin (); iter != this->consumer_table_.end (); ++iter, ++i) { ::Components::ConsumerDescription *cd = 0; ACE_NEW_THROW_EX (cd, ::OBV_Components::ConsumerDescription, CORBA::NO_MEMORY ()); cd->name (iter->first.c_str ()); cd->type_id (iter->second->_interface_repository_id ()); cd->consumer (iter->second); retval[i] = cd; } return retval._retn (); }
bool unbind_object (const char *name, CosNaming::NamingContext_ptr ctx) { CIAO_TRACE ("Name_Utilities::unbind_object"); if (CORBA::is_nil (ctx)) { CIAO_ERROR (1, (LM_WARNING, CLINFO "Name_Utilities::unbind_object - " "Provided naming context is nil, instance <%C> will not be unbound\n", name)); return false; } CosNaming::Name nm; Name_Utilities::build_name (name, nm); try { ctx->unbind (nm); } catch (CORBA::Exception &e) { CIAO_ERROR (1, (LM_ERROR, CLINFO "Name_Utilities::unbind_object - " "Caught CORBA exception whilst unbinding name <%C>: <%C>\n", name, e._info ().c_str ())); return false; } return true; }
::Components::PublisherDescription * Servant_Impl_Base::lookup_publisher_description (const char *publisher_name) { CIAO_TRACE("Servant_Impl_Base::lookup_publisher_description"); ::Components::PublisherDescriptions_var all_publishers = this->get_all_publishers (); if (!publisher_name || all_publishers->length () == 0) { // Calling function will throw InvalidName after getting this. return 0; } for (::CORBA::ULong publisher = 0; publisher < all_publishers->length (); ++publisher) { ::Components::PublisherDescription *publisher_desc = all_publishers[publisher]; if (::ACE_OS::strcmp (publisher_name, publisher_desc->name ()) == 0) { ::Components::PublisherDescription *pd = 0; ACE_NEW_THROW_EX (pd, ::OBV_Components::PublisherDescription (), CORBA::NO_MEMORY ()); pd->name (publisher_desc->name ()); pd->type_id (publisher_desc->type_id ()); pd->consumers (publisher_desc->consumers ()); ::Components::PublisherDescription_var safe = pd; return safe._retn (); } } return 0; }
::Components::ConsumerDescriptions * Servant_Impl_Base::get_named_consumers ( const ::Components::NameList & names) { CIAO_TRACE("Servant_Impl_Base::get_named_consumers"); Components::ConsumerDescriptions *retval = 0; ACE_NEW_THROW_EX (retval, ::Components::ConsumerDescriptions, CORBA::NO_MEMORY ()); Components::ConsumerDescriptions_var safe_retval = retval; CORBA::ULong const len = names.length (); safe_retval->length (len); for (CORBA::ULong i = 0; i < len; ++i) { ::Components::ConsumerDescription *tmp = this->lookup_consumer_description (names[i]); if (tmp == 0) { throw ::Components::InvalidName (); } safe_retval[i] = tmp; } return safe_retval._retn (); }
void Session_Container_i::fini (void) { CIAO_TRACE ("Session_Container_i::fini"); Container_i < ::CIAO::Session_Container>::fini (); }
void Servant::describe_simplex_receptacle ( const char *port_name, const char *port_type_repo_id, typename T::_ptr_type connection, ::Components::ReceptacleDescriptions_var &descriptions, CORBA::ULong slot) { CIAO_TRACE ("Servant::describe_simplex_receptacle"); ::Components::ReceptacleDescription *elem = 0; ACE_NEW_THROW_EX (elem, ::OBV_Components::ReceptacleDescription, CORBA::NO_MEMORY ()); ::Components::ReceptacleDescription_var safe_elem = elem; elem->name (port_name); elem->type_id (port_type_repo_id); elem->is_multiple (false); elem->connections ().length (1UL); ::Components::ConnectionDescription *conn = 0; ACE_NEW (conn, ::OBV_Components::ConnectionDescription); ::Components::ConnectionDescription_var safe_conn = conn; conn->ck (0); conn->objref (connection); elem->connections ()[0UL] = safe_conn._retn (); descriptions[slot] = safe_elem._retn (); }
::Components::FacetDescription * Connector_Servant_Impl_Base::lookup_facet_description (const char *port_name) { CIAO_TRACE ("Connector_Servant_Impl_Base::lookup_facet_description"); if (!port_name) { // Calling function will throw InvalidName after getting this. return 0; } ::Components::FacetDescription_var safe; { ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_, 0); FacetTable::const_iterator iter = this->facet_table_.find (port_name); if (iter != this->facet_table_.end ()) { ::Components::FacetDescription *fd = 0; ACE_NEW_THROW_EX (fd, ::OBV_Components::FacetDescription (iter->first.c_str (), iter->second->_interface_repository_id (), iter->second), CORBA::NO_MEMORY ()); safe = fd; } } return safe._retn (); }
void Servant_Impl_Base::add_consumer (const char *port_name, ::Components::EventConsumerBase_ptr port_ref) { CIAO_TRACE("Servant_Impl_Base::add_consumer"); if (0 == port_name || ::CORBA::is_nil (port_ref)) { CIAO_ERROR (1, (LM_ERROR, CLINFO "Servant_Impl_Base::add_consumer - Bad port name [%C] or bad objref\n", port_name)); throw ::CORBA::BAD_PARAM (); } { ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, mon, this->lock_, CORBA::NO_RESOURCES ()); this->consumer_table_[port_name] = ::Components::EventConsumerBase::_duplicate (port_ref); } }
::Components::EmitterDescriptions * Servant_Impl_Base::get_named_emitters ( const ::Components::NameList & names) { CIAO_TRACE("Servant_Impl_Base::get_named_emitters"); ::Components::EmitterDescriptions *retval = 0; ACE_NEW_THROW_EX (retval, ::Components::EmitterDescriptions, ::CORBA::NO_MEMORY ()); ::Components::EmitterDescriptions_var safe_retval = retval; const ::CORBA::ULong len = names.length (); safe_retval->length (len); for (::CORBA::ULong i = 0UL; i < len; ++i) { ::Components::EmitterDescription * desc = this->lookup_emitter_description (names[i].in ()); if (desc) { safe_retval[i] = desc; } else { throw ::Components::InvalidName (); } } return safe_retval._retn (); }
typename COMP_SVNT::_stub_ptr_type Home_Servant_Impl<BASE_SKEL, EXEC, COMP_SVNT, CONTAINER>::create (void) { CIAO_TRACE ("Home_Servant_Impl<>::create"); if (::CORBA::is_nil (this->executor_.in ())) { CIAO_ERROR (1, (LM_ERROR, CLINFO "Home_Servant_Impl<>:create - " "nil executor reference\n")); throw CORBA::INTERNAL (); } typename EXEC::_var_type exec_safe = EXEC::_duplicate (this->executor_.in()); ::Components::EnterpriseComponent_var _ciao_ec = exec_safe->create (); typedef typename COMP_SVNT::_exec_type exec_type; typename COMP_SVNT::_exec_type::_var_type _ciao_comp = exec_type::_narrow (_ciao_ec.in ()); return this->_ciao_activate_component (_ciao_comp.in ()); }
void Container_Handler_i::instance_configured (const ::Deployment::DeploymentPlan &, ::CORBA::ULong) { CIAO_TRACE ("Container_Handler_i::instance_configured"); // nothing to be done }
::Components::EventConsumerBase_ptr Servant_Impl_Base::lookup_consumer (const char *port_name) { CIAO_TRACE("Servant_Impl_Base::lookup_consumer"); if (0 == port_name) { return ::Components::EventConsumerBase::_nil (); } ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, mon, this->lock_, CORBA::NO_RESOURCES ()); ConsumerTable::const_iterator iter = this->consumer_table_.find (port_name); if (iter == this->consumer_table_.end ()) { return ::Components::EventConsumerBase::_nil (); } return ::Components::EventConsumerBase::_duplicate (iter->second); }
::Components::ConnectionDescriptions * Connector_Servant_Impl_Base::get_connections ( const char * name) { CIAO_TRACE("Connector_Servant_Impl_Base::get_connections"); ::Components::ReceptacleDescription_var receptacle_desc = this->lookup_receptacle_description (name); if (::CORBA::is_nil (receptacle_desc.in ())) { throw ::Components::InvalidName (); } ::Components::ConnectionDescriptions_var retval; ACE_NEW_THROW_EX (retval, ::Components::ConnectionDescriptions, ::CORBA::NO_MEMORY ()); ::Components::ConnectionDescription * cd = 0; ACE_NEW_THROW_EX (cd, ::OBV_Components::ConnectionDescription, ::CORBA::NO_MEMORY ()); CORBA::Object_var obj = dynamic_cast < ::CORBA::Object_ptr > (receptacle_desc.in ()); cd->objref (::CORBA::Object::_duplicate (obj.in ())); ::CORBA::ULong i = 0UL; retval->length (1); retval[i] = cd; return retval._retn (); }
::Components::PublisherDescriptions * Servant_Impl_Base::get_named_publishers ( const ::Components::NameList & names) { CIAO_TRACE("Servant_Impl_Base::get_named_publishers"); ::Components::PublisherDescriptions_var retval; ACE_NEW_THROW_EX (retval, ::Components::PublisherDescriptions, ::CORBA::NO_MEMORY ()); retval->length (names.length ()); ::CORBA::ULong count = 0UL; for (::CORBA::ULong name = 0UL; name < names.length (); ++name) { ::Components::PublisherDescription * desc = this->lookup_publisher_description (names[name].in ()); if (desc) { retval[count++] = desc; } else { throw ::Components::InvalidName (); } } ::Components::PublisherDescriptions_var safe_retval = retval; return safe_retval._retn (); }
void Container_Handler_i::passivate_instance (const ::Deployment::DeploymentPlan & , ::CORBA::ULong , const ::CORBA::Any &) { CIAO_TRACE ("Container_Handler_i::passivate_instance"); // no passivation needed. }
Facet_Servant_Base_T<BASE, EXEC, CONTEXT>::Facet_Servant_Base_T ( typename EXEC::_ptr_type exec, ::Components::CCMContext_ptr ctx) : executor_ (EXEC::_duplicate (exec)), ctx_ (::Components::CCMContext::_duplicate (ctx)) { CIAO_TRACE ("Facet_Servant_Base_T<BASE, EXEC, CONTEXT>::Facet_Servant_Base_T"); }
Home_Servant_Impl<BASE_SKEL, EXEC, COMP_SVNT, CONTAINER>::~Home_Servant_Impl (void) { CIAO_TRACE ("Home_Servant_Impl<>::destructor"); this->remove_components (); }
PortableServer::POA_ptr Connector_Servant_Impl_Base::_default_POA (void) { CIAO_TRACE("Connector_Servant_Impl_Base::_default_POA (void)"); Container_var cnt_safe = Container::_duplicate(this->container_.in ()); return cnt_safe->the_POA (); }
Components::CCMObject_ptr Home_Servant_Impl<BASE_SKEL, EXEC, COMP_SVNT, CONTAINER>::create_component (void) { CIAO_TRACE ("Home_Servant_Impl<>::create_component"); return this->create (); }
void Container_Handler_i::provide_endpoint_reference (const ::Deployment::DeploymentPlan &, ::CORBA::ULong, ::CORBA::Any_out) { CIAO_TRACE ("Container_Handler_i::provide_endpoint_reference"); CIAO_ERROR (1, (LM_ERROR, CLINFO "Container_Handler_i::provide_endpoint_reference - " "Unable to provide any endpoints.\n")); throw CORBA::NO_IMPLEMENT (); }
void Container_Handler_i::disconnect_instance (const ::Deployment::DeploymentPlan &, ::CORBA::ULong) { CIAO_TRACE ("Container_Handler_i::disconnect_instance"); CIAO_ERROR (1, (LM_ERROR, CLINFO "Container_Handler_i::disconnect_instance - ", "No connections allowed for containers.\n")); throw CORBA::NO_IMPLEMENT (); }
typename COMP_SVNT::_stub_ptr_type Home_Servant_Impl<BASE_SKEL, EXEC, COMP_SVNT, CONTAINER>::_ciao_activate_component ( typename COMP_SVNT::_exec_type::_ptr_type exe) { CIAO_TRACE ("Home_Servant_Impl<>::_ciao_activate_component"); typename CONTAINER::_var_type cnt_safe = CONTAINER::_duplicate (this->container_.in()); CORBA::Object_var hobj = cnt_safe->get_objref (this); Components::CCMHome_var home = Components::CCMHome::_narrow (hobj.in ()); char buffer[256]; unsigned long const serial = this->serial_number_++; if (ACE_OS::sprintf (buffer, "%ld", serial) < 0) { throw CORBA::INTERNAL (); } typedef typename COMP_SVNT::_stub_type stub_type; COMP_SVNT *svt = 0; ACE_NEW_THROW_EX (svt, COMP_SVNT (exe, home.in (), (this->ins_name_ + buffer).c_str (), this, cnt_safe), CORBA::NO_MEMORY ()); PortableServer::ServantBase_var safe (svt); PortableServer::ObjectId_var oid; CORBA::Object_var objref = cnt_safe->install_servant (svt, Container_Types::COMPONENT_t, oid.out ()); typedef typename COMP_SVNT::_stub_type stub_type; typename COMP_SVNT::_stub_var_type ho = stub_type::_narrow (objref.in ()); Components::CCMObject_var ccmobjref = Components::CCMObject::_narrow (objref.in ()); this->objref_map_.bind ( oid.in (), Components::CCMObject::_duplicate (ccmobjref.in ())); return ho._retn (); }
void Home_Servant_Impl<BASE_SKEL, EXEC, COMP_SVNT, CONTAINER>::_ciao_passivate_component ( typename COMP_SVNT::_stub_ptr_type comp) { CIAO_TRACE ("Home_Servant_Impl<>::_ciao_passivate_component"); typename CONTAINER::_var_type cnt_safe = CONTAINER::_duplicate (this->container_.in()); cnt_safe->uninstall_component (comp); }
::Components::ReceptacleDescriptions * Connector_Servant_Impl_Base::get_all_receptacles (void) { CIAO_TRACE ("Connector_Servant_Impl_Base::get_all_receptacles (void)"); ::Components::ReceptacleDescriptions * retval = 0; ACE_NEW_THROW_EX (retval, ::Components::ReceptacleDescriptions, ::CORBA::NO_MEMORY ()); ::Components::ReceptacleDescriptions_var safe_retval = retval; safe_retval->length (0UL); return safe_retval._retn (); }
// Operations for CCMObject interface. void Connector_Servant_Impl_Base::remove (void) { CIAO_TRACE("Connector_Servant_Impl_Base::remove (void)"); try { Container_var cnt_safe = Container::_duplicate(this->container_.in ()); PortableServer::POA_var port_poa = cnt_safe->the_port_POA (); { ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, mon, this->lock_, CORBA::NO_RESOURCES ()); // Removing Facets for (FacetTable::const_iterator iter = this->facet_table_.begin (); iter != this->facet_table_.end (); ++iter) { PortableServer::ObjectId_var facet_id = port_poa->reference_to_id (iter->second); port_poa->deactivate_object (facet_id); } } this->ccm_remove (); PortableServer::ObjectId_var oid; cnt_safe->uninstall_servant (this, Container_Types::COMPONENT_t, oid.out ()); if (this->home_servant_) { this->home_servant_->update_component_map (oid); this->home_servant_->_remove_ref (); this->home_servant_ = 0; } } catch (const CORBA::Exception& ex) { // log error and propagate so error gets reported to deployment framework CIAO_ERROR (1, (LM_ERROR, CLINFO "Connector_Servant_Impl_Base::remove - CORBA exception : %C\n", ex._info ().c_str ())); ex._raise (); // propagate } }
Container_Handler_i::Container_Handler_i (void) { // Also initialize CIAO logger since we reuse parts of CIAO in the locality manager CIAO::Logger_Service * clf = ACE_Dynamic_Service<CIAO::Logger_Service>::instance ("CIAO_Logger"); int argc = 0; ACE_TCHAR **argv = 0; if (clf) { clf->init (argc, argv); } CIAO_TRACE ("Container_Handler_i::Container_Handler_i"); }
void Component_Handler_i::install_instance (const ::Deployment::DeploymentPlan &plan, ::CORBA::ULong instanceRef, ::CORBA::Any_out instance_reference) { CORBA::Any *retval = 0; ACE_NEW_THROW_EX (retval, CORBA::Any (), CORBA::NO_MEMORY ()); instance_reference = retval; CIAO_TRACE ("Component_Handler_i::install_instance"); const ::Deployment::InstanceDeploymentDescription &idd (plan.instance[instanceRef]); const ::Deployment::MonolithicDeploymentDescription &mdd (plan.implementation[idd.implementationRef]); DAnCE::Utility::PROPERTY_MAP *pmap = 0; ACE_NEW_THROW_EX (pmap, DAnCE::Utility::PROPERTY_MAP (idd.configProperty.length () + mdd.execParameter.length ()), CORBA::NO_MEMORY ()); Deployment_Common::Instance_Info info; info.name = idd.name.in (); info.pmap.reset (pmap); DAnCE::Utility::build_property_map (*pmap, mdd.execParameter); DAnCE::Utility::build_property_map (*pmap, idd.configProperty); CORBA::String_var exec_art, exec_entry, svnt_art, svnt_entry, cont_id; CORBA::Any val; const char *tmp = 0; int open_mode = ACE_DEFAULT_SHLIB_MODE; if (pmap->find (CIAO::Deployment::SVNT_ENTRYPT, val) == 0) { val >>= tmp; svnt_entry = tmp; CIAO_DEBUG (9, (LM_TRACE, CLINFO "Component_Handler_i::install_instance - " "Found Servant entrypoint <%C>\n", svnt_entry.in ())); }
void Home_Servant_Impl<BASE_SKEL, EXEC, COMP_SVNT, CONTAINER>::update_component_map ( PortableServer::ObjectId &oid) { CIAO_TRACE ("Home_Servant_Impl<>::update_component_map"); Components::CCMObject_var ccm_obj_ptr; if (objref_map_.unbind (oid, ccm_obj_ptr) != 0) { CIAO_ERROR (1, (LM_ERROR, CLINFO "Home_Servant_Impl<>::update_component_map - " "Invalid component object reference\n")); } }
::Components::StandardConfigurator_ptr Connector_Servant_Impl_Base::get_standard_configurator (void) { CIAO_TRACE("Connector_Servant_Impl_Base::get_standard_configurator (void)"); // Create the configurator servant. StandardConfigurator_Impl *config_impl = 0; ACE_NEW_THROW_EX (config_impl, StandardConfigurator_Impl (this), CORBA::NO_MEMORY ()); Components::StandardConfigurator_var configurator = config_impl->_this (); return configurator._retn (); }