summaryrefslogtreecommitdiff
path: root/TAO/CIAO/tools/Assembly_Deployer/Assembly_Deployer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/CIAO/tools/Assembly_Deployer/Assembly_Deployer.cpp')
-rw-r--r--TAO/CIAO/tools/Assembly_Deployer/Assembly_Deployer.cpp163
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;