summaryrefslogtreecommitdiff
path: root/TAO/DevGuideExamples/Messaging/RelativeRoundtripTimeout/MessengerClient.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/DevGuideExamples/Messaging/RelativeRoundtripTimeout/MessengerClient.cpp')
-rw-r--r--TAO/DevGuideExamples/Messaging/RelativeRoundtripTimeout/MessengerClient.cpp47
1 files changed, 40 insertions, 7 deletions
diff --git a/TAO/DevGuideExamples/Messaging/RelativeRoundtripTimeout/MessengerClient.cpp b/TAO/DevGuideExamples/Messaging/RelativeRoundtripTimeout/MessengerClient.cpp
index ce7f6f0019c..a4f9437effa 100644
--- a/TAO/DevGuideExamples/Messaging/RelativeRoundtripTimeout/MessengerClient.cpp
+++ b/TAO/DevGuideExamples/Messaging/RelativeRoundtripTimeout/MessengerClient.cpp
@@ -4,13 +4,50 @@
#include "tao/TimeBaseC.h"
#include "tao/Messaging/Messaging.h"
#include <iostream>
+#include "ace/Get_Opt.h"
+
+const ACE_TCHAR *ior = ACE_TEXT ("file://MessengerServer.ior");
+long msecs = 0; // the RelativeRoundtripTimeout value
+
+int
+parse_args (int argc, ACE_TCHAR *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("k:t:"));
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'k':
+ ior = get_opts.opt_arg ();
+ break;
+ case 't':
+ msecs = ACE_OS::atoi(get_opts.opt_arg ());
+ break;
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-k <ior> "
+ "-t <msec> "
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates successful parsing of the command line
+ return 0;
+}
+
int ACE_TMAIN(int argc, ACE_TCHAR * argv[])
{
try {
CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);
- CORBA::Object_var obj = orb->string_to_object("file://MessengerServer.ior");
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ CORBA::Object_var obj = orb->string_to_object(ior);
if (CORBA::is_nil(obj.in())) {
std::cerr << "Nil Messenger reference" << std::endl;
return 1;
@@ -25,15 +62,11 @@ int ACE_TMAIN(int argc, ACE_TCHAR * argv[])
CORBA::PolicyCurrent_var policy_current = CORBA::PolicyCurrent::_narrow (obj.in());
ACE_ASSERT(! CORBA::is_nil(policy_current.in()));
- // Set the RelativeRoundtripTimeout value
- long msecs = 0;
- if (argc > 1) {
- msecs = ACE_OS::atoi(argv[1]);
- } else {
+ // TimeT is in 10ths of a microsecond (10000 == 1.0e-3 * 1.0e7).
+ if (msecs <= 0) {
std::cout << "Enter relative roundtrip timeout in milliseconds -->";
std::cin >> msecs;
}
- // TimeT is in 10ths of a microsecond (10000 == 1.0e-3 * 1.0e7).
TimeBase::TimeT relative_rt_timeout = msecs * 10000;
CORBA::Any relative_rt_timeout_as_any;