summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordengg <dengg@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-09-07 22:50:47 +0000
committerdengg <dengg@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-09-07 22:50:47 +0000
commit148af15f13dd2cdad344311b152269c9b971d621 (patch)
tree32a854089b9f3423be5eeff8ad9439d2de2c6a69
parent7f263ab4934df01445b8cfa1d5f3a345ec65c696 (diff)
downloadATCD-148af15f13dd2cdad344311b152269c9b971d621.tar.gz
*** empty log message ***
-rw-r--r--TAO/CIAO/DAnCE/ciao/CCM_Component.idl2
-rw-r--r--TAO/CIAO/DAnCE/ciao/CCM_Core.mpc2
-rw-r--r--TAO/CIAO/DAnCE/ciao/Container_Base.cpp18
-rw-r--r--TAO/CIAO/DAnCE/ciao/Container_Base.h6
-rw-r--r--TAO/CIAO/DAnCE/ciao/NodeApplication_Impl.cpp2
-rw-r--r--TAO/CIAO/DAnCE/ciao/Servant_Impl_Base.cpp27
-rw-r--r--TAO/CIAO/DAnCE/ciao/Servant_Impl_Base.h21
-rw-r--r--TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp231
-rw-r--r--TAO/CIAO/DAnCE/ciao/Servant_Impl_T.h36
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_;