diff options
Diffstat (limited to 'TAO/CIAO/tools/Assembly_Deployer/Assembly_Deployer.cpp')
-rw-r--r-- | TAO/CIAO/tools/Assembly_Deployer/Assembly_Deployer.cpp | 163 |
1 files changed, 109 insertions, 54 deletions
diff --git a/TAO/CIAO/tools/Assembly_Deployer/Assembly_Deployer.cpp b/TAO/CIAO/tools/Assembly_Deployer/Assembly_Deployer.cpp index 27249e2925d..aa6032190e7 100644 --- a/TAO/CIAO/tools/Assembly_Deployer/Assembly_Deployer.cpp +++ b/TAO/CIAO/tools/Assembly_Deployer/Assembly_Deployer.cpp @@ -9,12 +9,15 @@ const char *ior = "file://test.ior"; const char *cad = 0; +const char *cookie_output = 0; +const char *cookie_teardown = 0; int benchmark = 0; +int shutdown_server = 0; int parse_args (int argc, char *argv[]) { - ACE_Get_Opt get_opts (argc, argv, "a:k:t"); + ACE_Get_Opt get_opts (argc, argv, "a:k:o:d:tx"); int c; while ((c = get_opts ()) != -1) @@ -32,27 +35,116 @@ parse_args (int argc, char *argv[]) ior = get_opts.opt_arg (); break; + case 'o': + cookie_output = get_opts.opt_arg (); + break; + + case 'd': + cookie_teardown = get_opts.opt_arg (); + break; + + case 'x': + shutdown_server = 1; + break; + case '?': default: ACE_ERROR_RETURN ((LM_ERROR, "usage: %s \n" "-a <assembly descriptor (.cad)>\n" "-t: turn on deployment timer\n" + "-o <filename for outputing assembled cookie>" + "-d <filename for cookie to be teardown'ed>" "-k <Assembly_Manager ior> \n" "\n", argv [0]), -1); } - if (cad == 0) + if (cookie_output != 0) + { + if (cad == 0) + ACE_ERROR_RETURN ((LM_ERROR, + "Must specify an assembly descriptor using -a flag.\n"), + -1); + } + else if (cookie_teardown == 0) ACE_ERROR_RETURN ((LM_ERROR, - "Must specify an assembly descriptor using -a flag.\n"), + "Must specify to build or teardown an assembly using -o or -d flage.\n"), -1); // Indicates sucessful parsing of the command line return 0; } +void +create_assembly (Components::Deployment::AssemblyFactory_ptr *factory + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + ACE_DEBUG ((LM_DEBUG, "Creating an Assembly with %s\n", cad)); + + make_assembly.start (); // Start measuring the time to parse a + // cad file and create an assembly object. + Components::Cookie_var ck = + factory->create_assembly (cad + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + make_assembly.stop (); // Stop measuring + + Components::Deployment::Assembly_var assembly = + factory->lookup (ck.in () + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + build_assembly.start (); // Start measuring the time to + // instantiate and connect the + // application. + assembly->build (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + build_assembly.stop (); + overall.stop (); + + if (benchmark != 0) + { + ACE_Time_Value overall_time, make_time, build_time; + overall.elapsed_time (overall_time); + make_assembly.elapsed_time (make_time); + build_assembly.elapsed_time (build_time); + + ACE_DEBUG ((LM_DEBUG, + "Total deployment time: %d.%06d sec\n" + " create assembly time: %d.%06d sec\n" + " build assembly time: %d.%06d sec\n", + overall_time.sec (), overall_time.usec (), + make_time.sec (), make_time.usec (), + build_time.sec (), build_time.usec ())); + } + + // Output Cookie value here. + +} + +void +teardown_assembly (Components::Deployment::AssemblyFactory_ptr *factory + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + // Extract and restore Cookie value (ck) here. + + // Look up the assembly from the factory. + Components::Deployment::Assembly_var assembly = + factory->lookup (ck.in () + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + assembly->tear_down (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + factory->destroy (ck.in () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + +} + int main (int argc, char *argv[]) { @@ -100,59 +192,22 @@ main (int argc, char *argv[]) 1); } - - ACE_DEBUG ((LM_DEBUG, "Creating an Assembly with %s\n", cad)); - - make_assembly.start (); // Start measuring the time to parse a - // cad file and create an assembly object. - Components::Cookie_var ck = - factory->create_assembly (cad - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - make_assembly.stop (); // Stop measuring - - Components::Deployment::Assembly_var assembly = - factory->lookup (ck.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - build_assembly.start (); // Start measuring the time to - // instantiate and connect the - // application. - assembly->build (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - build_assembly.stop (); - overall.stop (); - - if (benchmark != 0) + if (cookie_output != 0) { - ACE_Time_Value overall_time, make_time, build_time; - overall.elapsed_time (overall_time); - make_assembly.elapsed_time (make_time); - build_assembly.elapsed_time (build_time); - - ACE_DEBUG ((LM_DEBUG, - "Total deployment time: %d.%06d sec\n" - " create assembly time: %d.%06d sec\n" - " build assembly time: %d.%06d sec\n", - overall_time.sec (), overall_time.usec (), - make_time.sec (), make_time.usec (), - build_time.sec (), build_time.usec ())); + create_assembly (factory.in () ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + } + else if (cookie_teardown != 0) + { + teardown_assembly (factory.in () ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (shutdown_server != 0) // can only shutdown when tearing down stuff. + { + as_svc->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + } } - - ACE_DEBUG ((LM_DEBUG, "Press <enter> to tear down the assembly\n")); - char dummy [256]; - cin.getline (dummy, 256); - - assembly->tear_down (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - factory->destroy (ck.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - as_svc->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; |