2 #include "ace/Get_Opt.h"
5 class MT_Requestor
: public virtual ACE_Task_Base
8 MT_Requestor (Test::Middle_ptr m
, CORBA::Short sec
);
12 Test::Middle_var middle_
;
13 CORBA::Short seconds_
;
16 MT_Requestor::MT_Requestor (Test::Middle_ptr m
, CORBA::Short sec
)
17 : middle_ (Test::Middle::_duplicate (m
)),
30 ACE_TEXT ("Client thread %t calling delay with %d retries\n"),
34 this->middle_
->call_delay(seconds_
);
36 ACE_TEXT ("Client thread %t delay succeeded\n")));
39 catch (const CORBA::Exception
&ex
)
42 ACE_TEXT ("Client thread %t caught %s\n"),
46 ACE_DEBUG ((LM_DEBUG
, ACE_TEXT ("Client thread %t done\n")));
50 const ACE_TCHAR
*ior
= ACE_TEXT("file://middle.ior");
51 bool do_shutdown
= false;
56 parse_args (int argc
, ACE_TCHAR
*argv
[])
58 ACE_Get_Opt
get_opts (argc
, argv
, ACE_TEXT("k:n:s:x"));
61 while ((c
= get_opts ()) != -1)
65 ior
= get_opts
.opt_arg ();
68 num_threads
= ACE_OS::atoi (get_opts
.opt_arg ());
71 sec
= ACE_OS::atoi (get_opts
.opt_arg ());
78 ACE_ERROR_RETURN ((LM_ERROR
,
87 // Indicates successful parsing of the command line
92 ACE_TMAIN(int argc
, ACE_TCHAR
*argv
[])
97 CORBA::ORB_init (argc
, argv
);
99 if (parse_args (argc
, argv
) != 0)
102 CORBA::Object_var tmp
=
103 orb
->string_to_object(ior
);
105 Test::Middle_var middle
=
106 Test::Middle::_narrow(tmp
.in ());
108 if (CORBA::is_nil (middle
.in ()))
110 ACE_ERROR_RETURN ((LM_DEBUG
,
111 "Nil Test::Middle reference <%s>\n",
116 MT_Requestor
requestor (middle
.in(), sec
);
117 requestor
.activate (THR_NEW_LWP
| THR_JOINABLE
, num_threads
);
127 catch (const CORBA::Exception
& ex
)
129 ex
._tao_print_exception ("Client main exception caught:");