Merge pull request #2301 from sonndinh/remove-dup-reactor-functions
[ACE_TAO.git] / TAO / tests / MProfile_Connection_Timeout / server.cpp
blobb8e6c1dc8882fce59f00f9076d2df7862b9cff60
1 // -*- C++ -*-
2 #include "ace/Get_Opt.h"
3 #include "test_i.h"
4 #include "ace/OS_NS_stdio.h"
6 const ACE_TCHAR *ior_output_file = 0;
7 int orb_run = 0;
8 int
9 parse_args (int argc, ACE_TCHAR *argv[])
11 ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("o:r"));
12 int c;
14 while ((c = get_opts ()) != -1)
15 switch (c)
17 case 'o':
18 ior_output_file = get_opts.opt_arg ();
19 break;
20 case 'r':
21 orb_run = 1;
22 break;
23 case '?':
24 default:
25 ACE_ERROR_RETURN ((LM_ERROR,
26 "usage: %s "
27 "-o <iorfile>"
28 "\n",
29 argv [0]),
30 -1);
32 // Indicates successful parsing of the command line
33 return 0;
36 int
37 ACE_TMAIN(int argc, ACE_TCHAR *argv[])
39 try
41 CORBA::ORB_var orb =
42 CORBA::ORB_init (argc, argv);
44 CORBA::Object_var poa_object =
45 orb->resolve_initial_references ("RootPOA");
47 if (CORBA::is_nil (poa_object.in ()))
48 ACE_ERROR_RETURN ((LM_ERROR,
49 " (%P|%t) Unable to initialize the POA.\n"),
50 1);
52 PortableServer::POA_var root_poa =
53 PortableServer::POA::_narrow (poa_object.in ());
55 // Get the POAManager of the RootPOA.
56 PortableServer::POAManager_var poa_manager =
57 root_poa->the_POAManager ();
59 poa_manager->activate ();
61 if (parse_args (argc, argv) != 0)
62 return 1;
64 Simple_Server_i server_impl (orb.in ());
66 PortableServer::ObjectId_var id =
67 root_poa->activate_object (&server_impl);
69 CORBA::Object_var object = root_poa->id_to_reference (id.in ());
71 Simple_Server_var server =
72 Simple_Server::_narrow (object.in ());
74 CORBA::String_var ior =
75 orb->object_to_string (server.in ());
77 ACE_DEBUG ((LM_DEBUG, "Activated as <%C>\n", ior.in ()));
79 // If the ior_output_file exists, output the ior to it
80 if (ior_output_file != 0)
82 FILE *output_file= ACE_OS::fopen (ior_output_file, "w");
83 if (output_file == 0)
84 ACE_ERROR_RETURN ((LM_ERROR,
85 "Cannot open output file for writing IOR: %s",
86 ior_output_file),
87 1);
88 ACE_OS::fprintf (output_file, "%s", ior.in ());
89 ACE_OS::fclose (output_file);
92 // RUn the event loop if needed
93 if (orb_run)
95 orb->run ();
98 ACE_DEBUG ((LM_DEBUG, "event loop finished\n"));
100 root_poa->destroy (true, true);
102 catch (const CORBA::Exception& ex)
104 ex._tao_print_exception ("Caught exception:");
105 return 1;
108 return 0;