diff options
Diffstat (limited to 'CIAO/docs/templates')
-rw-r--r-- | CIAO/docs/templates/CIAO_Glue_Session_Template.cpp | 1234 | ||||
-rw-r--r-- | CIAO/docs/templates/CIAO_Glue_Session_Template.h | 733 | ||||
-rw-r--r-- | CIAO/docs/templates/CIAO_Glue_Session_Template.inl | 494 | ||||
-rw-r--r-- | CIAO/docs/templates/Executor.idl | 246 | ||||
-rw-r--r-- | CIAO/docs/templates/cidl_template.cidl | 31 |
5 files changed, 0 insertions, 2738 deletions
diff --git a/CIAO/docs/templates/CIAO_Glue_Session_Template.cpp b/CIAO/docs/templates/CIAO_Glue_Session_Template.cpp deleted file mode 100644 index b692eb6a859..00000000000 --- a/CIAO/docs/templates/CIAO_Glue_Session_Template.cpp +++ /dev/null @@ -1,1234 +0,0 @@ -// $Id$ - -// The generated filename for files using this template shoule be -// [idl-basename]GS.cpp GS --> GlueSession - -// @@ Notice: [ciao module name] can expand to either CIAO_GLUE or -// CIAO_GLUE_[module name] as defined in the header file. - -/// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -/// @@@ Notice that all component and interface names need to be -/// fully qualified as we are creating a new namespace for the CIAO's -/// container glue code. -/// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - -#include "[idl-basename]_svnt.h" -#include "Cookies.h" - -#if !defined (__ACE_INLINE__) -# include "[idl-basename]_svnt.inl" -#endif /* __ACE_INLINE__ */ - -////////////////////////////////////////////////////////////////// -// Facet Glue Code implementation -// @@ We are assuming that these facets are declared under the same -// module as the component (thus, we are placing this glue code -// here under the same namespace. If they are not, we will -// either be generating them in separate namespaces, or include -// some other CIDL generated files to get the glue code -// implementation. -////////////////////////////////////////////////////////////////// - -##foreach [facet type] in (all facet interface types in the original IDL) - -// get_component implementation. -CORBA::Object_ptr -[ciao module name]::[facet type]_Servant::_get_component (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - ::Components::SessionContext_var sc = - ::Components::SessionContext::_narrow (this->ctx_.in ()); - - if (! CORBA::is_nil(sc.in ())) - return sc->get_CCM_object (ACE_ENV_SINGLE_ARG_PARAMETER); - - ::Components::EntityContext_var ec = - ::Components::EntityContext::_narrow (this->ctx_.in ()); - - if (! CORBA::is_nil(ec.in ())) - return ec->get_CCM_object (ACE_ENV_SINGLE_ARG_PARAMETER); - - ACE_THROW_RETURN (CORBA::INTERNAL (), 0); -} - -##end foreach [facet type] - - - -////////////////////////////////////////////////////////////////// -// Component specific context implementation -////////////////////////////////////////////////////////////////// - -##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate: -## if ([receptacle name] is a multiplex ('uses multiple') receptacle) - // [receptacle name]Connections typedef'ed as a sequence of - // struct [receptacle name]Connection. -[receptacle name]Connections * -[ciao module name]::[component name]_Context::get_connections_[receptacle name] (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - // @@ Strategized locking here. - - [receptacle name]Connections_var retv = - new [receptacle name]Connections (this->ciao_muses_[receptacle name]_.current_size ()); - - CORBA::ULong i = 0; - ACE_Active_Map_Manager<[uses type]_var>::iterator - end = this->ciso_muses_[receptacle name]_.end (); - for (ACE_Active_Map_Manager<[uses type]_var>::iterator - iter = this->ciso_muses_[receptacle name]_.begin (); - iter != end; - ++iter) - { - ACE_Active_Map_Manager<[uses type]_var>::ENTRY &entry = *iter; - retv[i]->objref = [uses type]::_narrow (entry.int_id_.in ()); - retv[i]->ck = new CIAO::Map_Key_Cookie (entry.ext_id_); - ++i; - } - - return retv._retn (); -} -## endif [receptacle name] -##end foreach [receptacle name] with [uses type] - -##foreach [event name] with [eventtype] in (list of all event sources) generate: -void -[ciao module name]::[component name]_Context::push_[event name] ([eventtype] *ev - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ -## if [event name] belongs to an 'emits' port - this->ciao_emits_[event name]_consumer_->push_[event name] (ev - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - -## else [event name] belongs to a 'publishes' port - ACE_Active_Map_Manager<[eventtype]Consumer_var>::iterator - end = this->ciao_publishes_[event name]_map_.end (); - for (ACE_Active_Map_Manager<[eventtype]Consumer_var>::iterator - iter = this->ciao_publishes_[event name]_map_.begin (); - iter != end; - ++iter) - { - ACE_Active_Map_Manager<[eventtype]Consumer_var>::ENTRY &entry = *iter; - [eventtype]Consumer_var c - = [eventtype]Consumer::_narrow (entry.int_id_.in ()); - c->push_[eventtype] (ev - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - } -## endif [event name] -} - -##end foreach [event name] with [eventtype] - - -// Operations for publishes interfaces. -##foreach [publish name] with [eventtype] in (list of all publishers) generate: -::Components::Cookie * -[ciao module name]::[component name]_Context::subscribe_[publish name] ([eventtype]Consumer_ptr c - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::ExceededConnectionLimit)) -{ - if (CORBA::is_nil (c)) - ACE_THROW_RETURN (CORBA::BAD_PARAM (), 0); - - [eventtype]Consumer_var sub - = [eventtype]Consumer::_duplicate (c); - - ACE_Active_Map_Manager_Key key; - this->ciao_publishes_[publish name]_map_.bind (sub.in (), - key); - - sub._retn (); // Release ownership to map. - - ::Components::Cookie_var retv = new CIAO::Map_Key_Cookie (key); - return retv._retn (); -} - -[eventtype]Consumer_ptr -[ciao module name]::[component name]_Context::unsubscribe_[publish name] (::Components::Cookie *ck - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::InvalidConnection)) -{ - [eventtype]Consumer_var retv; - - ACE_Active_Map_Manager_Key key; - if (ck == 0 || - CIAO::Map_Key_Cookie::extract (ck, key) == -1) - ACE_THROW_RETURN (::Components::InvalidConnection (), 0); - - if (this->ciao_publishes_[publish name]_map_.unbind (key, - retv) != 0) - ACE_THROW_RETURN (::Components::InvalidConnection (), 0); - - return retv._retn (); -} - -##end foreach [publish name] with [eventtype] - -##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate: - -## if [receptacle name] is a simplex receptacle ('uses') - -[uses type]_ptr -[ciao module name]::[component name]_Context::get_connection_[receptacle name] (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - return [uses type]::_duplicate (this->ciao_uses_[receptacle name]_.in ()); -} - -// Simplex [receptacle name] connection management operations -void -[ciao module name]::[component name]_Context::connect_[receptacle name] ([uses type]_ptr c - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::AlreadyConnected, - ::Components::InvalidConnection)) -{ - if (! CORBA::is_nil (this->ciao_uses_[receptacle name]_.in ())) - ACE_THROW (::Components::AlreadyConnected ()); - - if (CORBA::is_nil (c)) - ACE_THROW (::Components::InvalidConnection ()); - - // When do we throw InvalidConnection exception? - this->ciao_uses_[receptacle name]_ = [uses type]::_duplicate (c); -} - -[uses type]_ptr -[ciao module name]::[component name]_Context::disconnect_[receptacle name] (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::NoConnection)) -{ - if (CORBA::is_nil (this->ciao_uses_[receptacle name]_.in ())) - ACE_THROW (::Components::NoConnection ()); - - return this->ciao_uses_[receptacle name]_._retn (); -} - -## else ([receptacle name] is a multiplex ('uses multiple') receptacle) -// Multiplex [receptacle name] connection management operations -::Components::Cookie * -[ciao module name]::[component name]_Context::connect_[receptacle name] ([uses type]_ptr c - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::ExceedConnectionLimit, - ::Components::InvalidConnection)) -{ - if (CORBA::is_nil (c)) - ACE_THROW_RETURN (::Components::InvalidConnection (), 0); - - [uses type]_var conn - = [uses type]::_duplicate (c); - - ACE_Active_Map_Manager_Key key; - this->ciao_muses_[receptacle name]_.bind (conn.in (), - key); - - conn._retn (); // Releases ownership to the map. - - ::Components::Cookie_var retv = new CIAO::Map_Key_Cookie (key); - return retv._retn (); -} - -[uses type]_ptr -[ciao module name]::[component name]_Context::disconnect_[receptacle name] (::Components::Cookie *ck - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::InvalidConnection)) -{ - [uses type]_var retv; - - ACE_Active_Map_Manager_Key key; - if (ck == 0 || - CIAO::Map_Key_Cookie::extract (ck, key) == -1) - ACE_THROW_RETURN (::Components::InvalidConnection (), 0); - - if (this->ciao_muses_[receptacle name]_.unbind (key, - retv) != 0) - ACE_THROW_RETURN (::Components::InvalidConnection (), 0); - - return retv._retn (); -} - -## endif [receptacle name] -##end foreach [receptacle name] with [uses type] - -// Operations for ::Components::SessionContext interface -CORBA::Object_ptr -[ciao module name]::[component name]_Context::get_CCM_object (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::IllegalState)) -{ - // @@ How do I check for IllegalState here? When it's not in a - // callback operation... - // ACE_THROW_RETURN (::Components::IllegalState (), 0); - - if (CORBA::is_nil (this->component_.in ())) - { - CORBA::Object_var obj = this->container_->get_objref (this->servant_ - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - this->component_ = [component name]::_narrow (obj.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - if (CORBA::is_nil (this->component_.in ())) - ACE_THROW_RETURN (CORBA::INTERNAL (), 0); // This should not happen... - } - return [component name]::_duplicate (this->component_.in ()); -} - -////////////////////////////////////////////////////////////////// -// Component Servant Glue code implementation -////////////////////////////////////////////////////////////////// - -[ciao module name]::[component name]_Servant::[component name]_Servant (CCM_[component name]_ptr exe, - ::Components::CCMHome_ptr h, - ::CIAO::Session_Container *c) - : executor_ (CCM_[component name]::_duplicate (exe)), - container_ (c) -{ - this->context_ = new [ciao module name]::[component name]_Context (h, c, this); - - ACE_TRY_NEW_ENV - { - Components::SessionComponent_var scom = - Components::SessionComponent::_narrow (exe - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (! CORBA::is_nil (scom.in ())) - scom->set_session_context (this->context_ - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - // @@ Ignore any exceptions? What happens if - // set_session_context throws an CCMException? - } - ACE_ENDTRY; -} - -[ciao module name]::[component name]_Servant::~[component name]_Servant (void) -{ - ACE_TRY_NEW_ENV - { - Components::SessionComponent_var scom = - 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); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - // @@ Ignore any exceptions? What happens if - // set_session_context throws an CCMException? - } - ACE_ENDTRY; - this->context_->_remove_ref (); -} - -// Operations for provides interfaces. -##foreach [facet name] with [facet type] in (list of all provided interfaces) generate: - -[facet type]_ptr -[ciao module name]::[component name]_Servant::provide_[facet name] (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - if (CORBA::is_nil (this->provide_[facet name]_.in ())) - { - CCM_[facet type]_var fexe = this->executor_->get_[facet name] (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - if (CORBA::is_nil (fexe.in ())) - ACE_THROW_RETURN (CORBA::INTERNAL (), 0); - - [ciao module name]::[facet type]_Servant *svt = - new [ciao module name]::[facet type]_Servant (fexe.in (), - this->context_); - PortableServer::ServantBase_var safe_servant (svt); - - CORBA::Object_var obj = this->container_->install_servant (svt - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - [facet type]_var fo = [facet type]::_narrow (obj.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - this->provide_[facet name]_ = fo; - } - - return [facet type]::_duplicate (this->provide_[facet name]_.in ()); -} -##end foreach [facet name] with [facet type] - -// Operations for consumers interfaces. -##foreach [consumer name] with [eventtype] in (list of all consumers) generate: - -// EventConsumer Glue Code implementation - -// Inherit from ::Compopnents::EventBConsumerBase -void -[ciao module name]::[component name]_Servant::[eventtype]Consumer_[consumer name]_Servant::push_event (EventBase *ev - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::BadEventType)) -{ - [eventtype]_var ev_type = [eventtype]::_downcast (ev); - if (ev_type != 0) - { - this->push_[eventtype] (ev_type.in () - ACE_ENV_ARG_PARAMETER); - return; - } - - // @@ This include the case when we receive a parent eventtype of [eventtype] - - ACE_THROW (::Components::BadEventType ()); -} - -// get_component implementation. -[eventtype]Consumer_ptr -[ciao module name]::[component name]_Servant::get_consumer_[consumer name] (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - if (CORBA::is_nil (this->consumes_[consumer name]_.in ())) - { - [ciao module name]::[component name]_Servant::[eventtype]Consumer_[consumer name]_Servant *svt = - new [ciao module name]::[component name]_Servant::[eventtype]Consumer_[consumer name]_Servant (this->executor_.in (), - this->context_); - PortableServer::ServantBase_var safe_servant (svt); - - CORBA::Object_var obj = this->container_->install_servant (svt - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - [eventtype]Consumer_var eco = [eventtype]Consumer::_narrow (obj.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - this->consumes_[consumer name]_ = eco; - } - - return [eventtype]Consumer::_duplicate (this->consumes_[consumer name]_.in ()); -} - -##end foreach [consumer name] with [eventtype] - -// Operations for Navigation interface -CORBA::Object_ptr -[ciao module name]::[component name]_Servant::provide_facet (const char * name - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException , - Components::InvalidName)) -{ - if (name == 0) - ACE_THROW_RETURN (CORBA::BAD_PARAM (), 0); - - // We simply iterate thru all the facets this component provides - // now. We can also use a hash map along with perfect hashing - // (i.e., gperf) if we need faster performance since all the provided - // interfaces are static to a component definition. - -##foreach [facet name] with [facet type] in (list of all provided interfaces) generate: - if (ACE_OS_String::strcmp (name, "[facet name]") == 0) - return this->provide_[facet name] (ACE_ENV_SINGLE_ARG_PARAMETER); -##end foreach [facet name] with [facet type] - - ACE_THROW_RETURN (::Components::InvalidName (), 0); -} - -::Components::FacetDescriptions * -[ciao module name]::[component name]_Servant::get_all_facets (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - ::Components::FacetDescriptions_var collection - = new ::Components::FacetDescriptions (#99); // #99 = number of all provided - // facets including those inherited - // from parent component(s). - collection->length (#99); - - ::Components::FacetDescription_var x; - CORBA::ULong i = 0; - -##foreach [facet name] with [facet type] in (list of all provided interfaces) generate: - - x = new ::OBV_Components::FacetDescription; - - x->Name ((const char *)"[facet name]"); - x->type_id ((const char *) "[facet type's repo id]"); // - x->facet_ref (this->provide_[facet name] (ACE_ENV_SINGLE_ARG_PARAMETER)); - ACE_CHECK_RETURN (0); - - collection[i] = x._retn (); - ++i; -##end foreach [facet name] with [facet type] - - return collection._retn (); - -} - -::Components::FacetDescriptions * -[ciao module name]::[component name]_Servant::get_named_facets (const Components::NameList & names - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName)) -{ - ::Components::FacetDescriptions_var collection - = new ::Components::FacetDescriptions (names.length ()); - collection->length (names.length ()); - - ::Components::FacetDescription_var x; - CORBA::ULong i = 0; - for (; i < names.length (); ++i) - { - x = new ::OBV_Components::FacetDescription; - - // We probably need a more efficient way, e.g., a hash map, to handle all these. -##foreach [facet name] with [facet type] in (list of all provided interfaces) generate: - (else) if (ACE_OS_String::strcmp (names[i].in (), "[facet name]") == 0) - { - x->Name ((const char *)"[facet name]"); - x->type_id ((const char *) "[facet type's repo id]"); // - x->facet_ref (this->provide_[facet name] (ACE_ENV_SINGLE_ARG_PARAMETER)); - ACE_CHECK_RETURN (0); - } -##end foreach [facet name] with [facet type] - else - ACE_THROW_RETURN (::Components::InvalidName (), 0); - - collection[i] = x._retn (); - } - return collection._retn (); -} - -CORBA::Boolean -[ciao module name]::[component name]_Servant::same_component (CORBA::Object_ptr object_ref - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - if (CORBA::is_nil (object_ref)) - ACE_THROW_RETURN (CORBA::BAD_PARAM (), 0); - - CORBA::Object_var the_other = 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); - ACE_CHECK_RETURN (0); - - return me->_is_equivalent (object_ref - ACE_ENV_ARG_PARAMETER); -} - -// Operations for Receptacles interface -::Components::Cookie * -[ciao module name]::[component name]_Servant::connect (const char * name, - CORBA::Object_ptr connection - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName, - Components::InvalidConnection, - Components::AlreadyConnected, - Components::ExceededConnectionLimit)) -{ - // @@ We can omit this if clause if there's no receptacle in this component. - if (name == 0) - ACE_THROW_RETURN (Components::InvalidName (), 0); - -##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate: - if (ACE_OS_String::strcmp (name, "[receptacle name]") == 0) - { - [uses type]_var _ciao_conn = - [uses type]::_narrow (connection - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - if (CORBA::is_nil (_ciao_conn.in ())) - ACE_THROW_RETURN (::Components::InvalidConnection (), 0); - -## if [receptacle name] is a simplex receptacle ('uses') - this->connect_[receptacle name] (_caio_conn.in () - ACE_ENV_ARG_PARAMETER); - return 0; -## else ([receptacle name] is a multiplex ('uses multiple') receptacle) - return this->connect_[receptacle name] (_ciao_conn.in () - ACE_ENV_ARG_PARAMETER); -## endif [receptacle name] - } -##end foreach [receptacle name] with [uses type] - - ACE_THROW_RETURN (Components::InvalidName (), 0); -} - -/* -##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate: -## if [receptacle name] is a simplex receptacle ('uses') -## else ([receptacle name] is a multiplex ('uses multiple') receptacle) -## endif [receptacle name] -##end foreach [receptacle name] with [uses type] -*/ - -CORBA::Object_ptr -[ciao module name]::[component name]_Servant::disconnect (const char * name, - Components::Cookie *ck - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName, - Components::InvalidConnection, - Components::CookieRequired, - Components::NoConnection)) -{ - // @@ We can omit this if clause if there's no receptacle in this component. - if (name == 0) - ACE_THROW_RETURN (Components::InvalidName (), 0); - -##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate: - if (ACE_OS_String::strcmp (name, "[receptacle name]") == 0) -## if [receptacle name] is a simplex receptacle ('uses') - return this->disconnect_[receptacle name] (ACE_ENV_SINGLE_ARG_PARAMETER); -## else ([receptacle name] is a multiplex ('uses multiple') receptacle) - return this->connect_[receptacle name] (ck - ACE_ENV_ARG_PARAMETER); -## endif [receptacle name] -##end foreach [receptacle name] with [uses type] - - ACE_THROW_RETURN (Components::InvalidName (), 0); -} - -::Components::ConnectionDescriptions * -[ciao module name]::[component name]_Servant::get_connections (const char * name - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName)) -{ - // @@ We can omit this if clause if there's no receptacle in this component. - if (name == 0) - ACE_THROW_RETURN (Components::InvalidName (), 0); - -##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate: - if (ACE_OS_String::strcmp (name, "[receptacle name]") == 0) - { -## if [receptacle name] is a simplex receptacle ('uses') - ::Components::ConnectionDescriptions_var retv = - new ::Components::ConnectionDescriptions (1); - retv->length (1); - - retv[0] = new OBV_Components::ConnectionDescription; - retv[0]->ck = 0; - retv[0]->objref = this->get_connection_[receptacle name] (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - return retv._retn (); -## else ([receptacle name] is a multiplex ('uses multiple') receptacle) - // @@ Return type does not match here. We can not return directly. - return this->get_connections_[receptacle name] (ACE_ENV_SINGLE_ARG_PARAMETER); -## endif [receptacle name] - } -##end foreach [receptacle name] with [uses type] - - ACE_THROW_RETURN (Components::InvalidName (), 0); -} - -::Components::ReceptacleDescriptions * -[ciao module name]::[component name]_Servant::get_all_receptacles (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - ::Components::ReceptacleDescriptions_var retv = - new ::Components::ReceptacleDescriptions (#99); // #99 is number of receptacles - // this component has. - retv->length (#99); - CORBA::ULong i = 0; - -##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate: - retv[i] = new OBV_Components::ReceptacleDescription; - - retv[i]->Name ((const char *) "[receptacle name]"); - retv[i]->type_id ((const char *) "[uses type repo id]"); -## if [receptacle name] is a simplex receptacle ('uses') - retv[i]->is_multiple (0); -## else ([receptacle name] is a multiplex ('uses multiple') receptacle) - retv[i]->is_multiple (1); -## endif [receptacle name] - retv[i]->connections (*this->get_connections ("[receptacle name]" - ACE_ENV_ARG_PARAMETER)); - ACE_CHECK_RETURN (0); - ++i; -##end foreach [receptacle name] with [uses type] - - return retv._retn (); -} - -::Components::ReceptacleDescriptions * -[ciao module name]::[component name]_Servant::get_named_receptacles (const Components::NameList & names - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName)) -{ - ::Components::ReceptacleDescriptions_var retv = - new ::Components::ReceptacleDescriptions (names.length ()); - retv->length (names.length ()); - - CORBA::ULong i = 0; - for (; i < names.length (); ++i) - { - retv[i] = new ::OBV_Components::ReceptacleDescription; -##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate: - (else) if (ACE_OS_String::strcmp (names[i].in (), "[receptacle name]") == 0) - { - retv[i]->Name ((const char *) "[receptacle name]"); - retv[i]->type_id ((const char *) "[uses type repo id]"); -## if [receptacle name] is a simplex receptacle ('uses') - retv[i]->is_multiple (0); -## else ([receptacle name] is a multiplex ('uses multiple') receptacle) - retv[i]->is_multiple (1); -## endif [receptacle name] - retv[i]->connections (*this->get_connections ("[receptacle name]" - ACE_ENV_ARG_PARAMETER)); - ACE_CHECK_RETURN (0); - } -##end foreach [receptacle name] with [uses type] - else - ACE_THROW_RETURN (::Components::InvalidName (), 0); - } - return retv._retn (); -} - -// Operations for Events interface -::Components::EventConsumerBase_ptr -[ciao module name]::[component name]_Servant::get_consumer (const char * sink_name - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName)) -{ - // @@ We can omit this if clause if there's no event sinks in this component. - if (sink_name == 0) - ACE_THROW_RETURN (Components::InvalidName (), 0); - -##foreach [consumer name] with [eventtype] in (list of all consumers) generate: - if (ACE_OS_String::strcmp (sink_name, "[consumer name]") == 0) - return this->get_consumer_[consumer name] (ACE_ENV_SINGLE_ARG_PARAMETER); -##end foreach [consumer name] with [eventtype] - ACE_THROW_RETURN (Components::InvalidName (), 0); -} - -::Components::Cookie * -[ciao module name]::[component name]_Servant::subscribe (const char * publisher_name, - Components::EventConsumerBase_ptr subscriber - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName, - Components::InvalidConnection, - Components::ExceededConnectionLimit)) -{ - // @@ We can omit this if clause if there's no publisher in this component. - if (publisher_name == 0) - ACE_THROW_RETURN (Components::InvalidName (), 0); - -##foreach [publish name] with [eventtype] in (list of all publishers) generate: - if (ACE_OS_String::strcmp (publisher_name, "[publish name]") == 0) - { - [eventtype]Consumer_var _ciao_consumer = - [eventtype]Consumer::_narrow (subscriber - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - if (CORBA::is_nil (_ciao_consumer.in ())) - ACE_THROW_RETURN (Components::InvalidConnection (), 0); - - return this->subscribe_[publish name] (_ciao_consumer.in () - ACE_ENV_ARG_PARAMETER); - } -##end foreach [publish name] with [eventtype] - - ACE_THROW_RETURN (Components::InvalidName (), 0); -} - -::Components::EventConsumerBase_ptr -[ciao module name]::[component name]_Servant::unsubscribe (const char * publisher_name, - Components::Cookie *ck - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName, - Components::InvalidConnection)) -{ - // @@ We can omit this if clause if there's no publisher in this component. - if (publisher_name == 0) - ACE_THROW_RETURN (Components::InvalidName (), 0); - -##foreach [publish name] with [eventtype] in (list of all publishers) generate: - if (ACE_OS_String::strcmp (publisher_name, "[publish name]") == 0) - { - return this->unsubscribe_[publish name] (ck - ACE_ENV_ARG_PARAMETER); - } -##end foreach [publish name] with [eventtype] - - ACE_THROW_RETURN (Components::InvalidName (), 0); -} - -void -[ciao module name]::[component name]_Servant::connect_consumer (const char * emitter_name, - Components::EventConsumerBase_ptr consumer - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName, - Components::AlreadyConnected, - Components::InvalidConnection)) -{ - // @@ We can omit this if clause if there's no emitter in this component. - if (emitter_name == 0) - ACE_THROW (Components::InvalidName ()); - -##foreach [emit name] with [eventtype] in (list of all emitters) generate: - if (ACE_OS_String::strcmp (emitter_name, "[emit name]") == 0) - { - [eventtype]Consumer_var _ciao_consumer = - [eventtype]Consumer::_narrow (consumer - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - if (CORBA::is_nil (_ciao_consumer.in ())) - ACE_THROW (Components::InvalidConnection); - - this->connect_[emit name] (_ciao_consumer.in () - ACE_ENV_ARG_PARAMETER); - return; - } -##end foreach [emit name] with [eventtype] - - ACE_THROW (Components::InvalidName ()); -} - -::Components::EventConsumerBase_ptr -[ciao module name]::[component name]_Servant::disconnect_consumer (const char * source_name - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName, - Components::NoConnection)) -{ - // @@ We can omit this if clause if there's no emitter in this component. - if (source_name == 0) - ACE_THROW_RETURN (Components::InvalidName (), 0); - -##foreach [emit name] with [eventtype] in (list of all emitters) generate: - if (ACE_OS_String::strcmp (source_name, "[emit name]") == 0) - { - return this->disconnect_[emit name] (ACE_ENV_SINGLE_ARG_PARAMETER); - } -##end foreach [emit name] with [eventtype] - - ACE_THROW_RETURN (Components::InvalidName (), 0); -} - -::Components::ConsumerDescriptions * -[ciao module name]::[component name]_Servant::get_all_consumers (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - ::Components::ConsumerDescriptions_var retv = - new ::Components::ConsumerDescriptions (#99); // #99 is the number of consumers - // this component has. - retv->length (#99); - - CORBA::ULong i = 0; -##foreach [consumer name] with [eventtype] in (list of all consumers) generate: - retv[i] = new OBV_Components::ConsumerDescription; - retv[i]->Name ("[consumer name]"); - retv[i]->type_id ("[eventtype]Consumer repo id"); - [eventtype]Consumer_var c - = this->get_consumer_[consumer name] (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - retv[i]->consumer (c.in ()); - - i++; -##end foreach [consumer name] with [eventtype] - - return retv._retn (); -} - -::Components::ConsumerDescriptions * -[ciao module name]::[component name]_Servant::get_named_consumers (const Components::NameList & names - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName)) -{ - ::Components::ConsumerDescriptions_var retv = - new ::Components::ConsumerDescriptions (names.length ()); - retv->length (names.length ()); - - CORBA::ULong i = 0; - for (; i < names.length (); ++i) - { - retv[i] = new OBV_Components::ConsumerDescription; - -##foreach [consumer name] with [eventtype] in (list of all consumers) generate: - (else) if (ACE_OS_String::strcmp (names[i].in (), "[consumer name]") == 0) - { - retv[i]->Name ("[consumer name]"); - retv[i]->type_id ("[eventtype]Consumer repo id"); - [eventtype]Consumer_var c = - this->get_consumer_[consumer name] (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - retv[i]->consumer (c.in ()); - } -##end foreach [consumer name] with [eventtype] - else - ACE_THROW_RETURN (::Components::InvalidName (), 0); - } - return retv._retn (); -} - -::Components::EmitterDescriptions * -[ciao module name]::[component name]_Servant::get_all_emitters (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - ::Components::EmitterDescriptions_var retv = - new ::Components::EmitterDescriptions (#99); // #99 is the number of emitters - // this component has. - retv->length (#99); - - CORBA::ULong i = 0; -##foreach [emit name] with [eventtype] in (list of all emitters) generate: - retv[i] = new OBV_Components::EmitterDescription; - retv[i]->Name ("[emit name]"); - retv[i]->type_id ("[eventtype]Consumer repo id"); - retv[i]->consumer ([eventtype]Consumer::_duplicate (this->context_->ciao_emits_[emit name]_consumer_)); - - i++; -##end foreach [emitter name] with [eventtype] - - return retv._retn (); -} - -::Components::EmitterDescriptions * -[ciao module name]::[component name]_Servant::get_named_emitters (const Components::NameList & names - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName)) -{ - ::Components::EmitterDescriptions_var retv = - new ::Components::EmitterDescriptions (names.length ()); - retv->length (names.length ()); - - CORBA::ULong i = 0; - for (; i < names.length (); ++i) - { - retv[i] = new OBV_Components::EmitterDescription; - -##foreach [emit name] with [eventtype] in (list of all emitters) generate: - (else) if (ACE_OS_String::strcmp (names[i].in (), "[emit name]") == 0) - { - retv[i]->Name ("[emit name]"); - retv[i]->type_id ("[eventtype]Consumer repo id"); - retv[i]->consumer ([eventtype]Consumer::_duplicate (this->context_->ciao_emits_[emit name]_consumer_.in ())); - } -##end foreach [consumer name] with [eventtype] - else - ACE_THROW_RETURN (::Components::InvalidName (), 0); - } - return retv._retn (); -} - -::Components::PublisherDescriptions * -[ciao module name]::[component name]_Servant::get_all_publishers (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - // @@ to-do - - // Need to add interfaces in the Context class to gather the information. - // Or we can just relay it to the Context object. - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0); -} - -::Components::PublisherDescriptions * -[ciao module name]::[component name]_Servant::get_named_publishers (const Components::NameList & names - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName)) -{ - // @@ to-do - - // Need to add interfaces in the Context class to gather the information. - // Or we can just relay it to the Context object. - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0); -} - -// Operations for CCMObject interface -::CORBA::IRObject_ptr -[ciao module name]::[component name]_Servant::get_component_def (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - // @@ to-do: Connect to an IfR? - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0); -} - -::Components::CCMHome_ptr -[ciao module name]::[component name]_Servant::get_ccm_home (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - return this->context_->get_CCM_home (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -::Components::PrimaryKeyBase * -[ciao module name]::[component name]_Servant::get_primary_key (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::NoKeyAvailable)) -{ - // This is a keyless component. - ACE_THROW_RETURN (::Components::NoKeyAvailable (), 0); -} - -void -[ciao module name]::[component name]_Servant::configuration_complete (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidConfiguration)) -{ - // @@ to-do - // No-op. Don't know how to pass this info to monolithic executor. -} - -void -[ciao module name]::[component name]_Servant::remove (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::RemoveFailure)) -{ - // @@ to-do - // Need to figure out what to do here. E.g., tear down the all the connections - // this component has? -} - -::Components::ComponentPortDescription * -[ciao module name]::[component name]_Servant::get_all_ports (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - ::Components::ComponentPortDescription_var retv = - new OBV_Components::ComponentPortDescription; - - ::Components::FacetDescriptions_var facets_desc - = this->get_all_facets (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - ::Components::ReceptacleDescriptions_var receptacle_desc - = 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(); -} - -// get_component implementation. -CORBA::Object_ptr -[ciao module name]::[component name]_Servant::_get_component (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - ::Components::SessionContext_var sc = - ::Components::SessionContext::_narrow (this->context_); - - if (! CORBA::is_nil(sc.in ())) - return sc->get_CCM_object (ACE_ENV_SINGLE_ARG_PARAMETER); - - // @@ Do we need to try the following case here? We are afterall implementing - // a session component here. - ::Components::EntityContext_var ec = - ::Components::EntityContext::_narrow (this->context_); - - if (! CORBA::is_nil(ec.in ())) - return ec->get_CCM_object (ACE_ENV_SINGLE_ARG_PARAMETER); - - ACE_THROW_RETURN (CORBA::INTERNAL (), 0); -} - -void -[ciao module name]::[component name]_Servant::_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); -} - -void -[ciao module name]::[component name]_Servant::_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); -} - -////////////////////////////////////////////////////////////////// -// Component Home Glue code implementation -////////////////////////////////////////////////////////////////// - -[component name]_ptr -[ciao module name]::[home name]_Servant::_ciao_activate_component (CCM_[component name]_ptr exe - ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - CORBA::Object_var hobj - = this->container_->get_objref (this - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - ::Components::CCMHome_var home - = ::Components::CCMHome::_narrow (hobj.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - [ciao module name]::[component name]_Servant *svt = - new [ciao module name]::[component name]_Servant (exe, - home.in (), - this->container_); - PortableServer::ServantBase_var safe (svt); - PortableServer::ObjectId_var oid; - - CORBA::Object_var objref - = this->container_->install_component (svt, - oid.out () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - svt->_ciao_activate (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - [component name]_var ho - = [component name]::_narrow (objref.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - if (this->component_map_.bind (oid.in (), svt) == 0) - { - // @@ what should happen if bind fail? - safe._retn (); - } - return ho._retn (); -} - -void -[ciao module name]::[home name]_Servant::_ciao_passivate_component ([component name]_ptr comp - ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - PortableServer::ObjectId_var oid; - - this->container_->uninstall_component (comp, - oid.out () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - [ciao module name]::[component name]_Servant *servant = 0; - if (this->component_map_.unbind (oid.in (), servant) == 0) - { - PortableServer::ServantBase_var safe (servant); - servant->_ciao_passivate (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - } - // What happen if unbind failed? - -} - -// Operations for Implicit Home interface -[component name]_ptr -[ciao module name]::[home name]_Servant::create (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::CreateFailure)) -{ - if (this->executor_.in () == 0) - ACE_THROW_RETURN (CORBA::INTERNAL (), 0); - - Components::EnterpriseComponent_var _ciao_ec = - this->executor_->create (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - CCM_[component name]_var _ciao_comp - = CCM_[component name]::_narrow (_ciao_ec.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - return this->_ciao_activate_component (_ciao_comp.in () - ACE_ENV_ARG_PARAMETER); -} - -// Operations for CCMHome interface -void -[ciao module name]::[home name]_Servant::remove_component (Components::CCMObject_ptr comp - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::RemoveFailure)) -{ - [component name]_var _ciao_comp - = [component name]::_narrow (comp - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - if (CORBA::is_nil (_ciao_comp.in ())) - ACE_THROW (CORBA::INTERNAL ()); // What is the right exception to throw here? - - // @@ It seems to me that we need to make sure this is a component - // generated by this home before calling remove on this component. - _ciao_comp->remove (ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - - // Removing the object reference? get the servant from the POA with - // the objref, and call remove() on the component, deactivate the - // component, and then remove-ref the servant? - this->_ciao_passivate_component (_ciao_comp.in () - ACE_ENV_ARG_PARAMETER); -} - -extern "C" [SERVANT]_Export ::PortableServer::Servant -create[home name]_Servant (::Components::HomeExecutorBase_ptr p, - CIAO::Session_Container *c - ACE_ENV_ARG_DECL); -{ - if (p == 0) - return 0; - - CCM_[home name]_var x - = CCM_[home name]::_narrow (p - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - if (CORBA::is_nil (x.in ())) - return 0; - - return new [ciao module name]::[home name]_Servant (x.in (), - c); -} diff --git a/CIAO/docs/templates/CIAO_Glue_Session_Template.h b/CIAO/docs/templates/CIAO_Glue_Session_Template.h deleted file mode 100644 index 053933f776e..00000000000 --- a/CIAO/docs/templates/CIAO_Glue_Session_Template.h +++ /dev/null @@ -1,733 +0,0 @@ -// $Id$ - -// =========================================================== -// -// @file CIAO_Glue_Session_Template.h -// -// This is a pseudo-meta generic servant implementations template -// for CIAO's CIDL compiler. It demonstrates how a servant -// implementation for a session component should look like. -// -// The generated filename for files using this template shoule be -// [idl-basename]_svnt.h -// -// @author Nanbor Wang <nanbor@cs.wustl.edu> -// -// =========================================================== - -#ifndef CIAO_GLUE_SESSION_[idl-basename]_SVNT_H -#define CIAO_GLUE_SESSION_[idl-basename]_SVNT_H -#include /**/ "ace/pre.h" - -#include "[idl-name]S.h" // Source in the skeletons for component - // client-view equivalent interfaces -#include "[idl-name]EC.h" // Source in the executor mapping - // that component implementations use -#include "ciao/Container_Base.h" //Source in the container interface definitions -#include "tao/LocalObject.h" -#include "tao/PortableServer/Key_Adapters.h" -#include "ace/Active_Map_Manager_T.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -/// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -/// @@@ Notice that all component and interface names need to be -/// fully qualified as we are creating a new namespace for the CIAO's -/// container glue code. -/// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - -##if component is defined withing a [module name] -namespace CIAO_GLUE_[module_name] -##else -namespace CIAO_GLUE -##endif -{ - - ////////////////////////////////////////////////////////////////// - // Facet Glue Code implementation - // @@ We are assuming that these facets are declared under the same - // module as the component (thus, we are placing this glue code - // here under the same namespace. If they are not, we will - // either be generating them in separate namespaces, or include - // some other CIDL generated files to get the glue code - // implementation. - -##foreach [facet type] in (all facet interface types in the original IDL) - class [SERVANT]_Export [facet type]_Servant : - : public virtual POA_[facet type] // full skeleton name here - { - public: - // Constructor and destructor. - [facet type]_Servant (CCM_[facet type]_ptr executor, - ::Components::CCMContext_ptr ctx); - ~[facet tyep]_Servant (); - -## foreach [operation] in (all facet operations) - // Generate operation decls. -## end foreach [operation] - - // get_component implementation. - virtual CORBA::Object_ptr - _get_component (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - protected: - // Facet executor. - CCM_[facet type]_var executor_; - - // Context object. - ::Components::CCMContext_var ctx_; - }; -##end foreach [facet type] - - - ////////////////////////////////////////////////////////////////// - // Component specific context implementation - class [SERVANT]_Export [component name]_Context : - public virtual CCM_[component name]_Context, - public virtual TAO_Local_RefCounted_Object - { - public: - // We will allow the the servant glue code we generate to access - // our states. - friend class [component name]_Servant; - - // Ctor. - [component name]_Context (::Components::CCMHome_ptr home, - ::CIAO::Session_Container *c, - [component name]_Servant *sv); - - // Dtor. - virtual ~[component name]_Context (); - - // Operations for [component name] event source, and - // receptacles defined in CCM_[component name]_Context. - -##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate: -## if [receptacle name] is a simplex receptacle ('uses') - [uses type]_ptr - get_connection_[receptacle name] (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); -## else ([receptacle name] is a multiplex ('uses multiple') receptacle) - // [receptacle name]Connections typedef'ed as a sequence of - // struct [receptacle name]Connection. - [receptacle name]Connections * - get_connections_[receptacle name] (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS); - ACE_THROW_SPEC ((CORBA::SystemException)); -## endif [receptacle name] -##end foreach [receptacle name] with [uses type] - -##foreach [event name] with [eventtype] in (list of all event sources) generate: - void push_[event name] ([eventtype] *ev - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); -##end foreach [event name] with [eventtype] - - // Operations for ::Components::CCMContext - virtual ::Components::Principal_ptr - get_caller_principal (ACE_ENV_SINGLE_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 CORBA::Boolean - get_rollback_only (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::IllegalState)); - - virtual ::Components::Transaction::UserTransaction_ptr - get_user_transaction (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::IllegalState)); - - virtual CORBA::Boolean - is_caller_in_role (const char * role - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual void - set_rollback_only (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::IllegalState)); - - // Operations for ::Components::SessionContext interface - virtual CORBA::Object_ptr - get_CCM_object (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::IllegalState)); - protected: - // We need to generate, in protected section, stuff that manage - // connections and consumers of this component. - -##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate: -## if [receptacle name] is a simplex receptacle ('uses') - // Simplex [receptacle name] connection management operations - void - connect_[receptacle name] ([uses type]_ptr c - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::AlreadyConnected, - ::Components::InvalidConnection)); - - [uses type]_ptr - disconnect_[receptacle name] (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::NoConnection)); - - // Simplex [receptacle name] connection - [uses type]_var ciao_uses_[receptacle name]_; - -## else ([receptacle name] is a multiplex ('uses multiple') receptacle) - // Multiplex [receptacle name] connection management operations - ::Components::Cookie * - connect_[receptacle name] ([uses type]_ptr c - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::ExceedConnectionLimit, - ::Components::InvalidConnection)); - - [uses type]_ptr - disconnect_[receptacle name] (::Components::Cookie *ck - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::InvalidConnection)); - - // Multiplex [receptacle name] connections - - ACE_Active_Map_Manager<[uses type]_var> ciao_muses_[receptacle name]_; -## endif [receptacle name] -##end foreach [receptacle name] with [uses type] - - // Operations for emits interfaces. -##foreach [emit name] with [eventtype] in (list of all emitters) generate: - void - connect_[emit name] ([eventtype]Consumer_ptr c - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::AlreadyConnected)); - - [eventtype]Consumer_ptr - disconnect_[emit name] (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::NoConnection)); - - [eventtype]Consumer_var ciao_emits_[emit name]_consumer_; -##end foreach [emit name] with [eventtype] - - // Operations for publishes interfaces. -##foreach [publish name] with [eventtype] in (list of all publishers) generate: - ::Components::Cookie * - subscribe_[publish name] ([eventtype]Consumer_ptr c - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::ExceededConnectionLimit)); - - [eventtype]Consumer_ptr - unsubscribe_[publish name] (::Components::Cookie *ck - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::InvalidConnection)); - - ACE_Active_Map_Manager<[eventtype]Consumer_var> ciao_publishes_[publish name]_map_; -##end foreach [publish name] with [eventtype] - - protected: - /// Cached component home reference. - ::Components::CCMHome_var home_; - - /// session container - ::CIAO::Session_Container *container_; - - /// Reference back to owner. - [component name]_Servant *servant_; - - /// @@ Cached component reference. - [component name]_var component_; - - }; - - ////////////////////////////////////////////////////////////////// - // Component Servant Glue code implementation - class [SERVANT]_Export [component name]_Servant - : public virtual POA_[component name] // full skeleton name here - { - public: - // Ctor. - [component name]_Servant (CCM_[component name]_ptr executor, - ::Components::CCMHome_ptr home, - ::CIAO::Session_Container *c); - - // Dtor. - ~[component name]_Servant (void); - -##foreach [operation] in all supported interfaces of own component and all inherited components and attribute accessors/mutators - - // Generate the [operation] here. - -##end - - // Operations for provides interfaces. -##foreach [facet name] with [facet type] in (list of all provided interfaces) generate: - virtual [facet type]_ptr - provide_[facet name] (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); -##end foreach [facet name] with [facet type] - - // Operations for receptacles interfaces. - -##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate: -## if [receptacle name] is a simplex receptacle ('uses') - // Simplex [receptacle name] connection management operations - virtual void - connect_[receptacle name] ([uses type]_ptr c - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::AlreadyConnected, - ::Components::InvalidConnection)); - - virtual [uses type]_ptr - disconnect_[receptacle name] (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::NoConnection)); - - virtual [uses type]_ptr - get_connection_[receptacle name] (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); -## else ([receptacle name] is a multiplex ('uses multiple') receptacle) - // Multiplex [receptacle name] connection management operations - virtual ::Components::Cookie * - connect_[receptacle name] ([uses type]_ptr c - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::ExceedConnectionLimit, - ::Components::InvalidConnection)); - - virtual [uses type]_ptr - disconnect_[receptacle name] (::Components::Cookie *ck - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::InvalidConnection)); - - virtual [receptacle name]Connections * - get_connections_[receptacle name] (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); -## endif [receptacle name] -##end foreach [receptacle name] with [uses type] - - // Operations for consumers interfaces. -##foreach [consumer name] with [eventtype] in (list of all consumers) generate: - - // First we need to generate the event sink specific servant - class [SERVANT]_Export [eventtype]Consumer_[consumer name]_Servant - : public virtual POA_[eventtype]Consumer // full skeleton name here - { - public: - // Constructor and destructor. - [event type]Consumer_[consumer name]_Servant (CCM_[component name]_ptr executor, - CCM_[component name]_Context_ptr c); - - ~[event type]Consumer_[consumer name]_Servant (); - -## foreach [type] in ([eventtype] and all its parent eventtype, if any) - virtual void push_[type] ([type] *evt - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); -## end [type] - - // Inherit from ::Compopnents::EventConsumerBase - virtual void push_event (::Components::EventBase *ev - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::BadEventType)); - - // get_component implementation. - virtual CORBA::Object_ptr - _get_component (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - protected: - // Executor - CCM_[component name]_var executor_; - - // Context object. - CCM_[component name]_Context_var ctx_; - }; - - virtual [eventtype]Consumer_ptr - get_consumer_[consumer name] (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); -##end foreach [consumer name] with [eventtype] - - // Operations for emits interfaces. -##foreach [emit name] with [eventtype] in (list of all emitters) generate: - virtual void - connect_[emit name] ([eventtype]Consumer_ptr c - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException - ::Components::AlreadyConnected)); - - virtual [eventtype]Consumer_ptr - disconnect_[emit name] (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::NoConnection)); -##end foreach [emit name] with [eventtype] - - // Operations for publishes interfaces. -##foreach [publish name] with [eventtype] in (list of all publishers) generate: - virtual ::Components::Cookie * - subscribe_[publish name] ([eventtype]Consumer_ptr c - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::ExceededConnectionLimit)); - - virtual [eventtype]Consumer_ptr - unsubscribe_[publish name] (::Components::Cookie *ck - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::InvalidConnection)); -##end foreach [publish name] with [eventtype] - - // Operations for Navigation interface - virtual CORBA::Object_ptr - provide_facet (const char * name - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException , - Components::InvalidName)) ; - - virtual ::Components::FacetDescriptions * - get_all_facets (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual ::Components::FacetDescriptions * - get_named_facets (const Components::NameList & names - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException , - Components::InvalidName)); - - virtual CORBA::Boolean - same_component (CORBA::Object_ptr object_ref - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - // Operations for Receptacles interface - virtual ::Components::Cookie * - connect (const char * name, - CORBA::Object_ptr connection - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName, - Components::InvalidConnection, - Components::AlreadyConnected, - Components::ExceededConnectionLimit)); - - virtual CORBA::Object_ptr - disconnect (const char * name, - Components::Cookie *ck - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName, - Components::InvalidConnection, - Components::CookieRequired, - Components::NoConnection)); - - virtual ::Components::ConnectionDescriptions * - get_connections (const char * name - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName)); - - virtual ::Components::ReceptacleDescriptions * - get_all_receptacles (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual ::Components::ReceptacleDescriptions * - get_named_receptacles (const Components::NameList & names - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName)); - - // Operations for Events interface - virtual ::Components::EventConsumerBase_ptr - get_consumer (const char * sink_name - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName)); - - virtual ::Components::Cookie * - subscribe (const char * publisher_name, - Components::EventConsumerBase_ptr subscriber - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName, - Components::InvalidConnection, - Components::ExceededConnectionLimit)); - - virtual ::Components::EventConsumerBase_ptr - unsubscribe (const char * publisher_name, - Components::Cookie *ck - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName, - Components::InvalidConnection)); - - virtual void - connect_consumer (const char * emitter_name, - Components::EventConsumerBase_ptr consumer - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName, - Components::AlreadyConnected, - Components::InvalidConnection)); - - virtual ::Components::EventConsumerBase_ptr - disconnect_consumer (const char * source_name - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName, - Components::NoConnection)); - - virtual ::Components::ConsumerDescriptions * - get_all_consumers (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual ::Components::ConsumerDescriptions * - get_named_consumers (const Components::NameList & names - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName)); - - virtual ::Components::EmitterDescriptions * - get_all_emitters (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual ::Components::EmitterDescriptions * - get_named_emitters (const Components::NameList & names - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName)); - - virtual ::Components::PublisherDescriptions * - get_all_publishers (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual ::Components::PublisherDescriptions * - get_named_publishers (const Components::NameList & names - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName)); - - // Operations for CCMObject interface - virtual ::CORBA::IRObject_ptr - get_component_def (ACE_ENV_SINGLE_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 void - configuration_complete (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidConfiguration)); - - virtual void - remove (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::RemoveFailure)); - - virtual ::Components::ComponentPortDescription * - get_all_ports (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - // get_component implementation. - virtual CORBA::Object_ptr - _get_component (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - // CIAO specific operations. - - // Activate the object in the container_ - void - _ciao_activate (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - void - _ciao_passivate (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - protected: - // My Executor. - CCM_[component name]_var executor_; - - // My Run-time Context. - [component name]_Context *context_; - - // Managing container. - ::CIAO::Session_Container *container_; - - // Cached provided interfaces. -##foreach [facet name] with [facet type] in (list of all provided interfaces) generate: - [facet type]_var provide_[facet name]_; -##end foreach [facet name] with [facet type] - -##foreach [consumer name] with [eventtype] in (list of all consumers) generate: - [eventtype]Consumer_var consumes_[consumer name]_; -##end foreach [consumer name] with [eventtype] - - }; - - - ////////////////////////////////////////////////////////////////// - // Component Home Glue code implementation - - // Foreach component home - class [SERVANT]_Export [home name]_Servant : - public virtual POA_[home name] // full skeleton name here - { - public: - // Ctor. - [home name]_Servant (CCM_[home name]_ptr exe, - CIAO::Session_Container *c); - - // Dtor. - ~[home name]_Servant (void); - - // User defined and inherited operations -##foreach [operation] in (all explicit operations in [home basename] including its parents) - - // The operation decl here. - -## end foreach opeartion - - // Factory operations -##foreach [factory name] in (all factory operations in [home basename] including its parents) - // for factory operations inherit from parent home(s), they should return - // the corresponding component types their homes manage - virtual [component name]_ptr - [factory name] (.... ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::CreateFailure, - ....)); -##end foreach [factory name] - - // Finder operations -##foreach [finder name] in (all finder operations in [home basename] including its parents) - // for finder operations inherit from parent home(s), they should return - // the corresponding component types their homes manage - virtual [component name]_ptr - [finder name] (.... ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::FinderFailure, - ....)); -##end foreach [finder name] - -## if [home name] is a keyless home - - // Operations for KeylessHome interface - virtual ::Components::CCMObject_ptr - create_component (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::CreateFailure)); - -## else [home basename] is keyed home with [key type] - - // We do not support key'ed home at the moment but we might - // as well generate the mapping. - virtual [component name]_ptr create ([key type] *key - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::CreationFailure, - ::Components::DuplicateKeyValue, - ::Components::InvalidKey)); - - virtual [component name]_ptr - find_by_primary_key ([key type] *key - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::FinderFailure, - ::Components::UnknownKeyValue, - ::Components::InvalidKey)); - - virtual void remove ([key type] *key - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::RemoveFailure, - ::Components::UnknownKeyValue, - ::Components::InvalidKey)); - - virtual [key type] * - get_primary_key ([component name]_ptr comp - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - -## endif (keyed or keyless home) - - // Operations for Implicit Home interface - virtual [component name]_ptr - create (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::CreateFailure)); - - // Operations for CCMHome interface - virtual ::CORBA::IRObject_ptr - get_component_def (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual ::CORBA::IRObject_ptr - get_home_def (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual void remove_component (Components::CCMObject_ptr comp - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::RemoveFailure)); - - protected: - // Helper method for factory operations. - [component name]_ptr - _ciao_activate_component (CCM_[component name]_ptr exe - ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - void - _ciao_passivate_component ([component name]_ptr comp - ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - - // My Executor. - CCM_[home name]_var executor_; - - // My Container - CIAO::Session_Container *container_; - - // Components this home manages. - ACE_Hash_Map_Manager_Ex <PortableServer::ObjectId, - [component name]_Servant*, - TAO_ObjectId_Hash, - ACE_Equal_To<PortableServer::ObjectId>, - ACE_SYNCH_MUTEX> component_map_; - }; - -} - -extern "C" [SERVANT]_Export ::PortableServer::Servant -create[home name]_Servant (::Components::HomeExecutorBase_ptr p, - CIAO::Session_Container *c - ACE_ENV_ARG_DECL_WITH_DEFAULTS); - -#if defined (__ACE_INLINE__) -# include "[idl-name]_svnt.inl" -#endif /* __ACE_INLINE__ */ - - -#include /**/ "ace/post.h" -#endif /* CIAO_GLUE_SESSION_[idl-basename]_SVNT_H */ diff --git a/CIAO/docs/templates/CIAO_Glue_Session_Template.inl b/CIAO/docs/templates/CIAO_Glue_Session_Template.inl deleted file mode 100644 index 8b02307bc85..00000000000 --- a/CIAO/docs/templates/CIAO_Glue_Session_Template.inl +++ /dev/null @@ -1,494 +0,0 @@ -// $Id$ -*- C++ -*- - -// The generated filename for files using this template shoule be -// [idl-basename]GS.i GS --> GlueSession - -// @@ Notice: [ciao module name] can expand to either CIAO_GLUE or -// CIAO_GLUE_[module name] as defined in the header file. - -/// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -/// @@@ Notice that all component and interface names need to be -/// fully qualified as we are creating a new namespace for the CIAO's -/// container glue code. -/// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - -////////////////////////////////////////////////////////////////// -// Facet Glue Code implementation -// @@ We are assuming that these facets are declared under the same -// module as the component (thus, we are placing this glue code -// here under the same namespace. If they are not, we will -// either be generating them in separate namespaces, or include -// some other CIDL generated files to get the glue code -// implementation. -////////////////////////////////////////////////////////////////// - -##foreach [facet type] in (all facet interface types in the original IDL) -// Constructor and destructor. -ACE_INLINE -[ciao module name]::[facet type]_Servant::[facet type]_Servant (CCM_[facet type]_ptr executor, - ::Components::CCMContext_ptr c) - : executor_ (CCM_[facet type]::_duplicate (executor)), - ctx_ (Components::CCMContext::_duplicate (c)) -{ -} - -ACE_INLINE -[ciao module name]::[facet type]_Servant::~[facet tyep]_Servant () -{ -} - - -## foreach [operation] in (all facet operations) - -// This is only a guideline... we always relay the operation to underlying -// executor. - -ACE_INLINE [operation return_type] -[ciao module name]::[facet type]_Servant::[operation] ([operation args]) -{ - // Simply relay to executor. May not need to return the result... - return this->executor_->operation ([operation args]); -} -## end foreach [operation] - -##end foreach [facet type] - - -////////////////////////////////////////////////////////////////// -// Component specific context implementation -////////////////////////////////////////////////////////////////// - -ACE_INLINE -[ciao module name]::[component name]_Context::[component name]_Context (::Components::CCMHome_ptr home, - ::CIAO::Session_Container *c, - [ciao module name]::[component name]_Servant *sv) - : home_ (::Components::CCMHome::_duplicate (home)), - container_ (c), - servant_ (sv) -{ - -} - -ACE_INLINE -[ciao module name]::[component name]_Context::~[component name]_Context () -{ -} - -// Operations for emits interfaces. -##foreach [emit name] with [eventtype] in (list of all emitters) generate: - -ACE_INLINE void -[ciao module name]::[component name]_Context::connect_[emit name] ([eventtype]Consumer_ptr c - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::AlreadyConnected)) -{ - if (CORBA::is_nil (c)) - ACE_THROW (CORBA::BAD_PARAM ()); - - if (! CORBA::is_nil (this->ciao_emits_[emit name]_consumer_.in ())) - ACE_THROW (::Components::AlreadyConnected ()); - - this->ciao_emits_[emit name]_consumer_ = c; -} - -ACE_INLINE [eventtype]Consumer_ptr -[ciao module name]::[component name]_Context::disconnect_[emit name] (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::NoConnection)) -{ - if (CORBA::is_nil (this->ciao_emits_[emit name]_consumer_.in ())) - ACE_THROW (::Components::NoConnection ()); - - return this->ciao_emits_[emit name]_consumer_._retn (); -} - -##end foreach [emit name] with [eventtype] - -// Operations for ::Components::CCMContext -ACE_INLINE ::Components::Principal_ptr -[ciao module name]::[component name]_Context::get_caller_principal (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - // @@ We don't support Security in CIAO yet. - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0); -} - -ACE_INLINE ::Components::CCMHome_ptr -[ciao module name]::[component name]_Context::get_CCM_home (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - return ::Components::CCMHome::_duplicate (this->home_.in ()); -} - -ACE_INLINE CORBA::Boolean -[ciao module name]::[component name]_Context::get_rollback_only (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::IllegalState)) -{ - // @@ We don't support Transaction in CIAO yet. - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0); -} - -ACE_INLINE ::Components::Transaction::UserTransaction_ptr -[ciao module name]::[component name]_Context::get_user_transaction (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::IllegalState)) -{ - // @@ We don't support Transaction in CIAO yet. - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0); -} - -ACE_INLINE CORBA::Boolean -[ciao module name]::[component name]_Context::is_caller_in_role (const char * role - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - ACE_UNUSED_ARG (role); - - // @@ We don't support Transaction in CIAO yet. - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0); -} - -ACE_INLINE void -[ciao module name]::[component name]_Context::set_rollback_only (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::IllegalState)) -{ - // @@ We don't support Transaction in CIAO yet. - ACE_THROW (CORBA::NO_IMPLEMENT ()); -} - -////////////////////////////////////////////////////////////////// -// Component Servant Glue code implementation -////////////////////////////////////////////////////////////////// - -##foreach [operation] in all supported interfaces of own component and all inherited components and attribute accessors/mutators - -// This is only a guideline... we always relay the operation to underlying -// executor. - -ACE_INLINE [operation return_type] -[ciao module name]::[component name]_Servant::[operation] ([operation args]) -{ - // Simply relay to executor. May not need to return the result... - return this->executor_->operation ([operation args]); -} - -##end - -##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate: -## if [receptacle name] is a simplex receptacle ('uses') -// Simplex [receptacle name] connection management operations -ACE_INLINE void -[ciao module name]::[component name]_Servant::connect_[receptacle name] ([uses type]_ptr c - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::AlreadyConnected, - ::Components::InvalidConnection)) -{ - this->context_->connect_[receptacle name] (c - ACE_ENV_ARG_PARAMETER); -} - -ACE_INLINE [uses type]_ptr -[ciao module name]::[component name]_Servant::disconnect_[receptacle name] (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::NoConnection)) -{ - return this->context_->disconnect_[receptacle name] (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -ACE_INLINE [uses type]_ptr -[ciao module name]::[component name]_Servant::get_connection_[receptacle name] (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - return this->context_->get_connection_[receptacle name] (ACE_ENV_SINGLE_ARG_PARAMETER); -} -## else ([receptacle name] is a multiplex ('uses multiple') receptacle) - -// Multiplex [receptacle name] connection management operations -ACE_INLINE ::Components::Cookie * -[ciao module name]::[component name]_Servant::connect_[receptacle name] ([uses type]_ptr c - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::ExceedConnectionLimit, - ::Components::InvalidConnection)) -{ - return this->context_->connect_[receptacle name] (c - ACE_ENV_ARG_PARAMETER); -} - -ACE_INLINE [uses type]_ptr -[ciao module name]::[component name]_Servant::disconnect_[receptacle name] (::Components::Cookie *ck - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::InvalidConnection)) -{ - return this->context_->disconnect_[receptacle name] (ck - ACE_ENV_ARG_PARAMETER); -} - -ACE_INLINE [receptacle name]Connections * -[ciao module name]::[component name]_Servant::get_connections_[receptacle name] (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - return this->context_->get_connections_[receptacle name] (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -## endif [receptacle name] -##end foreach [receptacle name] with [uses type] - -////////////////////////////////////////////////////////////////// -// EventConsumer Glue Code implementation -// @@ We are assuming that these consumers are declared under the same -// module as the component (thus, we are placing this glue code -// here under the same namespace. If they are not, we will -// either be generating them in separate namespaces, or include -// some other CIDL generated files to get the glue code -// implementation. -////////////////////////////////////////////////////////////////// - -##foreach [consumer name] with [eventtype] in (list of all consumers) generate: - -// Constructor and destructor. -ACE_INLINE -[ciao module name]::[component name]_Servant::[eventtype]Consumer_[consumer name]_Servant::[eventtype]Consumer_[consumer name]_Servant - (CCM_[component name]_ptr executor, - CCM_[component name]_Context_ptr c) - : executor_ (CCM_[component name]::_duplicate (executor)), - ctx_ (CCM_[component name]_Context::_duplicate (c)) -{ -} - -ACE_INLINE -[ciao module name]::[component name]_Servant::[eventtype]Consumer_[consumer name]_Servant::~[eventtype]Consumer_[consumer name]_Servant () -{ -} - -ACE_INLINE CORBA::Object_ptr -[ciao module name]::[component name]_Servant::[eventtype]Consumer_[consumer name]_Servant::_get_component (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - return this->ctx_->get_CCM_object (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -ACE_INLINE void -[ciao module name]::[component name]_Servant::[eventtype]Consumer_[consumer name]_Servant::push_[eventtype] - ([eventtype] *evt - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - this->executor_->push_[consumer name] (evt - ACE_ENV_ARG_PARAMETER); -} - -## foreach [type] in (all parents of eventtype, if any, not including EventConsumerBase) -ACE_INLINE void -[ciao module name]::[component name]_Servant::[eventtype]Consumer_[consumer name]_Servant::push_[type] - ([type] *evt - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - // @@ Problem, there's no way to handle this case. - - // this->executor_->push_[consumer name] (evt ACE_ENV_ARG); - ACE_THROW (::CORBA::BAD_PARAM ()); -} -## end [type] - -##end foreach [consumer name] - -// Operations for emits interfaces. -##foreach [emit name] with [eventtype] in (list of all emitters) generate: -ACE_INLINE void -[ciao module name]::[component name]_Servant::connect_[emit name] ([eventtype]Consumer_ptr c - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException - ::Components::AlreadyConnected)) -{ - this->context_->connect_[emit name] (c - ACE_ENV_ARG_PARAMETER); -} - -ACE_INLINE [eventtype]Consumer_ptr -[ciao module name]::[component name]_Servant::disconnect_[emit name] (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::NoConnection)) -{ - return this->context_->disconnect_[emit name] (ACE_ENV_SINGLE_ARG_PARAMETER); -} -##end foreach [emit name] with [eventtype] - -// Operations for publishes interfaces. -##foreach [publish name] with [eventtype] in (list of all publishers) generate: -ACE_INLINE ::Components::Cookie * -[ciao module name]::[component name]_Servant::subscribe_[publish name] ([eventtype]Consumer_ptr c - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::ExceededConnectionLimit)) -{ - return this->context_->subscribe_[publish name] (c - ACE_ENV_ARG_PARAMETER); -} - -ACE_INLINE [eventtype]Consumer_ptr -[ciao module name]::[component name]_Servant::unsubscribe_[publish name] (::Components::Cookie *ck - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::InvalidConnection)) -{ - return this->context_->unsubscribe_[publish name] (ck - ACE_ENV_ARG_PARAMETER); -} -##end foreach [publish name] with [eventtype] - -////////////////////////////////////////////////////////////////// -// Component Home Glue code implementation -////////////////////////////////////////////////////////////////// - -ACE_INLINE -[ciao module name]::[home name]_Servant::[home name]_Servant (CCM_[home name]_ptr exe, - CIAO::Session_Container *c) - : executor_ (CCM_[home name]::_duplicate (exe)), - container_ (c) -{ -} - -ACE_INLINE -[ciao module name]::[home name]_Servant::~[home name]_Servant (void) -{ -} - -##foreach [operation] in (all explicit operations in [home basename] including its parents) - -// The operation impl here. This can simply be relayed to the underlying executor... - -## end foreach opeartion - -##foreach [factory name] in (all factory operations in [home basename] including its parents) -// for factory operations inherit from parent home(s), they should return -// the corresponding component types their homes manage -ACE_INLINE [component name]_ptr -[ciao module name]::[home name]_Servant::[factory name] (.... ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::CreateFailure, - ....)) -{ - Components::EnterpriseComponent_var _ciao_ec = - this->executor_->[factory name] (.... ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - CCM_[component name]_var _ciao_comp - = CCM_[component name]::_narrow (_ciao_ec.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - return this->_ciao_activate_component (_ciao_comp.in () - ACE_ENV_ARG_PARAMETER); -} -##end foreach [factory name] - -##foreach [finder name] in (all finder operations in [home basename] including its parents) -// for finder operations inherit from parent home(s), they should return -// the corresponding component types their homes manage -ACE_INLINE [component name]_ptr -[ciao module name]::[home name]_Servant::[finder name] (.... ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::FinderFailure, - ....)) -{ - Components::EnterpriseComponent_var com = - this->executor_->[finder name] (.... ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); - - // Do we create a new object reference referring to the same object, - // or do we try to create a different objref referring to the same object? - return this->_ciao_create_helper (com - ACE_ENV_ARG_PARAMETER); -} -##end foreach [finder name] - -## if [home name] is a keyless home - -// Operations for KeylessHome interface -ACE_INLINE ::Components::CCMObject_ptr -[ciao module name]::[home name]_Servant::create_component (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::CreateFailure)) -{ - // Simply forward to the create method. - return this->create (ACE_ENV_SINGLE_ARG_PARAMETER); -} - -## else [home basename] is keyed home with [key type] - -// We do not support key'ed home at the moment but we might -// as well generate the mapping. -ACE_INLINE [component name]_ptr -[ciao module name]::[home name]_Servant::create ([key type] *key) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::CreationFailure, - ::Components::DuplicateKeyValue, - ::Components::InvalidKey)) -{ - // @@ TO-DO when we suppor keyed home. - - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0); -} - -ACE_INLINE [component name]_ptr -[ciao module name]::[home name]_Servant::find_by_primary_key ([key type] *key) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::FinderFailure, - ::Components::UnknownKeyValue, - ::Components::InvalidKey)) -{ - // @@ TO-DO when we suppor keyed home. - - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0); -} - - -ACE_INLINE void -[ciao module name]::[home name]_Servant::remove ([key type] *key) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::RemoveFailure, - ::Components::UnknownKeyValue, - ::Components::InvalidKey)) -{ - // @@ TO-DO when we suppor keyed home. - - ACE_THROW (CORBA::NO_IMPLEMENT ()); -} - -ACE_INLINE [key type] * -[ciao module name]::[home name]_Servant::get_primary_key ([component name]_ptr comp) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - // @@ TO-DO when we suppor keyed home. - - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0); -} - -## endif (keyed or keyless home) - - -// Operations for CCMHome interface -ACE_INLINE ::CORBA::IRObject_ptr -[ciao module name]::[home name]_Servant::get_component_def (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - // @@ TO-DO. Contact IfR? - - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0); -} - -ACE_INLINE CORBA::IRObject_ptr -[ciao module name]::[home name]_Servant::get_home_def (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - // @@ TO-DO. Contact IfR? - - ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0); -} diff --git a/CIAO/docs/templates/Executor.idl b/CIAO/docs/templates/Executor.idl deleted file mode 100644 index 259bffac0df..00000000000 --- a/CIAO/docs/templates/Executor.idl +++ /dev/null @@ -1,246 +0,0 @@ -// $Id$ - -// =========================================================== -// -// @file Executor.idl -// -// The purpose of this IDL file is to serve as a template for the CIDL -// generated equivalent executor file. The CIDL will generate this -// file directly which, in turn, gets compiled by the TAO IDL compiler -// to generate the C++ mappings for the stuff defined in this file -// into a set of [idl-name]EC.{h,inl,cpp} files. -// -// This intermediate step is necessary because component implemenetors -// will need to extend these executor definitions (thru inheritance) -// to implemenet more complex executor implementations, such as those -// that support session component interface. (This is necessary to -// properly support C++ mapping for features such as interface -// narrowing.) -// -// What are missing in the template for executor mappings are the -// exception specifications for most operations. -// -// @author Nanbor Wang <nanbor@cs.wustl.edu> -// -// =========================================================== - -#ifndef [component_idl]E_IDL -#define [component_idl]E_IDL - -#include "CCM_Container.idl" // Found in $(CIAO_ROOT)/ciao - // For various definitions of container - // internal/callback interfaces -#include "[component_idl].idl" // Original component IDL definition -// @@ We may need to include other *E.idl here.... Can't figure out -// if we can do this automagically or not. - -##if there are module definitions, preserve them all -module [module_name] { -##endif - -//////////////////////////////////////////////////////////////////// -//// * Iterate thru all supported interface types -//// It's possible that we need to put some of the common supported -//// interface definitions into a separate compilation unit. How do we -//// specify that in CCIDL? I haven't figured that out. Perhaps -//// allowing CCIDL to compile files that contain no component -//// definition? -##foreach [interface_type] in (types of all supported interface) generate: - - local interface CCM_[interface_type] : [interface_type] - { - }; - -##end foreach [interface_type] - -//////////////////////////////////////////////////////////////////// -//// * Iterate thru all facet ('provides' interface) interface types -//// It's possible that we need to put some of the common facet -//// definitions into a separate compilation unit. How do we -//// specify that in CCIDL? I haven't figured that out. Perhaps -//// allowing CCIDL to compile files that contain no component -//// definition? -##foreach [facet_interface_type] in (types of all facets) generate: - - local interface CCM_[facet_interface_type] : [facet_interface_type] - { - }; - -##end foreach [facet_interface_type] - -//////////////////////////////////////////////////////////////////// -//// * Iterate thru all event ('emits', "publishes', or 'consumes') types -//// It's possible that we need to put some of the EventConsumer -//// definitions into a separate compilation unit. Like in the case -//// of facets interface mappings, how do we -//// specify that in CCIDL? I haven't figured that out. Perhaps -//// allowing CCIDL to compile files that contain no component -//// definition? - -##foreach [eventtype] in (all eventtypes) generate: - - local interface CCM_[eventtype]Consumer - { - void push (in [eventtype] ev); - }; - -##end foreach [eventtype] - - -//////////////////////////////////////////////////////////////////// -//// * Iterate thru all component definitions in the IDL files. -//// Notice that there's no distinction between entity and session -//// components in executor mappings. - -##foreach [component basename] in (all component definitions) generate: - - // Component Main Executor Interface. We currently do not - // support Executor-based implementation. - - local interface CCM_[component basename]_Executor - : -## if [component basename] inherits from [parent component name] - CCM_[parent component name]_Executor -## else - ::Components::EnterpriseComponent -## endif -## foreach [interface name] in (all component supported interfaces) generate: - , [interface name] -## end foreach [interface name] - - { -## foreach [attribute definition] in (attributes defined in [component basename]) generate: - [attribute definition]; -## end foreach [attribute definition] - - }; - - // Monolithic component executor. - // For implementing monolithic component call back interface. - - local interface CCM_[component basename] - : -## if [component basename] inherits from [parent component name] - CCM_[parent component name] -## else - ::Components::EnterpriseComponent -## endif -## foreach [interface name] in (all component supported interfaces) generate: - , [interface name] -## end foreach [interface name] - - { -## foreach [attribute definition] in (attributes defined in [component basename]) generate: - [attribute definition]; -## end foreach [attribute definition] - -## foreach [facet name] with [facet type] in (list of all provided interfaces) generate: - CCM_[facet type] get_[facet name] (); -## end foreach [facet name] with [facet type] - -## foreach [event name] with [eventtype] in (list of all event sinks) generate: - void push_[event name] (in [eventtype] ev); -## end foreach [event name] with [eventtype] - - }; - - /** - * Component Context Interface - * - * Notice that we are taking a shortcut here to inherit the - * component-specific context from SessionContext directly instead - * of CCMContext. - */ - local interface CCM_[component basename]_Context - : -## if [component basename] inherits from [parent component name] - CCM_[parent component name]_Context -## else - ::Components::SessionContext -## endif - { - -## foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate: -## if [receptacle name] is a simplex receptacle ('uses') - [uses type] get_connection_[receptacle name] (); -## else ([receptacle name] is a multiplex ('uses multiple') receptacle) - // [receptacle name]Connections typedef'ed as a sequence of - // struct [receptacle name]Connection. - [receptacle name]Connections get_connections_[receptacle name] (); -## endif [receptacle name] -## end foreach [receptacle name] with [uses type] - -## foreach [event name] with [eventtype] in (list of all event sources) generate: - void push_[event name] (in [eventtype] ev); -## end foreach [event name] with [eventtype] - - }; - -##end foreach [component basename] - - -//////////////////////////////////////////////////////////////////// -//// * Iterate thru all home definitions in the IDL files. - -##foreach [home basename] in (all home definitions) generate: - - local interface CCM_[home basename]Explicit - : -## if [home basename] inherits from [parent home name] - CCM_[parent home name]Explicit -## else - ::Components::HomeExecutorBase -## endif -## foreach [interface name] in (all home supported interfaces) generate: - , [interface name] -## end foreach [interface name] - { -##foreach [operation] in (all explicit operations defined in [home basename]) - - // The operation decl here. - -## end foreach opeartion - -##foreach [factory name] in (all factory operations defined in [home basename]) - ::Components::EnterpriseComponent [factory name] (....) - raise (Components::CreateFailure, ....); -##end foreach [factory name] - -##foreach [finder name] in (all finder operations defined in [home basename]) - ::Components::EnterpriseComponent [finder name] (....) - raise (Components::FinderFailure, ....); -##end foreach [finder name] - }; - - local interface CCM_[home basename]Implicit - { -## if [home basename] is a keyless home - ::Components::EnterpriseComponent create () - raises (::Components::CCMException); -## else [home basename] is key'ed home with [key type] - // We do not support key'ed home at the moment but we might - // as well generate the mapping. - ::Components::EnterpriseComponent create (in [key type] key) - raises (::Components::CCMException); - - ::Components::EnterpriseComponent find_by_primary_key (in [key type] key) - raises (::Components::CCMException); - - void remove (in [key type] key) - raises (::Components::CCMException); -## endif (key'ed or keyless home) - }; - - local interface CCM_[home basename] - : CCM_[home basename]Explicit, - CCM_[home basename]Implicit - { - }; - -##end foreach [home basename] - -##if there are module definitions, preserve them all -}; -##endif - -#endif /* [component_idl]E_IDL */ diff --git a/CIAO/docs/templates/cidl_template.cidl b/CIAO/docs/templates/cidl_template.cidl deleted file mode 100644 index 3d359708f32..00000000000 --- a/CIAO/docs/templates/cidl_template.cidl +++ /dev/null @@ -1,31 +0,0 @@ -// $Id$ -*- C++ -*- - -/** - * @file cidl_template.cidl - * - * This file show an example cidl file. - */ - -// @@ We do not support import (yet). -//import [component module]; - -// [idl-basename] contains the IDL3 definitions for component(s) and -// home(s) and the interfaces that they need. - -#include "[idl-basename].idl" - -// We only support a simple session implementation definition, for -// now. @@ What is the relation of various names here and the -// generated names we used in the glue code? -composition session [composition name] -{ - home executor [home executor name] - { - implement [home name]; - manages [component executor name]; - }; -}; - - -// @@ We should also generate somet sort of implementaion template for -// users. E.g., a set of [idl-basename]_impl.* and the MPC files(?). |