diff options
author | William R. Otte <wotte@dre.vanderbilt.edu> | 2009-02-05 18:35:17 +0000 |
---|---|---|
committer | William R. Otte <wotte@dre.vanderbilt.edu> | 2009-02-05 18:35:17 +0000 |
commit | f9d89482586e2d36082e85dde2ac4cc2c67075ac (patch) | |
tree | d8330463d8834586656e220641a170916cc121ef | |
parent | 9fd21dd2328245f12c23a607194e839e2318fb24 (diff) | |
download | ATCD-f9d89482586e2d36082e85dde2ac4cc2c67075ac.tar.gz |
ChangeLogTag: Thu Feb 5 18:30:34 UTC 2009 William R. Otte <wotte@dre.vanderbilt.edu>
12 files changed, 161 insertions, 47 deletions
diff --git a/flat/CIAO/CIDLC/ExecImplHeaderGenerator.cpp b/flat/CIAO/CIDLC/ExecImplHeaderGenerator.cpp index 552f9c1c3fc..cf303972972 100644 --- a/flat/CIAO/CIDLC/ExecImplHeaderGenerator.cpp +++ b/flat/CIAO/CIDLC/ExecImplHeaderGenerator.cpp @@ -322,6 +322,21 @@ namespace << t.scoped_name ().scope_name () << "::CCM_" << t.name () << "_Context_var context_;" << endl << "};"; + + string name; + + // We need to escape C++ keywords before flattening the name. + // + { + std::ostringstream ostr; + ostr.pword (name_printer_index) = os.pword (name_printer_index); + ostr << t.scoped_name (); + name = regex::perl_s (ostr.str (), "/::/_/"); + } + + os << "extern \"C\" " << ctx.export_macro () + << " ::Components::EnterpriseComponent_ptr" << endl + << "create" << name << "_Impl (void);" << endl; } private: diff --git a/flat/CIAO/CIDLC/ExecImplSourceGenerator.cpp b/flat/CIAO/CIDLC/ExecImplSourceGenerator.cpp index f82a3e0a80a..0e68c342313 100644 --- a/flat/CIAO/CIDLC/ExecImplSourceGenerator.cpp +++ b/flat/CIAO/CIDLC/ExecImplSourceGenerator.cpp @@ -465,8 +465,28 @@ namespace } virtual void - post (Type&) + post (Type &t) { + string name; + { + std::ostringstream ostr; + ostr.pword (name_printer_index) = os.pword (name_printer_index); + ostr << t.scoped_name (); + name = regex::perl_s (ostr.str (), "/::/_/"); + } + + os << "extern \"C\" " << ctx.export_macro () + << " ::Components::EnterpriseComponent_ptr" << endl + << "create" << name << "_Impl (void)" << endl + << "{" + << "::Components::EnterpriseComponent_ptr retval =" << endl + << " ::Components::EnterpriseComponent::_nil ();" << endl + << "ACE_NEW_RETURN (" << endl + << "retval," << endl + << t.name () << "_exec_i," << endl + << "::Components::EnterpriseComponent::_nil ());" << endl + << "return retval;" + << "}"; } }; diff --git a/flat/CIAO/CIDLC/ServantHeaderGenerator.cpp b/flat/CIAO/CIDLC/ServantHeaderGenerator.cpp index fd4ddc79095..1b1f52dd522 100644 --- a/flat/CIAO/CIDLC/ServantHeaderGenerator.cpp +++ b/flat/CIAO/CIDLC/ServantHeaderGenerator.cpp @@ -1072,10 +1072,28 @@ namespace } virtual void - post (Type&) + post (Type &t) { // Component servant class closer. os << "};"; + + std::string name; + + // We need to escape C++ keywords before flattening the name. + // + { + std::ostringstream ostr; + ostr.pword (name_printer_index) = os.pword (name_printer_index); + ostr << t.scoped_name (); + name = regex::perl_s (ostr.str (), "/::/_/"); + } + + os << "extern \"C\" " << ctx.export_macro () + << " ::PortableServer::Servant" << endl + << "create" << name << "_Servant (" << endl + << "::Components::EnterpriseComponent_ptr p," << endl + << "CIAO::Container_ptr c," << endl + << "const char *ins_name);" << endl; } }; diff --git a/flat/CIAO/CIDLC/ServantSourceGenerator.cpp b/flat/CIAO/CIDLC/ServantSourceGenerator.cpp index 96b4d1510d9..1fc6aee6ecb 100644 --- a/flat/CIAO/CIDLC/ServantSourceGenerator.cpp +++ b/flat/CIAO/CIDLC/ServantSourceGenerator.cpp @@ -3535,6 +3535,45 @@ namespace os << "}"; } + + virtual void + post (Type& t) + { + // We need to escape C++ keywords before flattening the name. + // + string name; + { + std::ostringstream ostr; + ostr.pword (name_printer_index) = os.pword (name_printer_index); + ostr << t.scoped_name (); + name = regex::perl_s (ostr.str (), "/::/_/"); + } + + os << "extern \"C\" " << ctx.export_macro () + << " ::PortableServer::Servant" + << endl + << "create" << name << "_Servant (" << endl + << "::Components::EnterpriseComponent_ptr p," << endl + << "::CIAO::Container_ptr c," << endl + << "const char *ins_name)" << endl + << "{" + << t.scoped_name ().scope_name () << "::CCM_" + << t.name () << "_var x =" << endl + << t.scoped_name ().scope_name () << "::CCM_" << t.name () + << "::_narrow (p);" << endl + << "if (::CORBA::is_nil (x.in ()))" << endl + << "{" + << "return 0;" << endl + << "}" + << "::PortableServer::Servant retval = 0;" + << "ACE_NEW_RETURN(retval, " << endl + << t.name () << "_Servant (x.in ()," << endl + << "::Components::CCMHome::_nil ()," << endl + << "ins_name, 0, c)," << endl + << "0);" << endl + << "return retval;" << endl + << "}"; + } }; struct HomeEmitter : Traversal::Home, EmitterBase diff --git a/flat/CIAO/ChangeLog b/flat/CIAO/ChangeLog index 2b3ec7d99d6..17bfe810a54 100644 --- a/flat/CIAO/ChangeLog +++ b/flat/CIAO/ChangeLog @@ -1,10 +1,40 @@ +Thu Feb 5 18:30:34 UTC 2009 William R. Otte <wotte@dre.vanderbilt.edu> + + * CIDLC/ExecImplHeaderGenerator.cpp: + * CIDLC/ExecImplSourceGenerator.cpp: + * CIDLC/ServantHeaderGenerator.cpp: + * CIDLC/ServantSourceGenerator.cpp: + + Added component factory functions, similar to those already generated for + Homes. + + * DAnCE/tests/CIAO/Components/SimpleNull_exec.h: + * DAnCE/tests/CIAO/Components/SimpleNull_exec.cpp: + + Added in generated factory functions from above. + + * DAnCE/tests/CIAO/ExecutionManager-Deployments/run_test.pl: + * DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl: + + Added ability to run a single plan by passing it as a command line + arguments. + + * DAnCE/tests/CIAO/NodeManager-Deployments/SimpleComponentUnhomed.cdp: + + Test for unhomed components. + + * ciao/Containers/Session/Session_Container.h: + * ciao/Containers/Session/Session_Container.cpp: + + Fixes for unhomed components. + Thu Feb 5 16:03:59 UTC 2009 William R. Otte <wotte@dre.vanderbilt.edu> * DAnCE/NodeApplication/NodeApplication_Impl.cpp: * ciao/ComponentServer/CIAO_Container_Impl.cpp: - - First cut implementation of unhomed component deployment. Untested as yet. - + + First cut implementation of unhomed component deployment. Untested as yet. + Thu Feb 5 14:40:18 UTC 2009 William R. Otte <wotte@dre.vanderbilt.edu> * DAnCE/NodeApplication/NodeApplication_Impl.cpp: diff --git a/flat/CIAO/DAnCE/tests/CIAO/Components/SimpleNull_exec.cpp b/flat/CIAO/DAnCE/tests/CIAO/Components/SimpleNull_exec.cpp index 449981e53ec..15ee5ee2dbb 100644 --- a/flat/CIAO/DAnCE/tests/CIAO/Components/SimpleNull_exec.cpp +++ b/flat/CIAO/DAnCE/tests/CIAO/Components/SimpleNull_exec.cpp @@ -94,6 +94,19 @@ namespace CIDL_SimpleNull_Impl // Your code here. } + extern "C" SIMPLENULL_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Simple_SimpleNull_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_RETURN (retval, + SimpleNull_exec_i, + ::Components::EnterpriseComponent::_nil ()); + + return retval; + } + //================================================================== // Home Executor Implementation Class: SimpleNullHome_exec_i //================================================================== diff --git a/flat/CIAO/DAnCE/tests/CIAO/Components/SimpleNull_exec.h b/flat/CIAO/DAnCE/tests/CIAO/Components/SimpleNull_exec.h index 00771543fb3..e5887e7afdc 100644 --- a/flat/CIAO/DAnCE/tests/CIAO/Components/SimpleNull_exec.h +++ b/flat/CIAO/DAnCE/tests/CIAO/Components/SimpleNull_exec.h @@ -65,7 +65,10 @@ namespace CIDL_SimpleNull_Impl private: ::Simple::CCM_SimpleNull_Context_var context_; }; - + + extern "C" SIMPLENULL_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Simple_SimpleNull_Impl (void); + class SIMPLENULL_EXEC_Export SimpleNullHome_exec_i : public virtual SimpleNullHome_Exec, public virtual ::CORBA::LocalObject diff --git a/flat/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/run_test.pl b/flat/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/run_test.pl index b357e74d537..b738049952b 100755 --- a/flat/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/run_test.pl +++ b/flat/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/run_test.pl @@ -92,8 +92,6 @@ sub run_node_daemons { return 0; } -print "$#ARGV"; - if ($#ARGV == -1) { opendir(DIR, "."); diff --git a/flat/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleComponentUnhomed.cdp b/flat/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleComponentUnhomed.cdp index 5632d219c48..e31930188d2 100644 --- a/flat/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleComponentUnhomed.cdp +++ b/flat/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/SimpleComponentUnhomed.cdp @@ -9,21 +9,20 @@ <!-- Implementations declarations --> <!-- Server Dance implementation--> - <!-- Home implementation --> - <implementation xmi:id="SimpleNullHomeImplementation"> - <name>SimpleNullHomeImplementation</name> + <implementation xmi:id="SimpleNullComponentImplementation"> + <name>SimpleNullComponentImplementation</name> <source/> <artifact xmi:idref="SimpleNull_ExecArtifact" /> <artifact xmi:idref="SimpleNull_SvntArtifact" /> <execParameter> <!-- entrypoint as exec parameter (see ยง10.6.1) --> - <name>home factory</name> + <name>component factory</name> <value> <type> <kind>tk_string</kind> </type> <value> - <string>create_Simple_SimpleNullHome_Impl</string> + <string>create_Simple_SimpleNull_Impl</string> </value> </value> </execParameter> @@ -34,7 +33,7 @@ <kind>tk_string</kind> </type> <value> - <string>create_Simple_SimpleNullHome_Servant</string> + <string>create_Simple_SimpleNull_Servant</string> </value> </value> </execParameter> @@ -62,38 +61,12 @@ </execParameter> </implementation> - <implementation xmi:id="SimpleNullComponentImplementation"> - <name>SimpleNullComponentImplementation</name> - <source/> - <artifact xmi:idref="SimpleNull_ExecArtifact" /> - <artifact xmi:idref="SimpleNull_SvntArtifact" /> - </implementation> - - <instance xmi:id="SimpleNullHomeInstance"> - <name>SimpleNullHome</name> - <node>Node</node> - <!-- hostname --> - <source/> - <implementation xmi:idref="SimpleNullHomeImplementation" /> - </instance> - <instance xmi:id="SimpleNullComponentInstance"> <name>SimpleNullComponent</name> <node>Node</node> <!-- hostname --> <source/> <implementation xmi:idref="SimpleNullComponentImplementation" /> - <configProperty> - <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name> - <value> - <type> - <kind>tk_string</kind> - </type> - <value> - <string>SimpleNullHome</string> - </value> - </value> - </configProperty> </instance> <!-- Artifacts declarations --> diff --git a/flat/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl b/flat/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl index 2ac8a0613bb..27b9f7987e8 100755 --- a/flat/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl +++ b/flat/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl @@ -69,9 +69,14 @@ sub run_node_daemons { return 0; } -opendir(DIR, "."); -@files = grep(/\.cdp$/,readdir(DIR)); -closedir(DIR); +if ($#ARGV == -1) +{ + opendir(DIR, "."); + @files = grep(/\.cdp$/,readdir(DIR)); + closedir(DIR); +} else { + @files = @ARGV; +} foreach $file (@files) { delete_ior_files (); diff --git a/flat/CIAO/ciao/Containers/Session/Session_Container.cpp b/flat/CIAO/ciao/Containers/Session/Session_Container.cpp index 1cfceb44083..99ff4d8fb79 100644 --- a/flat/CIAO/ciao/Containers/Session/Session_Container.cpp +++ b/flat/CIAO/ciao/Containers/Session/Session_Container.cpp @@ -628,8 +628,8 @@ namespace CIAO CIAO_DEBUG ((LM_TRACE, CLINFO "Session_Container::install_component - Loading component servant\n")); PortableServer::Servant component_servant = screator (component_executor.in (), - name, - this); + this, + name); if (component_servant == 0) { diff --git a/flat/CIAO/ciao/Containers/Session/Session_Container.h b/flat/CIAO/ciao/Containers/Session/Session_Container.h index 00bd0f39ac4..93e8a6dc57e 100644 --- a/flat/CIAO/ciao/Containers/Session/Session_Container.h +++ b/flat/CIAO/ciao/Containers/Session/Session_Container.h @@ -44,8 +44,8 @@ namespace CIAO const char *ins_name); typedef ::Components::EnterpriseComponent_ptr (*ComponentFactory) (void); typedef ::PortableServer::Servant (*ComponentServantFactory) (::Components::EnterpriseComponent_ptr, - const char *, - ::CIAO::Container_ptr ); + ::CIAO::Container_ptr, + const char *); typedef ACE_Hash_Map_Manager_Ex<ACE_CString, HomeFactory, |