diff options
Diffstat (limited to 'TAO/CIAO/tests/RTCCM/Priority_Test/Controllers/client.cpp')
-rw-r--r-- | TAO/CIAO/tests/RTCCM/Priority_Test/Controllers/client.cpp | 75 |
1 files changed, 52 insertions, 23 deletions
diff --git a/TAO/CIAO/tests/RTCCM/Priority_Test/Controllers/client.cpp b/TAO/CIAO/tests/RTCCM/Priority_Test/Controllers/client.cpp index ecec707a994..b76d818e005 100644 --- a/TAO/CIAO/tests/RTCCM/Priority_Test/Controllers/client.cpp +++ b/TAO/CIAO/tests/RTCCM/Priority_Test/Controllers/client.cpp @@ -9,12 +9,13 @@ #include "ace/Get_Opt.h" #include "ace/streams.h" -char *controller_ior_ = 0; int ctrl_off = 0; long work = 80; +typedef ACE_Unbounded_Stack<ACE_CString> STRING_STACK; +typedef ACE_Unbounded_Stack<Priority_Test::Controller_var> CTRL_STACK; int -parse_args (int argc, char *argv[]) +parse_args (int argc, char *argv[], STRING_STACK &iors) { ACE_Get_Opt get_opts (argc, argv, "k:fw:"); int c; @@ -24,7 +25,7 @@ parse_args (int argc, char *argv[]) { case 'k': - controller_ior_ = get_opts.opt_arg (); + iors.push (get_opts.opt_arg ()); break; case 'f': // Turn off controller @@ -47,7 +48,7 @@ parse_args (int argc, char *argv[]) -1); } - if (controller_ior_ == 0 && ctrl_off == 0) + if (iors.is_empty () && ctrl_off == 0) ACE_ERROR_RETURN ((LM_ERROR, "Please provide controller IOR\n"), -1); @@ -63,28 +64,56 @@ main (int argc, char *argv[]) // Initialize orb CORBA::ORB_var orb = CORBA::ORB_init (argc, argv ACE_ENV_ARG_PARAMETER); - if (parse_args (argc, argv) != 0) - return -1; - - CORBA::Object_var obj - = orb->string_to_object (controller_ior_ - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; + STRING_STACK IORs; - Priority_Test::Controller_var ctrlr - = Priority_Test::Controller::_narrow (obj.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; + if (parse_args (argc, argv, IORs) != 0) + return -1; - if (CORBA::is_nil (ctrlr.in ())) - ACE_ERROR_RETURN ((LM_ERROR, "Unable to acquire 'Controller' objref\n"), -1); - if (ctrl_off != 0) - ctrlr->stop (ACE_ENV_SINGLE_ARG_PARAMETER); - else - ctrlr->start (work - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; + CTRL_STACK controllers; + + while (!IORs.is_empty ()) + { + ACE_CString ior; + IORs.top (ior); + CORBA::Object_var obj + = orb->string_to_object (ior.c_str () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + Priority_Test::Controller_var ctrlr + = Priority_Test::Controller::_narrow (obj.in () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (CORBA::is_nil (ctrlr.in ())) + { + ACE_DEBUG ((LM_ERROR, + "Unable to acquire 'Controller' objref\n", + ior.c_str ())); + } + else + { + controllers.push (ctrlr); + } + IORs.pop (ior); + + } + + while (! controllers.is_empty ()) + { + Priority_Test::Controller_var ctrlr; + controllers.top (ctrlr); + + if (ctrl_off != 0) + ctrlr->stop (ACE_ENV_SINGLE_ARG_PARAMETER); + else + ctrlr->start (work + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + controllers.pop (ctrlr); + } orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; |