diff options
Diffstat (limited to 'TAO/DevGuideExamples/ValueTypes/Bank/client.cpp')
-rw-r--r-- | TAO/DevGuideExamples/ValueTypes/Bank/client.cpp | 40 |
1 files changed, 34 insertions, 6 deletions
diff --git a/TAO/DevGuideExamples/ValueTypes/Bank/client.cpp b/TAO/DevGuideExamples/ValueTypes/Bank/client.cpp index b1c6b50bc7a..9004be236a5 100644 --- a/TAO/DevGuideExamples/ValueTypes/Bank/client.cpp +++ b/TAO/DevGuideExamples/ValueTypes/Bank/client.cpp @@ -6,7 +6,35 @@ #include <iostream> #include <stdexcept> +#include "ace/Get_Opt.h" +const ACE_TCHAR *ior = ACE_TEXT ("file://server.ior"); + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("k:")); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'k': + ior = get_opts.opt_arg (); + break; + + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-k <ior> " + "\n", + argv [0]), + -1); + } + // Indicates successful parsing of the command line + return 0; +} // Note : We use a completely different implementation // of the Person valuetype for the client side, just to @@ -28,16 +56,16 @@ private: } }; -const char* server_ior = "file://server.ior"; - - -int ACE_TMAIN (int ac, ACE_TCHAR* av[]) { +int ACE_TMAIN (int argc, ACE_TCHAR* argv[]) { try { - CORBA::ORB_var orb = CORBA::ORB_init(ac, av); + CORBA::ORB_var orb = CORBA::ORB_init(argc, argv); + + if (parse_args (argc, argv) != 0) + return 1; - CORBA::Object_var obj = orb->string_to_object(server_ior); + CORBA::Object_var obj = orb->string_to_object(ior); Transaction_var trans = Transaction::_narrow(obj.in()); if (CORBA::is_nil(trans.in())) throw std::runtime_error("failed to find a valid Transaction IOR"); |