summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be/be_visitor_component/servant_svs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_component/servant_svs.cpp')
-rw-r--r--TAO/TAO_IDL/be/be_visitor_component/servant_svs.cpp28
1 files changed, 20 insertions, 8 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_component/servant_svs.cpp b/TAO/TAO_IDL/be/be_visitor_component/servant_svs.cpp
index f099df71945..d86de6b4ae1 100644
--- a/TAO/TAO_IDL/be/be_visitor_component/servant_svs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_component/servant_svs.cpp
@@ -1,4 +1,3 @@
-
//=============================================================================
/**
* @file servant_svs.cpp
@@ -12,6 +11,7 @@
* @author Jeff Parsons
*/
//=============================================================================
+#include <be_helper.h>
be_visitor_servant_svs::be_visitor_servant_svs (be_visitor_context *ctx)
: be_visitor_component_scope (ctx),
@@ -308,13 +308,25 @@ be_visitor_servant_svs::visit_provides (be_provides *node)
<< "PortableServer::POA_var POA = cnt_safe->the_port_POA ();" << be_nl
<< "::CORBA::Object_var tmp =" << be_idt_nl
<< "this->get_facet_executor (\"" << port_name << "\");"<< be_uidt_nl << be_nl
- << "::CIAO_FACET" << prefix_connector
- << scope->flat_name () << "::" << lname
- << "_Servant *" << port_name << "_servant_impl = " << be_idt_nl
- << "new ::CIAO_FACET" << prefix_connector
- << scope->flat_name () << "::" << lname
- << "_Servant ("<< global << sname << "::CCM_" << lname << "::_narrow (tmp.in())," << be_nl
- << "this->context_);" << be_uidt_nl << be_nl
+ << global << sname << "::CCM_" << lname << "_var tmp_var = " << be_idt_nl
+ << global << sname <<"::CCM_" << lname
+ << "::_narrow (tmp.in());" << be_uidt_nl << be_nl
+ << "typedef " << global << "CIAO_FACET" << prefix_connector
+ << scope->flat_name () << "::" << obj->local_name () << "_Servant_T <" << be_idt_nl
+ << "POA_" << sname << global << obj->local_name ()
+ << "," << be_nl << global << sname <<"::CCM_" << lname << "," << be_nl
+ << global << "Components::" << be_global->ciao_container_type ()
+ << "Context>" << be_idt_nl << lname
+ << "_type;" << be_uidt_nl << be_uidt_nl
+ << lname << "_type *" << port_name << "_servant_impl = 0;" << be_nl
+ << "ACE_NEW_THROW_EX (" << be_idt_nl
+ << port_name << "_servant_impl," << be_nl
+ << lname << "_type (" << be_idt_nl
+ << "tmp_var.in(), " << be_nl
+ << "this->context_)," << be_uidt_nl
+ << "CORBA::NO_MEMORY ());" << be_uidt_nl << be_nl
+ << "PortableServer::ServantBase_var safe_base_servant ("
+ << port_name << "_servant_impl);" << be_nl << be_nl
<< "PortableServer::ObjectId_var " << port_name << "_servant_oid =" << be_idt_nl
<< "PortableServer::string_to_ObjectId (obj_id.c_str());" << be_uidt_nl << be_nl
<< "POA->activate_object_with_id(" << port_name << "_servant_oid.in(),"