More tests update
[ACE_TAO.git] / TAO / tests / Bug_1869_Regression / client.cpp
blobe3282dc75c7bfcc970fcdbed01471adc0ef75804
1 #include "AMIS.h"
2 #include "ace/Task.h"
3 #include "ace/OS_NS_unistd.h"
4 #include "ace/Get_Opt.h"
6 const ACE_TCHAR *hostname = ACE_TEXT ("localhost");
7 const ACE_TCHAR *port = ACE_TEXT ("12345");
9 class AdderCallback
10 : public POA_AMI_test::AMI_adderHandler,
11 public ACE_Task_Base {
13 public:
14 AdderCallback(CORBA::ORB_ptr orb)
15 : orb(CORBA::ORB::_duplicate(orb)) {
16 activate();
19 virtual void add (
20 CORBA::Long ami_return_val
23 ACE_DEBUG ((LM_DEBUG, "Return value: %d\n", ami_return_val));
26 virtual void add_excep (
27 ::Messaging::ExceptionHolder *
30 ACE_DEBUG ((LM_DEBUG, "Caught exception in _excep\n"));
33 virtual int svc() {
34 orb->run();
36 return 0;
39 CORBA::ORB_var orb;
43 int
44 parse_args (int argc, ACE_TCHAR *argv[])
46 ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("h:p:"));
47 int c;
49 while ((c = get_opts ()) != -1)
50 switch (c)
52 case 'h':
53 hostname = get_opts.opt_arg ();
54 break;
55 case 'p':
56 port = get_opts.opt_arg ();
57 break;
58 case '?':
59 default:
60 ACE_ERROR_RETURN ((LM_ERROR,
61 "usage: %s "
62 "-h <hostname> "
63 "-p <port> "
64 "\n",
65 argv [0]),
66 -1);
68 // Indicates successful parsing of the command line
69 return 0;
73 int ACE_TMAIN (int argc, ACE_TCHAR* argv[]) {
75 ACE_TCHAR address_servant[1000];
77 try {
79 CORBA::ORB_var orb = CORBA::ORB_init (argc, argv);
81 if (parse_args (argc, argv) != 0)
82 return 1;
83 // Get reference to Root POA
84 CORBA::Object_var obj
85 = orb->resolve_initial_references ("RootPOA");
87 PortableServer::POA_var rootPOA = PortableServer::POA::_narrow (obj.in ());
89 // Activate POA manager
90 PortableServer::POAManager_var mgr
91 = rootPOA->the_POAManager ();
93 mgr->activate();
95 ACE_OS::sprintf(address_servant, ACE_TEXT("corbaloc:iiop:%s:%s/Adder"), hostname, port);
97 // Resolve Adder Reference
98 obj = orb->string_to_object(ACE_TEXT_ALWAYS_CHAR(address_servant));
99 AMI_test::adder_var adder = AMI_test::adder::_narrow(obj.in ());
101 AdderCallback cb_servant(orb.in ());
103 while(true) {
106 adder->sendc_add(cb_servant._this(), 3, 2);
108 catch(...)
110 ACE_ERROR ((LM_ERROR, "ERROR: Caught exception after sendc_add\n"));
112 ACE_OS::sleep (1);
115 catch(...)
117 ACE_ERROR ((LM_ERROR, "ERROR: Caught exception in main\n"));
118 return 1;
121 return 0;