summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2010-04-07 13:50:20 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2010-04-07 13:50:20 +0000
commit20832285887f20b75e7e5ecfc165f457b1ef3b12 (patch)
tree83970f69fe7ca3855941a5dee7e05208c5628484
parentefcbe21129c77677e16fb82106a3bfd5f1c0a1e5 (diff)
downloadATCD-20832285887f20b75e7e5ecfc165f457b1ef3b12.tar.gz
ChangeLogTag: Wed Apr 7 13:47:38 UTC 2010 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/ChangeLog15
-rw-r--r--TAO/TAO_IDL/be/be_component.cpp16
-rw-r--r--TAO/TAO_IDL/be/be_visitor_component/servant_svh.cpp11
-rw-r--r--TAO/TAO_IDL/be/be_visitor_component/servant_svs.cpp56
-rw-r--r--TAO/TAO_IDL/be_include/be_component.h2
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_;