From 308a3b832b24055d1ab6fc796953259654aca8c5 Mon Sep 17 00:00:00 2001 From: Phil Mesnier Date: Mon, 11 Mar 2013 16:43:46 +0000 Subject: Mon Mar 11 16:31:08 UTC 2013 Phil Mesnier --- TAO/ChangeLog_Asynch_ImR | 18 +++++++++++++++++- TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.cpp | 13 +++++++++++-- TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h | 3 +++ TAO/orbsvcs/ImplRepo_Service/Locator_Options.cpp | 22 +++++++++++----------- TAO/orbsvcs/ImplRepo_Service/Locator_Options.h | 6 +++--- .../tests/ImplRepo/scale_clients/run_test.pl | 6 +++++- 6 files changed, 50 insertions(+), 18 deletions(-) diff --git a/TAO/ChangeLog_Asynch_ImR b/TAO/ChangeLog_Asynch_ImR index 80899d2aada..a7f9739345d 100644 --- a/TAO/ChangeLog_Asynch_ImR +++ b/TAO/ChangeLog_Asynch_ImR @@ -1,4 +1,20 @@ -Mon Mar 11 01:50:33 UTC 2013 Phil Mesnier +Mon Mar 11 16:31:08 UTC 2013 Phil Mesnier + + * orbsvcs/ImplRepo_Service/ImR_Locator_i.h: + * orbsvcs/ImplRepo_Service/ImR_Locator_i.cpp: + * orbsvcs/ImplRepo_Service/Locator_Options.h: + * orbsvcs/ImplRepo_Service/Locator_Options.cpp: + + Actually select the DSI/AMH implementation when the asynch + option is supplied. Avoid confusion with the option by calling + it --asynch rather than the earlier --use_dsi + + * orbsvcs/tests/ImplRepo/scale_clients/run_test.pl: + + Modify the test to verify that both synchronous and asynch + implementations work. + +Mon Mar 11 01:50:33 UTC 2013 Phil Mesnier * orbsvcs/ImplRepo_Service/Adapter_Activator.h: * orbsvcs/ImplRepo_Service/Adapter_Activator.cpp: diff --git a/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.cpp b/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.cpp index 2a6507277df..46d8785bf70 100644 --- a/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.cpp +++ b/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.cpp @@ -57,6 +57,7 @@ createPersistentPOA (PortableServer::POA_ptr root_poa, const char* poa_name) { ImR_Locator_i::ImR_Locator_i (void) : forwarder_ (*this) + , dsi_forwarder_ (*this) , ins_locator_ (0) , debug_ (0) , read_only_ (false) @@ -95,8 +96,16 @@ ImR_Locator_i::init_with_orb (CORBA::ORB_ptr orb, Options& opts) this->root_poa_ = PortableServer::POA::_narrow (obj.in ()); ACE_ASSERT (! CORBA::is_nil (this->root_poa_.in ())); - this->forwarder_.init (orb); - this->adapter_.init (& this->forwarder_); + if (opts.use_asynch()) + { + this->dsi_forwarder_.init (orb); + this->adapter_.init (& this->dsi_forwarder_); + } + else + { + this->forwarder_.init (orb); + this->adapter_.init (& this->forwarder_); + } // Register the Adapter_Activator reference to be the RootPOA's // Adapter Activator. diff --git a/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h b/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h index b895e569e2d..0cf30dd85fa 100644 --- a/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h +++ b/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h @@ -133,6 +133,9 @@ private: // The class that handles the forwarding. ImR_Forwarder forwarder_; + // The alternative forwarder uses DSI/AMH for asynch forwarding. + ImR_DSI_Forwarder dsi_forwarder_; + // Used for the forwarding of any type of POA. ImR_Adapter adapter_; diff --git a/TAO/orbsvcs/ImplRepo_Service/Locator_Options.cpp b/TAO/orbsvcs/ImplRepo_Service/Locator_Options.cpp index 76b10bcc4ef..6d8f925a049 100644 --- a/TAO/orbsvcs/ImplRepo_Service/Locator_Options.cpp +++ b/TAO/orbsvcs/ImplRepo_Service/Locator_Options.cpp @@ -35,7 +35,7 @@ Options::Options () , service_command_ (SC_NONE) , unregister_if_address_reused_ (false) , imr_type_ (STANDALONE_IMR) -, use_dsi_ (false) +, use_asynch_ (false) { } @@ -237,9 +237,9 @@ Options::parse_args (int &argc, ACE_TCHAR *argv[]) ACE_Time_Value (0, 1000 * ACE_OS::atoi (shifter.get_current ())); } else if (ACE_OS::strcasecmp (shifter.get_current (), - ACE_TEXT ("--use_dsi")) == 0) + ACE_TEXT ("--asynch")) == 0) { - this->use_dsi_ = true; + this->use_asynch_ = true; } else { @@ -304,7 +304,7 @@ Options::print_usage (void) const ACE_TEXT (" -s Run as a service\n") ACE_TEXT (" -t secs Server startup timeout.(Default=60s)\n") ACE_TEXT (" -v msecs Server verification interval.(Default=10s)\n") - ACE_TEXT (" --use_dsi Servant dispatching using \n") + ACE_TEXT (" --asynch Servant dispatching using asynch method handling\n") )); } @@ -373,8 +373,8 @@ Options::save_registry_options () (LPBYTE) &this->imr_type_ , sizeof (this->imr_type_)); ACE_ASSERT (err == ERROR_SUCCESS); - err = ACE_TEXT_RegSetValueEx (key, ACE_TEXT ("UseDSI"), 0, REG_DWORD, - (LPBYTE) &this->use_dsi_ , sizeof (this->use_dsi_)); + err = ACE_TEXT_RegSetValueEx (key, ACE_TEXT ("Asynch"), 0, REG_DWORD, + (LPBYTE) &this->use_asynch_ , sizeof (this->use_asynch_)); ACE_ASSERT (err == ERROR_SUCCESS); err = ::RegCloseKey (key); @@ -496,9 +496,9 @@ Options::load_registry_options () ACE_ASSERT (type == REG_DWORD); } - sz = sizeof(use_dsi_); - err = ACE_TEXT_RegQueryValueEx (key, ACE_TEXT ("UseDSI"), 0, &type, - (LPBYTE) &this->use_dsi_ , &sz); + sz = sizeof(use_asynch_); + err = ACE_TEXT_RegQueryValueEx (key, ACE_TEXT ("Asynch"), 0, &type, + (LPBYTE) &this->use_asynch_ , &sz); if (err == ERROR_SUCCESS) { ACE_ASSERT (type == REG_DWORD); @@ -593,7 +593,7 @@ Options::imr_type (void) const } bool -Options::use_dsi (void) const +Options::use_asynch (void) const { - return this->use_dsi_; + return this->use_asynch_; } diff --git a/TAO/orbsvcs/ImplRepo_Service/Locator_Options.h b/TAO/orbsvcs/ImplRepo_Service/Locator_Options.h index bf35b8cb140..f7bac160d61 100644 --- a/TAO/orbsvcs/ImplRepo_Service/Locator_Options.h +++ b/TAO/orbsvcs/ImplRepo_Service/Locator_Options.h @@ -101,7 +101,7 @@ public: enum ImrType { BACKUP_IMR, PRIMARY_IMR, STANDALONE_IMR }; ImrType imr_type(void) const; - bool use_dsi (void) const; + bool use_asynch (void) const; private: /// Parses and pulls out arguments for the ImR @@ -159,8 +159,8 @@ private: /// The type of ImR Locator this is. ImrType imr_type_; - /// Is the dispatching handled by a ServantLocator or a default servant? - bool use_dsi_; + /// Is the implementation using synchronous or asynchronous handling? + bool use_asynch_; }; diff --git a/TAO/orbsvcs/tests/ImplRepo/scale_clients/run_test.pl b/TAO/orbsvcs/tests/ImplRepo/scale_clients/run_test.pl index e90d02d7067..1e5f12834d5 100755 --- a/TAO/orbsvcs/tests/ImplRepo/scale_clients/run_test.pl +++ b/TAO/orbsvcs/tests/ImplRepo/scale_clients/run_test.pl @@ -21,6 +21,7 @@ my $server_init_delay = 1; my $server_reply_delay = 0; my $rt_timeout_msecs = 0; my $max_rt_tries = 1; +my $asynch_loc = ""; if ($#ARGV >= 0) { for (my $i = 0; $i <= $#ARGV; $i++) { @@ -59,6 +60,9 @@ if ($#ARGV >= 0) { elsif ($ARGV[$i] eq "-no_imr") { $no_imr = 1; } + elsif ($ARGV[$i] eq "-asynch") { + $asynch_loc = "--use_dsi"; + } else { usage(); exit 1; @@ -125,7 +129,7 @@ sub scale_clients_test my $result = 0; my $start_time = time(); - $IMR->Arguments ("-d 1 -o $imr_imriorfile -orbendpoint iiop://:$port "); + $IMR->Arguments ("-d 1 -o $imr_imriorfile -orbendpoint iiop://:$port $asynch_loc "); # "-ORBDebugLevel 10 -ORBVerboseLogging"); if ($no_imr) { -- cgit v1.2.1