text: // -*- C++ -*-
  // $Id: client.cpp 95471 2012-01-22 13:59:29Z johnnyw $
  
  #include "ace/Get_Opt.h"
  #include "testC.h"
  
  const ACE_TCHAR *ior = 0;
  
  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':
  
          if (ior == 0)
            ior = get_opts.opt_arg ();
  
          break;
        default:
          ACE_ERROR_RETURN ((LM_ERROR,
                             "Usage: %s "
                             "-k IOR\n",
                             argv[0]),
                            -1);
        }
  
    return 0;
  }
  
  int
  ACE_TMAIN(int argc, ACE_TCHAR *argv[])
  {
    try
      {
        CORBA::ORB_var orb = CORBA::ORB_init (argc,
                                              argv,
                                              "Client ORB");
  
        if (::parse_args (argc, argv) != 0)
          return -1;
  
        CORBA::Object_var object =
          orb->string_to_object (ior);
  
        test_var server = test::_narrow (object.in ());
  
        if (CORBA::is_nil (server.in ()))
          {
            ACE_ERROR_RETURN ((LM_ERROR,
                               "Object reference <%s> is nil.\n",
                               ior),
                              1);
          }
  
        server->hello ();
  
        server->shutdown ();
  
        orb->destroy ();
      }
    catch (const CORBA::Exception& ex)
      {
        ex._tao_print_exception ("Caught exception:");
        return -1;
      }
  
    ACE_DEBUG ((LM_INFO,
                "PortableInterceptor ORB::shutdown() test passed.\n"));
  
    return 0;
  }
  