diff options
Diffstat (limited to 'trunk/TAO/orbsvcs/tests/Notify/lib/Application_Command.cpp')
-rw-r--r-- | trunk/TAO/orbsvcs/tests/Notify/lib/Application_Command.cpp | 224 |
1 files changed, 224 insertions, 0 deletions
diff --git a/trunk/TAO/orbsvcs/tests/Notify/lib/Application_Command.cpp b/trunk/TAO/orbsvcs/tests/Notify/lib/Application_Command.cpp new file mode 100644 index 00000000000..5172ae18620 --- /dev/null +++ b/trunk/TAO/orbsvcs/tests/Notify/lib/Application_Command.cpp @@ -0,0 +1,224 @@ +// $Id$ + +#include "Application_Command.h" + +ACE_RCSID(lib, TAO_Application_Command, "$Id$") + +#include "tao/PortableServer/PortableServer.h" +#include "LookupManager.h" +#include "Name.h" +#include "Activation_Manager.h" +#include "Driver_Base.h" +#include "Priority_Mapping.h" + +TAO_Notify_Tests_Application_Command::TAO_Notify_Tests_Application_Command (void) + : dump_samples_ (0) +{ +} + +TAO_Notify_Tests_Application_Command::~TAO_Notify_Tests_Application_Command () +{ +} + +const char* +TAO_Notify_Tests_Application_Command::get_name (void) +{ + return TAO_Notify_Tests_Application_Command::name (); +} + +const char* +TAO_Notify_Tests_Application_Command::name (void) +{ + return TAO_Notify_Tests_Name::application_command; +} + +void +TAO_Notify_Tests_Application_Command::init (ACE_Arg_Shifter& arg_shifter) +{ + if (arg_shifter.is_anything_left ()) + { + /// -Init | Run | Shutdown + if (arg_shifter.cur_arg_strncasecmp ("-Init") == 0) + { + this->command_ = INIT; + + arg_shifter.consume_arg (); + } + else if (arg_shifter.cur_arg_strncasecmp ("-Run") == 0) + { + this->command_ = RUN; + + arg_shifter.consume_arg (); + } + else if (arg_shifter.cur_arg_strncasecmp ("-WaitForEvents") == 0) + { + this->command_ = WAIT_FOR_EVENTS; + + arg_shifter.consume_arg (); + } + else if (arg_shifter.cur_arg_strncasecmp ("-Shutdown") == 0) + { + this->command_ = SHUTDOWN; + + arg_shifter.consume_arg (); + } + else if (arg_shifter.cur_arg_strncasecmp ("-DumpStats") == 0) + { + this->command_ = DUMP_STATE; + + arg_shifter.consume_arg (); + + if (arg_shifter.cur_arg_strncasecmp ("-Samples") == 0) + { + this->dump_samples_ = 1; + + arg_shifter.consume_arg (); + } + } + else if (arg_shifter.cur_arg_strncasecmp ("-SignalPeer") == 0) + { + this->command_ = SIGNAL_PEER; + + arg_shifter.consume_arg (); + } + else if (arg_shifter.cur_arg_strncasecmp ("-WaitToStart") == 0) + { + this->command_ = WAIT_TO_START; + + arg_shifter.consume_arg (); + } + + } +} + +void +TAO_Notify_Tests_Application_Command::handle_init (ACE_ENV_SINGLE_ARG_DECL) +{ + /// Fetch the root poa. + PortableServer::POA_var root_poa; + LOOKUP_MANAGER->resolve (root_poa); + ACE_CHECK; + + PortableServer::POAManager_var poa_manager = + root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + /// Activate the root POA. + poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + TAO_Notify_Tests_Priority_Mapping* mapping = new TAO_Notify_Tests_Priority_Mapping (); + + LOOKUP_MANAGER->_register (mapping); +} + +void +TAO_Notify_Tests_Application_Command::handle_wait_for_completion (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) +{ + ACE_DEBUG ((LM_DEBUG, "(%P, %t) Waiting for suppliers and consumers to finish...\n")); + + TAO_Notify_Tests_Activation_Manager* act_mgr = 0; + LOOKUP_MANAGER->resolve (act_mgr); + + act_mgr->wait_for_completion (); +} + +void +TAO_Notify_Tests_Application_Command::handle_shutdown (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) +{ + ACE_DEBUG ((LM_DEBUG, "(%P, %t)Shutting down the Application...\n")); + + TAO_Notify_Tests_Driver_Base* driver = 0; + LOOKUP_MANAGER->resolve (driver); + + driver->shutdown (); + +} + +void +TAO_Notify_Tests_Application_Command::handle_dump_stats (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) +{ + ACE_DEBUG ((LM_DEBUG, "(%P, %t)Dumpimg stats...\n")); + + TAO_Notify_Tests_Activation_Manager* act_mgr = 0; + LOOKUP_MANAGER->resolve (act_mgr); + + act_mgr->dump_stats (this->dump_samples_); +} + +void +TAO_Notify_Tests_Application_Command::handle_run (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) +{ + // Run the Consumers + + + //= Run the Suppliers + TAO_Notify_Tests_Activation_Manager* act_mgr = 0; + LOOKUP_MANAGER->resolve (act_mgr); + + if (act_mgr->activate_suppliers () == 0) + ACE_DEBUG ((LM_DEBUG, "Suppliers activated...\n")); + else + ACE_DEBUG ((LM_DEBUG, "Suppliers activation failed!...\n")); +} + +void +TAO_Notify_Tests_Application_Command::handle_signal_peer (ACE_ENV_SINGLE_ARG_DECL) +{ + TAO_Notify_Tests_Activation_Manager* act_mgr = 0; + LOOKUP_MANAGER->resolve (act_mgr); + + act_mgr->signal_peer (ACE_ENV_SINGLE_ARG_PARAMETER); +} + +void +TAO_Notify_Tests_Application_Command::handle_wait_to_start (ACE_ENV_SINGLE_ARG_DECL) +{ + TAO_Notify_Tests_Activation_Manager* act_mgr = 0; + LOOKUP_MANAGER->resolve (act_mgr); + + act_mgr->write_ior (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + act_mgr->wait_for_start_signal (ACE_ENV_SINGLE_ARG_PARAMETER); +} + +void +TAO_Notify_Tests_Application_Command::execute_i (ACE_ENV_SINGLE_ARG_DECL) +{ + if (this->command_ == INIT) + { + this->handle_init (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + } + else if (this->command_ == RUN) + { + this->handle_run (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + } + else if (this->command_ == WAIT_FOR_EVENTS) + { + this->handle_wait_for_completion (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + } + else if (this->command_ == SHUTDOWN) + { + this->handle_shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + } + else if (this->command_ == DUMP_STATE) + { + this->handle_dump_stats (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + } + else if (this->command_ == SIGNAL_PEER) + { + this->handle_signal_peer (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + } + else if (this->command_ == WAIT_TO_START) + { + this->handle_wait_to_start (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + } +} |