diff options
Diffstat (limited to 'TAO/CIAO/docs/templates/CIAO_Glue_Session_Template.cpp')
-rw-r--r-- | TAO/CIAO/docs/templates/CIAO_Glue_Session_Template.cpp | 155 |
1 files changed, 89 insertions, 66 deletions
diff --git a/TAO/CIAO/docs/templates/CIAO_Glue_Session_Template.cpp b/TAO/CIAO/docs/templates/CIAO_Glue_Session_Template.cpp index 3c6fa420294..f6c5e10bf6f 100644 --- a/TAO/CIAO/docs/templates/CIAO_Glue_Session_Template.cpp +++ b/TAO/CIAO/docs/templates/CIAO_Glue_Session_Template.cpp @@ -51,12 +51,6 @@ CORBA::Object_ptr ACE_THROW_RETURN (CORBA::INTERNAL (), 0); } -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class TAO::Utils::Servant_Var<[facet type]>; -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate TAO::Utils::Servant_Var<[facet type]>; -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ - ##end foreach [facet type] @@ -87,8 +81,8 @@ template class TAO::Utils::Servant_Var<[facet type]>; ++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_); + retv[i]->objref = [uses type]::_narrow (entry.int_id_.in ()); + retv[i]->ck = new CIAO::Map_Key_Cookie (entry.ext_id_); ++i; } @@ -99,7 +93,8 @@ template class TAO::Utils::Servant_Var<[facet type]>; ##foreach [event name] with [eventtype] in (list of all event sources) generate: void -[ciao module name]::[component name]_Context::push_[event name] ([eventtype]_ptr ev ACE_ENV_ARG_DECL) +[ciao module name]::[component name]_Context::push_[event name] ([eventtype]_ptr ev + ACE_ENV_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { ## if [event name] belongs to an 'emits' port @@ -114,7 +109,8 @@ void ++iter) { ACE_Active_Map_Manager<[eventtype]Consumer_var>::ENTRY &entry = *iter; - [eventtype]Consumer_var c = [eventtype]Consumer::_narrow (entry.int_id_.in ()); + [eventtype]Consumer_var c + = [eventtype]Consumer::_narrow (entry.int_id_.in ()); c->push_[eventtype] (ev ACE_ENV_ARG_PARAMETER); ACE_CHECK; @@ -294,13 +290,13 @@ CORBA::Object_ptr if (CORBA::is_nil (fexe.in ())) ACE_THROW_RETURN (CORBA::INTERNAL (), 0); - // @@ What's the auto_ptr for servant? - TAO::Utils::Servant_Var<[facet type]_Servant> svt = - new [facet type]_Servant (fexe.in (), - this->context_); + [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 (svc.in () - ACE_ENV_ARG_PARAMETER); + CORBA::Object_var obj = this->container_->install_servant (svc.in () + ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); [facet type]_var fo = [facet type]::_narrow (obj @@ -326,10 +322,11 @@ void ACE_THROW_SPEC ((CORBA::SystemException, ::Components::BadEventType)) { - [eventtype] *ev_type = [eventtype]::_downcast (ev); + [eventtype]_var ev_type = [eventtype]::_downcast (ev); if (ev_type != 0) { - this->push_[eventtype] (ev ACE_ENV_ARG); + this->push_[eventtype] (ev_type.in () + ACE_ENV_ARG_PARAMETER); return; } @@ -340,19 +337,18 @@ void // get_component implementation. [eventtype]Consumer_ptr -[ciao module name]::[component name]_Servant::get_consumer_[consumer name] (ACE_ENV_SINGLE_ARG) +[ciao module name]::[component name]_Servant::get_consumer_[consumer name] (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { - [eventtype]Consumer_var consumes_[consumer name]_; - if (CORBA::is_nil (this->consumes_[consumer name]_.in ())) { - TAO::Utils::Servant_Var<[eventtype]Consumer_[consumer name]_Servant> svt = - new [eventtype]Consumer_[consumer name]_Servant (this->executor_, - this->context_); + [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_, + this->context_); + PortableServer::ServantBase_var safe_servant (svt); - CORBA::Object_var obj = this->container_->_install_servant (svt.in () - ACE_ENV_ARG_PARAMETER); + 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 @@ -398,6 +394,7 @@ CORBA::Object_ptr = 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; @@ -410,7 +407,7 @@ CORBA::Object_ptr x->type_id ((const char *) "[facet type's repo id]"); // x->facet_ref (this->provide_[facet name] (ACE_ENV_SINGLE_ARG_PARAMETER)); - collection[i] = x; + collection[i] = x._retn (); ++i; ##end foreach [facet name] with [facet type] @@ -426,25 +423,28 @@ CORBA::Object_ptr { ::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: - if (ACE_OS_String::strcmp (names[i].in (), "[facet name]") == 0) + (else) if (ACE_OS_String::strcmp (names[i].in (), "[facet name]") == 0) { - 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 ("[facet name]" ACE_ENV_ARG_PARAMETER)); + x->facet_ref (this->provide_[facet name] (ACE_ENV_SINGLE_ARG_PARAMETER)); - collection[i] = x; } ##end foreach [facet name] with [facet type] - ACE_THROW_RETURN (::Components::InvalidName (), 0); + else + ACE_THROW_RETURN (::Components::InvalidName (), 0); + + collection[i] = x._retn (); } return collection._retn (); } @@ -558,9 +558,11 @@ CORBA::Object_ptr ## if [receptacle name] is a simplex receptacle ('uses') [receptacle name]Connections_var retv = new ::Components::ConnectionConnections (1); + retv->length (1); - retv[0].ck = 0; - retv[0].objref = this->get_connection_[receptacle name] (ACE_ENV_SINGLE_ARG_PARAMETER); + 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 (); @@ -581,18 +583,21 @@ CORBA::Object_ptr ::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].Name ((const char *) "[receptacle name]"); - retv[i].type_id ((const char *) "[uses type repo id]"); + 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); + retv[i]->is_multiple (0); ## else ([receptacle name] is a multiplex ('uses multiple') receptacle) - retv[i].is_multiple (1); + retv[i]->is_multiple (1); ## endif [receptacle name] - retv[i].connections (*this->get_connections ("[receptacle name]" - ACE_ENV_ARG_PARAMETER)); + retv[i]->connections (*this->get_connections ("[receptacle name]" + ACE_ENV_ARG_PARAMETER)); ++i; ##end foreach [receptacle name] with [uses type] @@ -607,25 +612,28 @@ CORBA::Object_ptr { ::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_ReceptacleDescription; ##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate: - if (ACE_OS_String::strcmp (name, "[receptacle name]") == 0) + (else) if (ACE_OS_String::strcmp (name, "[receptacle name]") == 0) { - retv[i].Name ((const char *) "[receptacle name]"); - retv[i].type_id ((const char *) "[uses type repo id]"); + 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); + retv[i]->is_multiple (0); ## else ([receptacle name] is a multiplex ('uses multiple') receptacle) - retv[i].is_multiple (1); + retv[i]->is_multiple (1); ## endif [receptacle name] - retv[i].connections (*this->get_connections ("[receptacle name]" + retv[i]->connections (*this->get_connections ("[receptacle name]" ACE_ENV_ARG_PARAMETER)); } ##end foreach [receptacle name] with [uses type] - ACE_THROW_RETURN (::Components::InvalidName (), 0); + else + ACE_THROW_RETURN (::Components::InvalidName (), 0); } return retv._retn (); } @@ -643,7 +651,7 @@ CORBA::Object_ptr ##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_PARAMATER); + return this->get_consumer_[consumer name] (ACE_ENV_SINGLE_ARG_PARAMETER); ##end foreach [consumer name] with [eventtype] ACE_THROW_RETURN (Components::InvalidName (), 0); } @@ -764,14 +772,18 @@ void ::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].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); + 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 ()); + retv[i]->consumer (c.in ()); ##end foreach [consumer name] with [eventtype] return retv._retn (); @@ -785,23 +797,27 @@ void { ::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: - if (ACE_OS_String::strcmp (names[i].in (), "[consumer name]") == 0) + (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"); + 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 ()); + retv[i]->consumer (c.in ()); } ##end foreach [consumer name] with [eventtype] - ACE_THROW_RETURN (::Components::InvalidName (), 0); + else + ACE_THROW_RETURN (::Components::InvalidName (), 0); } return retv._retn (); } @@ -813,11 +829,14 @@ void ::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].Name ("[emit name]"); - retv[i].type_id ("[eventtype]Consumer repo id"); - retv[i].consumer ([eventtype]Consumer::_duplicate (this->context_->ciao_emits_[emit name]_consumer_)); + 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_)); ##end foreach [emitter name] with [eventtype] return retv._retn (); @@ -831,19 +850,23 @@ void { ::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: - if (ACE_OS_String::strcmp (names[i].in (), "[emit name]") == 0) + (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_)); + 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_)); } ##end foreach [consumer name] with [eventtype] - ACE_THROW_RETURN (::Components::InvalidName (), 0); + else + ACE_THROW_RETURN (::Components::InvalidName (), 0); } return retv._retn (); } |