summaryrefslogtreecommitdiff
path: root/TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp')
-rw-r--r--TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp553
1 files changed, 335 insertions, 218 deletions
diff --git a/TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp b/TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp
index 0678c8cccd7..8e36ceadaa4 100644
--- a/TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp
+++ b/TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp
@@ -132,7 +132,7 @@ namespace
virtual void
post (Type&)
{
- os << ";" << endl;
+ os << ";" << endl << endl;
}
virtual void
@@ -338,7 +338,7 @@ namespace
traverse (UnconstrainedInterface& i)
{
if (i.context ().count ("facet_hdr_gen")) return;
-
+
ScopedName scoped (i.scoped_name ());
Name stripped (scoped.begin () + 1, scoped.end ());
@@ -416,7 +416,6 @@ namespace
<< "_get_component (" << endl
<< STRS[ENV_SNGL_HDR] << ")" << endl
<< STRS[EXCP_SNGL] << ";" << endl
- << endl
<< "protected:" << endl
<< "// Facet executor." << endl
<< i.scoped_name ().scope_name ()<< "::CCM_" << i.name ()
@@ -424,14 +423,14 @@ namespace
<< "// Context object." << endl
<< "::Components::CCMContext_var ctx_;" << endl
<< "};";
-
- os << "typedef " << ctx.export_macro () << " "
- << i.name () << "_Servant_T<int> "
+
+ os << "typedef " << ctx.export_macro () << " "
+ << i.name () << "_Servant_T<int> "
<< i.name () << "_Servant;";
// Close the CIAO_GLUE namespace.
os << "}";
-
+
i.context ().set ("facet_hdr_gen", true);
}
};
@@ -736,33 +735,21 @@ namespace
os << STRS[GLUE_NS]
<< regex::perl_s (t.scoped_name ().scope_name ().str (), "/::/_/")
<< "{";
-
- os << "class " << t.name () << "_Servant;" << endl;
os << "class " << ctx.export_macro () << " " << t.name ()
<< "_Context" << endl
- << " : public virtual CIAO::Context_Impl<" << endl
- << " " << t.scoped_name ().scope_name () << "::CCM_"
- << t.name () << "_Context," << endl
- << " " << t.name () << "_Servant," << endl
- << " " << t.scoped_name () << "," << endl
- << " " << t.scoped_name () << "_var" << endl
- << " >" << endl
+ << ": public virtual " << t.scoped_name ().scope_name () << "::CCM_"
+ << t.name () << "_Context,"
+ << endl
+ << "public virtual TAO_Local_RefCounted_Object"
+ << endl
<< "{"
<< "public:" << endl;
os << "// We will allow the servant glue code we generate to "
<< "access our state." << endl
- << "friend class " << t.name () << "_Servant;" << endl;
-
- os << "/// Hack for VC6." << endl
- << "typedef CIAO::Context_Impl<" << endl
- << " " << t.scoped_name ().scope_name () << "::CCM_"
- << t.name () << "_Context," << endl
- << " " << t.name () << "_Servant," << endl
- << " " << t.scoped_name () << "," << endl
- << " " << t.scoped_name () << "_var" << endl
- << " > ctx_svnt_base;" << endl;
+ << "friend class " << t.name () << "_Servant;"
+ << endl;
os << t.name () << "_Context (" << endl
<< "::Components::CCMHome_ptr home," << endl
@@ -772,6 +759,55 @@ namespace
os << "virtual ~" << t.name () << "_Context (void);"
<< endl;
+ os << "// Operations from ::Components::CCMContext." << endl << endl;
+
+ os << "virtual ::Components::Principal_ptr" << endl
+ << "get_caller_principal (" << endl
+ << STRS[ENV_SNGL_HDR] << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl;
+
+ os << "virtual ::Components::CCMHome_ptr" << endl
+ << "get_CCM_home (" << endl
+ << STRS[ENV_SNGL_HDR_NOTUSED] << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl ;
+
+ os << "virtual CORBA::Boolean" << endl
+ << "get_rollback_only (" << endl
+ << STRS[ENV_SNGL_HDR] << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IS] << "));" << endl;
+
+ os << "virtual ::Components::Transaction::UserTransaction_ptr" << endl
+ << "get_user_transaction (" << endl
+ << STRS[ENV_SNGL_HDR] << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IS] << "));" << endl;
+
+ os << "virtual CORBA::Boolean" << endl
+ << "is_caller_in_role (" << endl
+ << "const char *role" << endl
+ << STRS[ENV_HDR] << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl;
+
+ os << "virtual void" << endl
+ << "set_rollback_only (" << endl
+ << STRS[ENV_SNGL_HDR] << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IS] << "));" << endl;
+
+ os << "// Operations from " << STRS[COMP_SC] << " interface."
+ << endl << endl;
+
+ os << "virtual CORBA::Object_ptr" << endl
+ << "get_CCM_object (" << endl
+ << STRS[ENV_SNGL_HDR] << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IS] << "));" << endl;
+
os << "// Operations for " << t.name () << " receptacles"
<< " and event sources," << endl
<< "// defined in " << t.scoped_name ().scope_name () << "::CCM_"
@@ -794,7 +830,9 @@ namespace
component_emitter.traverse (t);
}
- os << "// CIAO-specific." << endl << endl;
+ os << "// CIAO-specific." << endl << endl
+ << "::CIAO::Session_Container *" << endl
+ << "_ciao_the_Container (void) const;" << endl;
os << "static " << t.name () << "_Context *" << endl
<< "_narrow (" << endl
@@ -843,6 +881,11 @@ namespace
virtual void
post (Type& t)
{
+ os << "::Components::CCMHome_var home_;" << endl
+ << "::CIAO::Session_Container *container_;" << endl << endl
+ << t.name () << "_Servant *servant_;" << endl
+ << t.scoped_name () << "_var component_;" << endl;
+
// Component context class closer.
os << "};";
@@ -1146,72 +1189,6 @@ namespace
Traversal::Belongs belongs_;
};
- struct PortsEmitterPrivate : Traversal::EmitterData,
- Traversal::SingleUserData,
- Traversal::MultiUserData,
- Traversal::PublisherData,
- Traversal::ConsumerData,
- Traversal::ProviderData,
- EmitterBase
- {
- PortsEmitterPrivate (Context& c)
- : EmitterBase (c),
- type_name_emitter_ (c.os ()),
- simple_type_name_emitter_ (c.os ()),
- stripped_type_name_emitter_ (c.os ())
- {
- belongs_.node_traverser (type_name_emitter_);
- simple_belongs_.node_traverser (simple_type_name_emitter_);
- stripped_belongs_.node_traverser (stripped_type_name_emitter_);
- }
-
- virtual void
- traverse (SemanticGraph::Provider& p)
- {
- os << "::CORBA::Object_ptr" << endl
- << "provide_" << p.name () << "_i (" << endl
- << STRS[ENV_SNGL_HDR] << ")" << endl
- << STRS[EXCP_SNGL] << ";" << endl << endl;
- }
-
- virtual void
- traverse (SemanticGraph::SingleUser& u)
- {
- }
-
- virtual void
- traverse (SemanticGraph::MultiUser& u)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Consumer& c)
- {
- os << "::Components::EventConsumerBase_ptr" << endl
- << "get_consumer_" << c.name () << "_i (" << endl
- << STRS[ENV_SNGL_HDR] << ")" << endl
- << STRS[EXCP_SNGL] << ";" << endl << endl;
- }
-
- virtual void
- traverse (SemanticGraph::Emitter& e)
- {
- }
-
- virtual void
- traverse (SemanticGraph::Publisher& p)
- {
- }
-
- private:
- TypeNameEmitter type_name_emitter_;
- SimpleTypeNameEmitter simple_type_name_emitter_;
- StrippedTypeNameEmitter stripped_type_name_emitter_;
- Traversal::Belongs belongs_;
- Traversal::Belongs simple_belongs_;
- Traversal::Belongs stripped_belongs_;
- };
-
public:
virtual void
pre (Type& t)
@@ -1227,39 +1204,35 @@ namespace
<< "_Servant" << endl
<< " : public virtual CIAO::Servant_Impl<" << endl
<< " POA_" << stripped << "," << endl
- << " " << t.scoped_name ().scope_name () << "::CCM_"
+ << " " << t.scoped_name ().scope_name () << "::CCM_"
<< t.name () << "," << endl
<< " " << t.scoped_name ().scope_name () << "::CCM_"
<< t.name () << "_var," << endl
<< " " << t.name () << "_Context" << endl
- << " >" << endl
+ << " >," << endl
+ << " " << STRS[INH_RCSB] << endl
<< "{"
<< "public:" << endl;
- os << "/// Hack for VC6." << endl
- << "typedef CIAO::Servant_Impl<" << endl
- << " POA_" << stripped << "," << endl
- << " " << t.scoped_name ().scope_name () << "::CCM_"
+ os << "/// Hack for VC6 the most sucky compiler" << endl
+ << "typedef CIAO::Servant_Impl<" << endl
+ << "POA_" << stripped << "," << endl
+ << " " << t.scoped_name ().scope_name () << "::CCM_"
<< t.name () << "," << endl
- << " " << t.scoped_name ().scope_name () << "::CCM_"
+ << " " << t.scoped_name ().scope_name () << "::CCM_"
<< t.name () << "_var," << endl
- << " " << t.name () << "_Context" << endl
- << " > comp_svnt_base;" << endl << endl;
+ << " " << t.name () << "_Context" << endl
+ << " > our_base;" << endl;
os << t.name () << "_Servant (" << endl
<< t.scoped_name ().scope_name () << "::CCM_" << t.name ()
<< "_ptr executor," << endl
<< "::Components::CCMHome_ptr home," << endl
- << "::CIAO::Session_Container *c);" << endl << endl;
+ << "::CIAO::Session_Container *c);" << endl;
os << "virtual ~" << t.name () << "_Servant (void);"
<< endl << endl;
- os << "virtual void" << endl
- << "set_attributes (" << endl
- << "const ::Components::ConfigValues &descr" << endl
- << STRS[ENV_SRC] << ");" << endl << endl;
-
os << "// Supported operations." << endl << endl;
// Generate operations for all supported interfaces.
@@ -1364,6 +1337,24 @@ namespace
component_emitter.traverse (t);
}
+ os << "// Operations for Navigation interface." << endl << endl;
+
+ os << "virtual CORBA::Object_ptr" << endl
+ << "provide_facet (" << endl
+ << "const char *name" << endl
+ << STRS[ENV_HDR] << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "));" << endl << endl;
+
+ os << "virtual ::Components::FacetDescriptions *" << endl
+ << "get_named_facets (" << endl
+ << "const " << STRS[COMP_NAMES] << endl
+ << STRS[ENV_HDR] << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "));" << endl << endl;
+
os << "// Operations for Receptacles interface." << endl << endl;
os << "virtual " << STRS[COMP_CK] << " *" << endl
@@ -1390,8 +1381,37 @@ namespace
<< STRS[EXCP_CR] << "," << endl
<< STRS[EXCP_NC] << "));" << endl << endl;
+ os << "virtual ::Components::ConnectionDescriptions *" << endl
+ << "get_connections (" << endl
+ << "const char *name" << endl
+ << STRS[ENV_HDR] << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "));" << endl << endl;
+
+ os << "virtual ::Components::ReceptacleDescriptions *" << endl
+ << "get_all_receptacles (" << endl
+ << STRS[ENV_SNGL_HDR] << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl << endl;
+
+ os << "virtual ::Components::ReceptacleDescriptions *" << endl
+ << "get_named_receptacles (" << endl
+ << "const " << STRS[COMP_NAMES] << endl
+ << STRS[ENV_HDR] << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "));" << endl << endl;
+
os << "// Operations for Events interface." << endl << endl;
+ os << "virtual " << STRS[COMP_ECB] << "_ptr" << endl
+ << "get_consumer (" << endl
+ << "const char *sink_name" << endl
+ << STRS[ENV_HDR] << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "));" << endl << endl;
+
os << "virtual " << STRS[COMP_CK] << " *" << endl
<< "subscribe (" << endl
<< "const char *publisher_name," << endl
@@ -1424,39 +1444,118 @@ namespace
<< STRS[EXCP_AC] << "," << endl
<< STRS[EXCP_IC] << "));" << endl << endl;
- os << "// CIAO specific operations on the servant " << endl
- << "CORBA::Object_ptr" << endl
- << "get_facet_executor (const char *name" << endl
+ os << "virtual " << STRS[COMP_ECB] << "_ptr" << endl
+ << "disconnect_consumer (" << endl
+ << "const char *source_name" << endl
<< STRS[ENV_HDR] << ")" << endl
<< STRS[EXCP_START] << endl
- << STRS[EXCP_SYS]<< "));" << endl << endl;
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "," << endl
+ << STRS[EXCP_NC] << "));" << endl << endl;
- os << "private:" << endl << endl;
+ os << "virtual ::Components::ConsumerDescriptions *" << endl
+ << "get_named_consumers (" << endl
+ << "const " << STRS[COMP_NAMES] << endl
+ << STRS[ENV_HDR] << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "));" << endl << endl;
- // Generate protected operations for facets and event sinks.
- {
- Traversal::Component component_emitter;
+ os << "virtual ::Components::EmitterDescriptions *" << endl
+ << "get_all_emitters (" << endl
+ << STRS[ENV_SNGL_HDR] << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl << endl;
- Traversal::Inherits component_inherits;
- component_inherits.node_traverser (component_emitter);
+ os << "virtual ::Components::EmitterDescriptions *" << endl
+ << "get_named_emitters(" << endl
+ << "const " << STRS[COMP_NAMES] << endl
+ << STRS[ENV_HDR] << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "));" << endl << endl;
- Traversal::Defines defines;
- component_emitter.edge_traverser (defines);
- component_emitter.edge_traverser (component_inherits);
+ os << "virtual ::Components::PublisherDescriptions *" << endl
+ << "get_all_publishers (" << endl
+ << STRS[ENV_SNGL_HDR] << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl << endl;
- PortsEmitterProtected ports_emitter (ctx);
- defines.node_traverser (ports_emitter);
+ os << "virtual ::Components::PublisherDescriptions *" << endl
+ << "get_named_publishers(" << endl
+ << "const " << STRS[COMP_NAMES] << endl
+ << STRS[ENV_HDR] << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "));" << endl << endl;
- component_emitter.traverse (t);
- }
+ os << "// Operations for CCMObject interface." << endl << endl;
- os << "private:" << endl << endl
- << "void" << endl
- << "populate_port_tables (" << endl
+ os << "virtual CORBA::IRObject_ptr" << endl
+ << "get_component_def (" << endl
<< STRS[ENV_SNGL_HDR] << ")" << endl
<< STRS[EXCP_SNGL] << ";" << endl << endl;
- // Generate private operations for ports.
+ os << "virtual ::Components::CCMHome_ptr" << endl
+ << "get_ccm_home (" << endl
+ << STRS[ENV_SNGL_HDR] << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl << endl;
+
+ os << "virtual ::Components::PrimaryKeyBase *" << endl
+ << "get_primary_key (" << endl
+ << STRS[ENV_SNGL_HDR] << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_NKA] << "));" << endl << endl;
+
+ os << "virtual void" << endl
+ << "configuration_complete (" << endl
+ << STRS[ENV_SNGL_HDR_NOTUSED] << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_ICF] << "));" << endl << endl;
+
+ os << "virtual void" << endl
+ << "remove (" << endl
+ << STRS[ENV_SNGL_HDR_NOTUSED] << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_RF] << "));" << endl << endl;
+
+ os << "virtual ::Components::ComponentPortDescription *" << endl
+ << "get_all_ports(" << endl
+ << STRS[ENV_SNGL_HDR] << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl << endl;
+
+ os << "// Get component implementation." << endl
+ << "virtual CORBA::Object_ptr" << endl
+ << "_get_component (" << endl
+ << STRS[ENV_SNGL_HDR] << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl << endl;
+
+ os << "// CIAO-specific operations." << endl << endl;
+
+ os << "void" << endl
+ << "ciao_preactivate (" << endl
+ << STRS[ENV_SNGL_HDR] << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl << endl;
+
+ os << "void" << endl
+ << "ciao_activate (" << endl
+ << STRS[ENV_SNGL_HDR] << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl << endl;
+
+ os << "void" << endl
+ << "ciao_postactivate (" << endl
+ << STRS[ENV_SNGL_HDR] << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl << endl;
+
+ os << "/// @@NOTE: The busted operation." << endl;
+
+ os << "void" << endl
+ << "_ciao_passivate (" << endl
+ << STRS[ENV_SNGL_HDR] << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl << endl;
+
+ // Generate protected operations for facets and event sinks.
{
Traversal::Component component_emitter;
@@ -1467,11 +1566,16 @@ namespace
component_emitter.edge_traverser (defines);
component_emitter.edge_traverser (component_inherits);
- PortsEmitterPrivate ports_emitter (ctx);
+ PortsEmitterProtected ports_emitter (ctx);
defines.node_traverser (ports_emitter);
component_emitter.traverse (t);
}
+
+ os << "private:" << endl << endl
+ << "void populate_port_tables (" << endl
+ << STRS[ENV_SNGL_HDR] << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl << endl;
}
virtual void
@@ -1687,7 +1791,7 @@ namespace
{
os << "," << endl;
}
-
+
private:
ReturnTypeNameEmitter returns_emitter_;
Traversal::Returns returns_;
@@ -1705,94 +1809,15 @@ namespace
os << "class " << ctx.export_macro () << " " << t.name ()
<< "_Servant" << endl
- << " : public virtual CIAO::Home_Servant_Impl<" << endl
- << " POA_" << stripped << "," << endl
- << " " << t.scoped_name ().scope_name () << "::CCM_"
- << t.name () << "," << endl
- << " " << t.scoped_name ().scope_name () << "::CCM_"
- << t.name () << "_var," << endl
- << " ";
-
- Traversal::Home::manages (t, manages_);
-
- os << "," << endl
- << " ";
-
- Traversal::Home::manages (t, manages_);
-
- os << "_var," << endl
- << " ";
-
- Traversal::Home::manages (t, enclosing_manages_);
-
- os << "::CCM_";
-
- Traversal::Home::manages (t, simple_manages_);
-
- os << "," << endl
- << " ";
-
- Traversal::Home::manages (t, enclosing_manages_);
-
- os << "::CCM_";
-
- Traversal::Home::manages (t, simple_manages_);
-
- os << "_var," << endl
- << " ";
-
- Traversal::Home::manages (t, simple_manages_);
-
- os << "_Servant" << endl
- << " >" << endl
+ << ": public virtual POA_" << stripped << "," << endl
+ << STRS[INH_RCSB] << endl
<< "{"
- << "public:" << endl
- << "/// Hack for VC6." << endl
- << "typedef CIAO::Home_Servant_Impl<" << endl
- << " POA_" << stripped << "," << endl
- << " " << t.scoped_name ().scope_name () << "::CCM_"
- << t.name () << "," << endl
- << " " << t.scoped_name ().scope_name () << "::CCM_"
- << t.name () << "_var," << endl
- << " ";
-
- Traversal::Home::manages (t, manages_);
-
- os << "," << endl
- << " ";
-
- Traversal::Home::manages (t, manages_);
-
- os << "_var," << endl
- << " ";
-
- Traversal::Home::manages (t, enclosing_manages_);
-
- os << "::CCM_";
-
- Traversal::Home::manages (t, simple_manages_);
-
- os << "," << endl
- << " ";
-
- Traversal::Home::manages (t, enclosing_manages_);
-
- os << "::CCM_";
-
- Traversal::Home::manages (t, simple_manages_);
-
- os << "_var," << endl
- << " ";
-
- Traversal::Home::manages (t, simple_manages_);
-
- os << "_Servant" << endl
- << " > home_svnt_base;" << endl << endl;
+ << "public:" << endl;
os << t.name () << "_Servant (" << endl
<< t.scoped_name ().scope_name () << "::CCM_" << t.name ()
<< "_ptr exe," << endl
- << "::CIAO::Session_Container *c);" << endl << endl;
+ << "::CIAO::Session_Container *c);" << endl;
os << "virtual ~" << t.name () << "_Servant (void);"
<< endl << endl;
@@ -1925,6 +1950,51 @@ namespace
home_emitter.traverse (t);
}
+ // @@@ (JP) Need primary key support.
+ os << "// Operations for keyless home interface." << endl << endl;
+
+ os << "virtual ::Components::CCMObject_ptr" << endl
+ << "create_component (" << endl
+ << STRS[ENV_SNGL_HDR] << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << "::Components::CreateFailure));" << endl << endl;
+
+ os << "// Operations for implicit home interface." << endl << endl;
+
+ os << "virtual ";
+
+ Traversal::Home::manages (t, manages_);
+
+ os << "_ptr" << endl
+ << "create (" << endl
+ << STRS[ENV_SNGL_HDR] << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << "::Components::CreateFailure));" << endl << endl;
+
+ os << "// Operations for CCMHome interface." << endl << endl;
+
+ os << "virtual ::CORBA::IRObject_ptr" << endl
+ << "get_component_def (" << endl
+ << STRS[ENV_SNGL_HDR] << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl << endl;
+
+ os << "virtual ::CORBA::IRObject_ptr" << endl
+ << "get_home_def (" << endl
+ << STRS[ENV_SNGL_HDR] << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl << endl;
+
+ os << "virtual void" << endl
+ << "remove_component (" << endl
+ << "::Components::CCMObject_ptr comp" << endl
+ << STRS[ENV_HDR] << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_RF] << "));" << endl << endl;
+
+ os << "// Supported operations." << endl << endl;
+
// Generate operations for all supported interfaces.
{
Traversal::Home home_emitter;
@@ -1987,10 +2057,57 @@ namespace
home_emitter.traverse (t);
}
+ os << "protected:" << endl
+ << "// CIAO-specific operations." << endl << endl;
+
+ Traversal::Home::manages (t, manages_);
+
+ os << "_ptr" << endl
+ << "_ciao_activate_component (" << endl;
+
+ Traversal::Home::manages (t, enclosing_manages_);
+
+ os << "::CCM_";
+
+ Traversal::Home::manages (t, simple_manages_);
+
+ os << "_ptr exe" << endl
+ << STRS[ENV_HDR] << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl << endl;
+
+ os << "void" << endl
+ << "_ciao_passivate_component (" << endl;
+
+ Traversal::Home::manages (t, manages_);
+
+ os << "_ptr comp" << endl
+ << STRS[ENV_HDR] << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl << endl;
+
+ os << "protected:" << endl;
+
+ os << t.scoped_name ().scope_name () << "::CCM_"
+ << t.name () << "_var" << endl
+ << "executor_;" << endl << endl;
+
+ os << "::CIAO::Session_Container *" << endl
+ << "container_;" << endl << endl;
+
+ os << "ACE_Hash_Map_Manager_Ex<" << endl
+ << "PortableServer::ObjectId," << endl;
+
+ Traversal::Home::manages (t, simple_manages_);
+
+ os << "_Servant *," << endl
+ << "TAO_ObjectId_Hash," << endl
+ << "ACE_Equal_To<PortableServer::ObjectId>," << endl
+ << "ACE_SYNCH_MUTEX>" << endl
+ << "component_map_;" << endl << endl;
+
// Home servant class closer.
os << "};";
- os << "extern \"C\" " << ctx.export_macro ()
+ os << "extern \"C\" " << ctx.export_macro ()
<< " ::PortableServer::Servant" << endl
<< "create" << t.name () << "_Servant (" << endl
<< "::Components::HomeExecutorBase_ptr p," << endl
@@ -2003,7 +2120,7 @@ namespace
// Namespace closer.
os << "}";
}
-
+
private:
TypeNameEmitter type_name_emitter_;
SimpleTypeNameEmitter simple_type_name_emitter_;
@@ -2145,8 +2262,8 @@ ServantHeaderEmitter::pre (TranslationUnit& u)
os << "#include \"ciao/Container_Base.h\"" << endl
<< "#include \"ciao/Servant_Impl_T.h\"" << endl
- << "#include \"ciao/Context_Impl_T.h\"" << endl
- << "#include \"ciao/Home_Servant_Impl_T.h\"" << endl
+ << "#include \"tao/LocalObject.h\"" << endl
+ << "#include \"tao/PortableServer/Key_Adapters.h\"" << endl
<< "#include \"ace/Active_Map_Manager_T.h\"" << endl << endl;
}