2 #include "tao/DynamicInterface/Request.h"
3 #include "tao/DynamicInterface/DII_CORBA_methods.h"
5 #include "ace/Get_Opt.h"
6 #include "ace/OS_NS_unistd.h"
8 const ACE_TCHAR
*ior
= ACE_TEXT("file://test.ior");
11 parse_args (int argc
, ACE_TCHAR
*argv
[])
13 ACE_Get_Opt
get_opts (argc
, argv
, ACE_TEXT("k:"));
16 while ((c
= get_opts ()) != -1)
20 ior
= get_opts
.opt_arg ();
25 ACE_ERROR_RETURN ((LM_ERROR
,
32 // Indicates successful parsing of the command line
37 ACE_TMAIN(int argc
, ACE_TCHAR
*argv
[])
41 CORBA::ORB_var orb
= CORBA::ORB_init (argc
, argv
);
43 if (parse_args (argc
, argv
) != 0)
46 CORBA::Object_var obj
= orb
->string_to_object(ior
);
48 const char* the_string
= 0;
50 ACE_DEBUG ((LM_INFO
, "(%P|%t) - #### Deferred twoway DII (using get_response())\n"));
52 CORBA::Request_var req
= obj
->_request ("get_string");
53 req
->set_return_type (CORBA::_tc_string
);
55 req
->send_deferred ();
56 ACE_DEBUG ((LM_INFO
, "(%P|%t) - Get response...\n"));
58 req
->return_value () >>= the_string
;
60 ACE_DEBUG ((LM_DEBUG
, "(%P|%t) - string returned <%C>\n",
63 ACE_DEBUG ((LM_INFO
, "(%P|%t) - #### Oneway DII to initiate crash\n"));
65 req
= obj
->_request ("crash");
69 ACE_OS::sleep(1); // give it some time
71 ACE_DEBUG ((LM_INFO
, "(%P|%t) - #### Multiple deferred twoway DII (with discarded replies)\n"));
75 for (int i
=0; i
<iterations
;++i
)
79 ACE_DEBUG ((LM_INFO
, "(%P|%t) - get_string iteration #%d\n", i
));
81 req
= obj
->_request ("get_string");
82 req
->set_return_type (CORBA::_tc_string
);
84 req
->send_deferred ();
87 ACE_DEBUG ((LM_INFO
, "(%P|%t) - sent deferred\n"));
89 catch (const CORBA::Exception
&)
97 ACE_DEBUG ((LM_ERROR
, "(%P|%t) - All requests unexpectedly succeeded\n"));
101 ACE_DEBUG ((LM_INFO
, "(%P|%t) - Caught exceptions from requests as expected (%d)\n", exceptions
));
106 catch (const CORBA::Exception
& ex
)
108 ex
._tao_print_exception ("Exception caught:");