summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Mesnier <mesnier_p@ociweb.com>2013-03-11 16:43:46 +0000
committerPhil Mesnier <mesnier_p@ociweb.com>2013-03-11 16:43:46 +0000
commit308a3b832b24055d1ab6fc796953259654aca8c5 (patch)
treed3daf23de43fc24e6ecbf1635e8e63734c8aa1cc
parenta27e79904f95f20fd945bdd42053bd620c76df01 (diff)
downloadATCD-308a3b832b24055d1ab6fc796953259654aca8c5.tar.gz
Mon Mar 11 16:31:08 UTC 2013 Phil Mesnier <mesnier_p@ociweb.com>
-rw-r--r--TAO/ChangeLog_Asynch_ImR18
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.cpp13
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h3
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/Locator_Options.cpp22
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/Locator_Options.h6
-rwxr-xr-xTAO/orbsvcs/tests/ImplRepo/scale_clients/run_test.pl6
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 <mesnier_p@socket.net>
+Mon Mar 11 16:31:08 UTC 2013 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * 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 <mesnier_p@ociweb.com>
* 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) {