Merge pull request #2324 from jwillemsen/jwi-depcopydisabled
[ACE_TAO.git] / TAO / orbsvcs / tests / COIOP_Naming_Test / COIOP_Test.cpp
blobf5aef167ac08a80a7e13d7cc6703313e03ba6eab
1 #include "Server_Task.h"
2 #include "Client_Task.h"
3 #include "ace/Get_Opt.h"
4 #include "ace/Argv_Type_Converter.h"
5 #include "ace/SString.h"
6 #include "ace/Manual_Event.h"
7 #include "tao/Strategies/advanced_resource.h"
8 #include "NamingTask.h"
10 ACE_CString server_orb;
11 ACE_CString client_orb;
12 CORBA::Boolean result = false;
14 int
15 parse_args (int argc, ACE_TCHAR *argv[])
17 ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("sk:o:n"));
18 int c;
20 while ((c = get_opts ()) != -1)
21 switch (c)
23 case 's' :
24 result = true;
25 break;
26 case 'n':
27 server_orb.set ("server_orb");
28 client_orb.set ("client_orb");
29 break;
30 case '?':
31 default:
32 // This is a hack but that is okay!
33 return 0;
35 // Indicates successful parsing of the command line
36 return 0;
39 int
40 ACE_TMAIN(int argc, ACE_TCHAR *argv[])
42 if (parse_args (argc,
43 argv) == -1)
44 return -1;
46 try
48 // Start the Naming Service tasks
49 NamingTask name_service ("NamingORBA", argc, argv);
50 name_service.activate();
51 // Wait for the Naming Service initialized.
52 name_service.waitInit();
54 ACE_Argv_Type_Converter satc (argc, argv);
55 CORBA::ORB_var sorb =
56 CORBA::ORB_init (satc.get_argc (),
57 satc.get_TCHAR_argv (),
58 server_orb.c_str ());
60 ACE_Manual_Event me;
61 Server_Task server_task (name_service.root (),
62 sorb.in (),
63 me,
64 ACE_Thread_Manager::instance ());
66 if (server_task.activate (THR_NEW_LWP | THR_JOINABLE,
68 1) == -1)
70 ACE_ERROR ((LM_ERROR, "Error activating server task\n"));
73 // Wait for the server thread to do some processing
74 me.wait ();
76 ACE_Argv_Type_Converter catc (argc, argv);
77 CORBA::ORB_var corb =
78 CORBA::ORB_init (catc.get_argc (),
79 catc.get_TCHAR_argv (),
80 client_orb.c_str ());
82 Client_Task client_task (name_service.root (),
83 corb.in (),
84 ACE_Thread_Manager::instance (),
85 result);
87 if (client_task.activate (THR_NEW_LWP | THR_JOINABLE,
89 1) == -1)
91 ACE_ERROR ((LM_ERROR, "Error activating client task\n"));
94 // Wait for the client and server to finish
95 ACE_Thread_Manager::instance ()->wait ();
97 // Now that all threads have completed we can destroy the ORB
98 sorb->destroy ();
99 if (server_orb != client_orb)
101 corb->destroy ();
104 catch (const CORBA::Exception&)
106 // Ignore exceptions..
108 return 0;