diff options
author | dengg <dengg@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-09-07 22:50:47 +0000 |
---|---|---|
committer | dengg <dengg@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-09-07 22:50:47 +0000 |
commit | 148af15f13dd2cdad344311b152269c9b971d621 (patch) | |
tree | 32a854089b9f3423be5eeff8ad9439d2de2c6a69 | |
parent | 7f263ab4934df01445b8cfa1d5f3a345ec65c696 (diff) | |
download | ATCD-148af15f13dd2cdad344311b152269c9b971d621.tar.gz |
*** empty log message ***
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/CCM_Component.idl | 2 | ||||
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/CCM_Core.mpc | 2 | ||||
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/Container_Base.cpp | 18 | ||||
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/Container_Base.h | 6 | ||||
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/NodeApplication_Impl.cpp | 2 | ||||
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/Servant_Impl_Base.cpp | 27 | ||||
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/Servant_Impl_Base.h | 21 | ||||
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp | 231 | ||||
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/Servant_Impl_T.h | 36 |
9 files changed, 322 insertions, 23 deletions
diff --git a/TAO/CIAO/DAnCE/ciao/CCM_Component.idl b/TAO/CIAO/DAnCE/ciao/CCM_Component.idl index acbb4cc1197..c24bf884d7b 100644 --- a/TAO/CIAO/DAnCE/ciao/CCM_Component.idl +++ b/TAO/CIAO/DAnCE/ciao/CCM_Component.idl @@ -129,7 +129,9 @@ module Components void remove() raises (RemoveFailure); + ComponentPortDescription get_all_ports (); + attribute UUID component_UUID; }; diff --git a/TAO/CIAO/DAnCE/ciao/CCM_Core.mpc b/TAO/CIAO/DAnCE/ciao/CCM_Core.mpc index 3cc73914280..fb3846a7de9 100644 --- a/TAO/CIAO/DAnCE/ciao/CCM_Core.mpc +++ b/TAO/CIAO/DAnCE/ciao/CCM_Core.mpc @@ -98,7 +98,7 @@ project (CIAO_DnC_Container) : orbsvcslib, portableserver, security, valuetype, // Please don't remove. project(Deployment_stub) : taolib_with_idl, valuetype, ifr_client { sharedname = CIAO_Deployment_stub - after += CIAO_DnC_Client + after += CIAO_DnC_Events idlflags += -Wb,stub_export_macro=Deployment_stub_Export idlflags += -Wb,stub_export_include=Deployment_stub_export.h diff --git a/TAO/CIAO/DAnCE/ciao/Container_Base.cpp b/TAO/CIAO/DAnCE/ciao/Container_Base.cpp index 15c647f2817..07b1349b084 100644 --- a/TAO/CIAO/DAnCE/ciao/Container_Base.cpp +++ b/TAO/CIAO/DAnCE/ciao/Container_Base.cpp @@ -482,3 +482,21 @@ CIAO::Session_Container::uninstall_component (Components::CCMObject_ptr objref, oid = id._retn (); } + +CORBA::Object_ptr +CIAO::Session_Container::generate_reference (const char *obj_id, + const char *repo_id + ACE_ENV_ARG_DECL) +{ + PortableServer::ObjectId_var oid = + PortableServer::string_to_ObjectId (obj_id); + + CORBA::Object_var objref = + this->poa_->create_reference_with_id (oid.in (), + repo_id + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + return objref._retn (); +} + diff --git a/TAO/CIAO/DAnCE/ciao/Container_Base.h b/TAO/CIAO/DAnCE/ciao/Container_Base.h index 64889ca4e3d..da3e29b90cc 100644 --- a/TAO/CIAO/DAnCE/ciao/Container_Base.h +++ b/TAO/CIAO/DAnCE/ciao/Container_Base.h @@ -281,6 +281,12 @@ namespace CIAO ACE_ENV_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); + // Analog of the POA method that creates an object reference from + // an object id string. + CORBA::Object_ptr generate_reference (const char *obj_id, + const char *repo_id + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + protected: long number_; diff --git a/TAO/CIAO/DAnCE/ciao/NodeApplication_Impl.cpp b/TAO/CIAO/DAnCE/ciao/NodeApplication_Impl.cpp index 5c8c4fcf553..25823066248 100644 --- a/TAO/CIAO/DAnCE/ciao/NodeApplication_Impl.cpp +++ b/TAO/CIAO/DAnCE/ciao/NodeApplication_Impl.cpp @@ -54,6 +54,8 @@ CIAO::NodeApplication_Impl::finishLaunch ( ACE_TRY_CHECK; break; + // @@ (GD) A place holder where the Event Channel connections + // should be set up. case Deployment::EventEmitter: consumer = Components::EventConsumerBase:: _narrow (providedReference[i].endpoint.in () diff --git a/TAO/CIAO/DAnCE/ciao/Servant_Impl_Base.cpp b/TAO/CIAO/DAnCE/ciao/Servant_Impl_Base.cpp index 2a3d7b234da..19748b17ed0 100644 --- a/TAO/CIAO/DAnCE/ciao/Servant_Impl_Base.cpp +++ b/TAO/CIAO/DAnCE/ciao/Servant_Impl_Base.cpp @@ -35,6 +35,19 @@ namespace CIAO safe._retn (); } } + + CORBA::Object_ptr + Servant_Impl_Base::lookup_facet (const char *port_name) + { + ::Components::FacetDescription_var fd; + + if (this->facet_table_.find (port_name, fd) != 0) + { + return CORBA::Object::_nil (); + } + + return CORBA::Object::_duplicate (fd.in ()->facet_ref ()); + } void Servant_Impl_Base::add_consumer ( @@ -57,6 +70,19 @@ namespace CIAO } } + ::Components::EventConsumerBase_ptr + Servant_Impl_Base::lookup_consumer (const char *port_name) + { + ::Components::ConsumerDescription_var cd; + + if (this->consumer_table_.find (port_name, cd) != 0) + { + return ::Components::EventConsumerBase::_nil (); + } + + return + ::Components::EventConsumerBase::_duplicate (cd.in ()->consumer ()); + } Components::StandardConfigurator* Servant_Impl_Base::get_standard_configurator ( @@ -86,5 +112,4 @@ namespace CIAO return PortableServer::POA::_duplicate (container_->_ciao_the_POA ()); } - } diff --git a/TAO/CIAO/DAnCE/ciao/Servant_Impl_Base.h b/TAO/CIAO/DAnCE/ciao/Servant_Impl_Base.h index 56f280395f8..f3b5a693d17 100644 --- a/TAO/CIAO/DAnCE/ciao/Servant_Impl_Base.h +++ b/TAO/CIAO/DAnCE/ciao/Servant_Impl_Base.h @@ -49,27 +49,34 @@ namespace CIAO virtual ~Servant_Impl_Base (void); /// Operation to set attributes on the component. - virtual void set_attributes ( - const Components::ConfigValues &descr - ACE_ENV_ARG_DECL) = 0; + virtual void set_attributes (const Components::ConfigValues &descr + ACE_ENV_ARG_DECL) = 0; //Creates and returns the StandardConfigurator for the component - virtual Components::StandardConfigurator* - get_standard_configurator (ACE_ENV_SINGLE_ARG_DECL); + virtual Components::StandardConfigurator *get_standard_configurator ( + ACE_ENV_SINGLE_ARG_DECL + ); /// Override that returns the (passed-in) default POA of our member /// component's container, to ensure that we get registered /// to that POA when _this() is called. virtual PortableServer::POA_ptr _default_POA ( - ACE_ENV_SINGLE_ARG_DECL); + ACE_ENV_SINGLE_ARG_DECL + ); protected: void add_facet (const char *port_name, CORBA::Object_ptr port_ref); + CORBA::Object_ptr lookup_facet (const char *port_name); + void add_consumer (const char *port_name, ::Components::EventConsumerBase_ptr port_ref); - + + ::Components::EventConsumerBase_ptr lookup_consumer ( + const char *port_name + ); + protected: typedef ACE_Hash_Map_Manager_Ex<const char *, ::Components::FacetDescription_var, diff --git a/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp b/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp index 8c32faedf7f..f33f04afdf3 100644 --- a/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp +++ b/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp @@ -29,15 +29,16 @@ namespace CIAO ACE_TRY_NEW_ENV { ::Components::SessionComponent_var scom = - ::Components::SessionComponent::_narrow ( - this->executor_.in () - ACE_ENV_ARG_PARAMETER); + ::Components::SessionComponent::_narrow ( + this->executor_.in () + ACE_ENV_ARG_PARAMETER + ); ACE_TRY_CHECK; if (! ::CORBA::is_nil (scom.in ())) - { - scom->ccm_remove (ACE_ENV_SINGLE_ARG_PARAMETER); - } + { + scom->ccm_remove (ACE_ENV_SINGLE_ARG_PARAMETER); + } } ACE_CATCHANY { @@ -121,21 +122,223 @@ namespace CIAO ACE_THROW_SPEC ((CORBA::SystemException)) { if (::CORBA::is_nil (object_ref)) - { - ACE_THROW_RETURN (::CORBA::BAD_PARAM (), 0); - } + { + ACE_THROW_RETURN (::CORBA::BAD_PARAM (), 0); + } ::CORBA::Object_var the_other = - object_ref->_get_component (ACE_ENV_SINGLE_ARG_PARAMETER); + object_ref->_get_component (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); ::CORBA::Object_var me = - this->context_->get_CCM_object (ACE_ENV_SINGLE_ARG_PARAMETER); + this->context_->get_CCM_object (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); - return me->_is_equivalent ( - the_other.in () - ACE_ENV_ARG_PARAMETER); + return me->_is_equivalent (the_other.in () + ACE_ENV_ARG_PARAMETER); + } + + template <typename BASE_SKEL, + typename EXEC, + typename EXEC_VAR, + typename CONTEXT> + ::Components::CCMHome_ptr + Servant_Impl<BASE_SKEL, EXEC, EXEC_VAR, CONTEXT>::get_ccm_home ( + ACE_ENV_SINGLE_ARG_DECL + ) + ACE_THROW_SPEC ((CORBA::SystemException)) + { + return this->context_->get_CCM_home (ACE_ENV_SINGLE_ARG_PARAMETER); + } + + template <typename BASE_SKEL, + typename EXEC, + typename EXEC_VAR, + typename CONTEXT> + ::Components::PrimaryKeyBase * + Servant_Impl<BASE_SKEL, EXEC, EXEC_VAR, CONTEXT>::get_primary_key ( + ACE_ENV_SINGLE_ARG_DECL + ) + ACE_THROW_SPEC ((CORBA::SystemException, + ::Components::NoKeyAvailable)) + { + ACE_THROW_RETURN (::Components::NoKeyAvailable (), 0); + } + + template <typename BASE_SKEL, + typename EXEC, + typename EXEC_VAR, + typename CONTEXT> + ::Components::ComponentPortDescription * + Servant_Impl<BASE_SKEL, EXEC, EXEC_VAR, CONTEXT>::get_all_ports ( + ACE_ENV_SINGLE_ARG_DECL + ) + ACE_THROW_SPEC ((CORBA::SystemException)) + { + OBV_Components::ComponentPortDescription *cps = 0; + ACE_NEW_RETURN (cps, + OBV_Components::ComponentPortDescription, + 0); + ::Components::ComponentPortDescription_var retv = cps; + + ::Components::FacetDescriptions_var facets_desc = + this->get_all_facets (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN (0); + + ::Components::ReceptacleDescriptions_var receptacle_desc = + this->get_all_receptacles (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN (0); + + ::Components::ConsumerDescriptions_var consumer_desc = + this->get_all_consumers (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN (0); + + ::Components::EmitterDescriptions_var emitter_desc = + this->get_all_emitters (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN (0); + + ::Components::PublisherDescriptions_var publisher_desc = + this->get_all_publishers (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN (0); + + retv->facets (facets_desc.in ()); + retv->receptacles (receptacle_desc.in ()); + retv->consumers (consumer_desc.in ()); + retv->emitters (emitter_desc.in ()); + retv->publishers (publisher_desc.in ()); + + return retv._retn (); + } + + template <typename BASE_SKEL, + typename EXEC, + typename EXEC_VAR, + typename CONTEXT> + CORBA::Object_ptr + Servant_Impl<BASE_SKEL, EXEC, EXEC_VAR, CONTEXT>::_get_component ( + ACE_ENV_SINGLE_ARG_DECL + ) + ACE_THROW_SPEC ((CORBA::SystemException)) + { + ::Components::SessionContext_var sc = + ::Components::SessionContext::_narrow ( + this->context_ + ACE_ENV_ARG_PARAMETER + ); + ACE_CHECK_RETURN (::CORBA::Object::_nil ()); + + if (! ::CORBA::is_nil (sc.in ())) + { + return sc->get_CCM_object (ACE_ENV_SINGLE_ARG_PARAMETER); + } + + ::Components::EntityContext_var ec = + ::Components::EntityContext::_narrow ( + this->context_ + ACE_ENV_ARG_PARAMETER + ); + ACE_CHECK_RETURN (::CORBA::Object::_nil ()); + + if (! ::CORBA::is_nil (ec.in ())) + { + return ec->get_CCM_object (ACE_ENV_SINGLE_ARG_PARAMETER); + } + + ACE_THROW_RETURN (CORBA::INTERNAL (), + ::CORBA::Object::_nil ()); + } + + // CIAO-specific operations. + + template <typename BASE_SKEL, + typename EXEC, + typename EXEC_VAR, + typename CONTEXT> + void + Servant_Impl<BASE_SKEL, EXEC, EXEC_VAR, CONTEXT>::ciao_preactivate ( + ACE_ENV_SINGLE_ARG_DECL + ) + ACE_THROW_SPEC ((CORBA::SystemException)) + { + ::Components::SessionComponent_var temp = + ::Components::SessionComponent::_narrow ( + this->executor_.in () + ACE_ENV_ARG_PARAMETER + ); + ACE_CHECK; + + if (! ::CORBA::is_nil (temp.in ())) + { + temp->ciao_preactivate (ACE_ENV_SINGLE_ARG_PARAMETER); + } + } + + template <typename BASE_SKEL, + typename EXEC, + typename EXEC_VAR, + typename CONTEXT> + void + Servant_Impl<BASE_SKEL, EXEC, EXEC_VAR, CONTEXT>::ciao_activate ( + ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) + { + ::Components::SessionComponent_var temp = + ::Components::SessionComponent::_narrow ( + this->executor_.in () + ACE_ENV_ARG_PARAMETER + ); + ACE_CHECK; + + if (! ::CORBA::is_nil (temp.in ())) + { + temp->ccm_activate (ACE_ENV_SINGLE_ARG_PARAMETER); + } + } + + template <typename BASE_SKEL, + typename EXEC, + typename EXEC_VAR, + typename CONTEXT> + void + Servant_Impl<BASE_SKEL, EXEC, EXEC_VAR, CONTEXT>::ciao_postactivate ( + ACE_ENV_SINGLE_ARG_DECL + ) + ACE_THROW_SPEC ((CORBA::SystemException)) + { + ::Components::SessionComponent_var temp = + ::Components::SessionComponent::_narrow ( + this->executor_.in () + ACE_ENV_ARG_PARAMETER + ); + ACE_CHECK; + + if (! ::CORBA::is_nil (temp.in ())) + { + temp->ciao_postactivate (ACE_ENV_SINGLE_ARG_PARAMETER); + } + } + + template <typename BASE_SKEL, + typename EXEC, + typename EXEC_VAR, + typename CONTEXT> + void + Servant_Impl<BASE_SKEL, EXEC, EXEC_VAR, CONTEXT>::_ciao_passivate ( + ACE_ENV_SINGLE_ARG_DECL + ) + ACE_THROW_SPEC ((CORBA::SystemException)) + { + ::Components::SessionComponent_var temp = + ::Components::SessionComponent::_narrow ( + this->executor_.in () + ACE_ENV_ARG_PARAMETER + ); + ACE_CHECK; + + if (! ::CORBA::is_nil (temp.in ())) + { + temp->ccm_passivate (ACE_ENV_SINGLE_ARG_PARAMETER); + } } } diff --git a/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.h b/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.h index 11e53b91985..48af7435c3c 100644 --- a/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.h +++ b/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.h @@ -63,6 +63,42 @@ namespace CIAO ACE_ENV_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); + virtual ::Components::CCMHome_ptr + get_ccm_home (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual ::Components::PrimaryKeyBase * + get_primary_key (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, + ::Components::NoKeyAvailable)); + + virtual ::Components::ComponentPortDescription * + get_all_ports (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual CORBA::Object_ptr + _get_component (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + // CIAO-specific operations. + + void + ciao_preactivate (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + void + ciao_activate (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + void + ciao_postactivate (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + /// @@NOTE: The busted operation. + void + _ciao_passivate (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + protected: EXEC_VAR executor_; |