diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2010-04-07 13:50:20 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2010-04-07 13:50:20 +0000 |
commit | 20832285887f20b75e7e5ecfc165f457b1ef3b12 (patch) | |
tree | 83970f69fe7ca3855941a5dee7e05208c5628484 | |
parent | efcbe21129c77677e16fb82106a3bfd5f1c0a1e5 (diff) | |
download | ATCD-20832285887f20b75e7e5ecfc165f457b1ef3b12.tar.gz |
ChangeLogTag: Wed Apr 7 13:47:38 UTC 2010 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r-- | TAO/ChangeLog | 15 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_component.cpp | 16 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_component/servant_svh.cpp | 11 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_component/servant_svs.cpp | 56 | ||||
-rw-r--r-- | TAO/TAO_IDL/be_include/be_component.h | 2 |
5 files changed, 70 insertions, 30 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 302ad82a75b..aee5b6f91ab 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,18 @@ +Wed Apr 7 13:47:38 UTC 2010 Jeff Parsons <j.parsons@vanderbilt.edu> + + * TAO_IDL/be/be_component.cpp: + * TAO_IDL/be_include/be_component.h: + + Added additional flag to indicated the presence of a + multiplex uses port in the component. + + * TAO_IDL/be/be_visitor_component/servant_svh.cpp: + * TAO_IDL/be/be_visitor_component/servant_svs.cpp: + + Added checks for the above flag, to determine if the Cookie + argument in a generated disconnect() method will be used + or not. If not used, it is generated as commented out. + Wed Apr 7 10:39:12 UTC 2010 Marijke Hengstmengel <mhengstmengel@remedy.nl> * tests/Bug_2953_Regression/client.cpp diff --git a/TAO/TAO_IDL/be/be_component.cpp b/TAO/TAO_IDL/be/be_component.cpp index c79e1f51ed1..fc6f454d1ba 100644 --- a/TAO/TAO_IDL/be/be_component.cpp +++ b/TAO/TAO_IDL/be/be_component.cpp @@ -17,6 +17,7 @@ #include "be_visitor.h" #include "ast_mirror_port.h" +#include "ast_uses.h" #include "global_extern.h" #include "utl_err.h" @@ -61,6 +62,7 @@ be_component::be_component (UTL_ScopedName *n, false), has_provides_ (false), has_uses_ (false), + has_uses_multiple_ (false), has_publishes_ (false), has_consumes_ (false), has_emits_ (false), @@ -130,6 +132,12 @@ be_component::has_uses (void) } bool +be_component::has_uses_multiple (void) +{ + return this->has_uses_multiple_; +} + +bool be_component::has_publishes (void) { return this->has_publishes_; @@ -171,6 +179,7 @@ be_component::scan (UTL_Scope *s) AST_Decl *d = i.item (); AST_Extended_Port *ep = 0; AST_Mirror_Port *mp = 0; + AST_Uses *u = 0; switch (d->node_type ()) { @@ -179,6 +188,13 @@ be_component::scan (UTL_Scope *s) continue; case AST_Decl::NT_uses: this->has_uses_ = true; + u = AST_Uses::narrow_from_decl (d); + + if (u->is_multiple ()) + { + this->has_uses_multiple_ = true; + } + continue; case AST_Decl::NT_publishes: this->has_publishes_ = true; diff --git a/TAO/TAO_IDL/be/be_visitor_component/servant_svh.cpp b/TAO/TAO_IDL/be/be_visitor_component/servant_svh.cpp index 8baf8e5c035..a051e7f1366 100644 --- a/TAO/TAO_IDL/be/be_visitor_component/servant_svh.cpp +++ b/TAO/TAO_IDL/be/be_visitor_component/servant_svh.cpp @@ -448,9 +448,12 @@ be_visitor_servant_svh::gen_non_type_specific (void) << "get_facet_executor (const char * name);"; } - os_ << be_uidt_nl << be_nl - << "private:" << be_idt_nl - << "void" << be_nl - << "populate_port_tables (void);"; + if (this->node_->has_provides () || this->node_->has_consumes ()) + { + os_ << be_uidt_nl << be_nl + << "private:" << be_idt_nl + << "void" << be_nl + << "populate_port_tables (void);"; + } } 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 fe4dacb5137..54207f4fd0a 100644 --- a/TAO/TAO_IDL/be/be_visitor_component/servant_svs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_component/servant_svs.cpp @@ -201,31 +201,34 @@ be_visitor_servant_svs::visit_component (be_component *node) -1); } - os_ << be_nl << be_nl - << "/// Private method to trigger population of the port" - << be_nl - << "/// tables (facets and event consumers)." << be_nl - << "void" << be_nl - << node_->local_name () - << "_Servant::populate_port_tables (void)" << be_nl - << "{" << be_idt_nl - << "::CORBA::Object_var obj_var;" << be_nl - << "::Components::EventConsumerBase_var ecb_var;" - << be_nl; + if (this->node_->has_provides () || this->node_->has_consumes ()) + { + os_ << be_nl << be_nl + << "/// Private method to trigger population of the port" + << be_nl + << "/// tables (facets and event consumers)." << be_nl + << "void" << be_nl + << node_->local_name () + << "_Servant::populate_port_tables (void)" << be_nl + << "{" << be_idt_nl + << "::CORBA::Object_var obj_var;" << be_nl + << "::Components::EventConsumerBase_var ecb_var;" + << be_nl; - be_visitor_populate_port_tables ppt_visitor (this->ctx_); + be_visitor_populate_port_tables ppt_visitor (this->ctx_); - if (ppt_visitor.visit_component_scope (node) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_component_svs::" - "visit_component - " - "populate port tables visitor failed\n"), - -1); - } + if (ppt_visitor.visit_component_scope (node) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_component_svs::" + "visit_component - " + "populate port tables visitor failed\n"), + -1); + } - os_ << be_uidt_nl - << "}"; + os_ << be_uidt_nl + << "}"; + } return 0; } @@ -969,10 +972,11 @@ be_visitor_servant_svs::gen_uses_top (void) << node_->local_name () << "_Servant::disconnect (" << be_idt_nl << "const char * name," << be_nl - << "::Components::Cookie * ck)" << be_uidt_nl - << "{" << be_idt_nl; - - os_ << "if (name == 0)" << be_idt_nl + << "::Components::Cookie * " + << (this->node_->has_uses_multiple () ? "ck" : "/* ck */") + << ")" << be_uidt_nl + << "{" << be_idt_nl + << "if (name == 0)" << be_idt_nl << "{" << be_idt_nl << "throw ::CORBA::BAD_PARAM ();" << be_uidt_nl << "}" << be_uidt; diff --git a/TAO/TAO_IDL/be_include/be_component.h b/TAO/TAO_IDL/be_include/be_component.h index 750fc4a1567..c94d55cc345 100644 --- a/TAO/TAO_IDL/be_include/be_component.h +++ b/TAO/TAO_IDL/be_include/be_component.h @@ -60,6 +60,7 @@ public: bool has_provides (void); bool has_uses (void); + bool has_uses_multiple (void); bool has_publishes (void); bool has_consumes (void); bool has_emits (void); @@ -81,6 +82,7 @@ private: /// Used by visitors to reduce footprint. bool has_provides_; bool has_uses_; + bool has_uses_multiple_; bool has_publishes_; bool has_consumes_; bool has_emits_; |