4 #include "tao/DynamicInterface/Request.h" /* This must come first for
7 #include "ace/Get_Opt.h"
9 #include "ace/Log_Msg.h"
10 #include "DII_ReplyHandler.h"
11 #include "tao/AnyTypeCode/Any.h"
12 #include "tao/PortableServer/POAC.h"
13 #include "tao/PortableServer/POAManagerC.h"
15 const ACE_TCHAR
*ior
= ACE_TEXT("file://server.ior");
20 parse_args (int argc
, ACE_TCHAR
*argv
[])
22 ACE_Get_Opt
get_opts (argc
, argv
, ACE_TEXT("xk:"));
25 while ((c
= get_opts ()) != -1)
33 ior
= get_opts
.optarg
;
38 ACE_ERROR_RETURN ((LM_ERROR
,
47 // Indicates successful parsing of the command line
52 do_primary_test (CORBA::Object_var
&server
,
53 Messaging::ReplyHandler_var
&callback
)
58 CORBA::Request_var req
= server
->_request("do_forward");
60 if (CORBA::is_nil (server
.in ()))
63 "Object reference <%s> is nil.\n",
68 ACE_DEBUG((LM_DEBUG
,"Client sending test string\n"));
69 CORBA::String_var test_string
= CORBA::string_dup ("123 look at me");
70 req
->add_in_arg ("text") <<=
71 CORBA::Any::from_string(test_string
.in(),30);
72 req
->sendc(callback
.in());
74 catch (const CORBA::Exception
&ex
)
77 "Client caught exception: %C\n",ex
._name()));
81 int do_shutdown_test (CORBA::Object_var
&server
)
84 "[client] invoking shutdown on the server \n"));
87 CORBA::Request_var req
= server
->_request("shutdown");
90 catch (const CORBA::Exception
& ex
)
92 ex
._tao_print_exception ("Client: exception caught during shutdown - ");
100 ACE_TMAIN(int argc
, ACE_TCHAR
*argv
[])
106 CORBA::ORB_var orb
= CORBA::ORB_init (argc
, argv
);
108 if (parse_args (argc
, argv
) != 0)
111 ACE_DEBUG ((LM_DEBUG
,"Client using ior source %s\n", ior
));
112 CORBA::Object_var server
= orb
->string_to_object (ior
);
114 CORBA::Object_var obj
= orb
->resolve_initial_references ("RootPOA");
115 PortableServer::POA_var root
=
116 PortableServer::POA::_narrow (obj
.in());
118 PortableServer::POAManager_var pm
= root
->the_POAManager();
120 bool got_reply
= false;
121 Messaging::ReplyHandler_var callback
= new DII_ReplyHandler(got_reply
);
123 do_primary_test (server
,callback
);
125 for (int i
= 0; i
< 100 && !got_reply
; i
++)
127 ACE_Time_Value
t(0,10000);
128 orb
->perform_work(t
);
132 result
= do_shutdown_test (server
);
134 ACE_DEBUG ((LM_DEBUG
,"Shutting down and destrying ORB.\n"));
136 ACE_DEBUG ((LM_DEBUG
,"ORB destroyed\n"));
138 catch (const ::CORBA::Exception
&ex
)
140 ex
._tao_print_exception("ERROR : unexpected CORBA exception caugth :");