summaryrefslogtreecommitdiff
path: root/ACE/TAO/tests/Bug_3683_Regression/Echo_Client_i.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/TAO/tests/Bug_3683_Regression/Echo_Client_i.cpp')
-rw-r--r--ACE/TAO/tests/Bug_3683_Regression/Echo_Client_i.cpp93
1 files changed, 93 insertions, 0 deletions
diff --git a/ACE/TAO/tests/Bug_3683_Regression/Echo_Client_i.cpp b/ACE/TAO/tests/Bug_3683_Regression/Echo_Client_i.cpp
new file mode 100644
index 00000000000..b73c744a21b
--- /dev/null
+++ b/ACE/TAO/tests/Bug_3683_Regression/Echo_Client_i.cpp
@@ -0,0 +1,93 @@
+//$Id$
+
+#include "Echo_Client_i.h"
+#include "ace/Get_Opt.h"
+#include "ace/Read_Buffer.h"
+#include "ace/OS_NS_unistd.h"
+#include "tao/Messaging/Messaging.h"
+
+// This is the interface program that accesses the remote object
+
+// Constructor.
+Echo_Client_i::Echo_Client_i (void) : payload_length_ (0)
+{
+ //no-op
+}
+
+//Destructor.
+Echo_Client_i::~Echo_Client_i (void)
+{
+ //no-op
+}
+
+int
+Echo_Client_i::parse_args (int argc, ACE_TCHAR *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("p:"));
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'p':
+ this->payload_length_ = ACE_OS::atoi(get_opts.opt_arg ()) * 1000000;
+ break;
+ }
+ // Indicates successful parsing of the command line
+ return 0;
+}
+
+
+int
+Echo_Client_i::run (const char *name,
+ int argc,
+ ACE_TCHAR *argv[])
+{
+ // Initialize the client.
+ if (client_.init (name, argc, argv) == -1)
+ return -1;
+
+ if (this->parse_args (argc, argv) == -1)
+ return -1;
+
+ try
+ {
+ CORBA::PolicyList policyList;
+ policyList.length(1);
+ CORBA::Any objectTimeout;
+ TimeBase::TimeT to = 50000;
+ to *= 365 * 24 * 3600;
+ to *= 100;
+ objectTimeout <<= to;
+ policyList[0] = client_.orb()->create_policy(
+ Messaging::RELATIVE_RT_TIMEOUT_POLICY_TYPE,
+ objectTimeout);
+ CORBA::Object_var object =
+ client_->_set_policy_overrides(policyList, CORBA::ADD_OVERRIDE);
+
+ Echo_var srv(Echo::_narrow(object.in ()));
+
+ char* buf = new char [this->payload_length_+ 1];
+ ACE_OS::memset (buf, 'a', this->payload_length_);
+ buf[this->payload_length_] = '\0';
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sending len: %d \n"), ACE_OS::strlen (buf)));
+
+ CORBA::String_var s = srv->echo_string (buf);
+
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("\nString echoed by client has len %d\n"),
+ ACE_OS::strlen(s.in ())));
+
+ delete [] buf;
+
+ if (client_.do_shutdown () == 1)
+ client_->shutdown ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("\n Exception in RMI");
+ return -1;
+ }
+
+ return 0;
+}