1 //=============================================================================
3 * @file Load_Balancing_Service.cpp
5 * @author Marina Spivak <marina@cs.wustl.edu>
7 //=============================================================================
10 #include "Load_Balancing_Service.h"
11 #include "Load_Balancer_i.h"
12 #include "tao/debug.h"
13 #include "ace/Get_Opt.h"
14 #include "ace/OS_NS_stdio.h"
16 Load_Balancing_Service::Load_Balancing_Service (void)
17 : ior_output_file_ (0)
22 Load_Balancing_Service::parse_args (int argc
, ACE_TCHAR
*argv
[])
24 ACE_Get_Opt
get_opts (argc
, argv
, ACE_TEXT("do:"));
27 while ((c
= get_opts ()) != -1)
30 case 'd': // debug flag.
33 case 'o': // outputs object ior to the specified file.
34 this->ior_output_file_
=
35 ACE_OS::fopen (get_opts
.opt_arg (), "w");
37 if (this->ior_output_file_
== 0)
38 ACE_ERROR_RETURN ((LM_ERROR
,
39 "Unable to open %s for writing: %p\n",
40 get_opts
.opt_arg ()), -1);
44 ACE_ERROR_RETURN ((LM_ERROR
,
47 " [-o] <ior_output_file>"
53 // Indicates successful parsing of command line.
58 Load_Balancing_Service::init (int argc
,
62 CORBA::String_var ior
;
66 result
= this->orb_manager_
.init (argc
,
71 // Check the non-ORB arguments.
72 result
= this->parse_args (argc
, argv
);
76 // Create, ref. count, and activate the servant.
77 Object_Group_Factory_i
* factory_servant
;
78 ACE_NEW_RETURN (factory_servant
,
79 Object_Group_Factory_i (),
81 PortableServer::ServantBase_var s
= factory_servant
;
82 ior
= orb_manager_
.activate (factory_servant
);
86 else if (TAO_debug_level
> 1)
88 "Load_Balancer: Object Group Factory ior is %C\n",
91 catch (const CORBA::Exception
& ex
)
93 ex
._tao_print_exception ("Load_Balancing_Service::init");
97 if (this->ior_output_file_
!= 0)
99 ACE_OS::fprintf (this->ior_output_file_
,
102 ACE_OS::fclose (this->ior_output_file_
);
110 Load_Balancing_Service::run (void)
112 ACE_DEBUG ((LM_DEBUG
,
113 "Load_Balancer: Initialized\n"));
117 result
= this->orb_manager_
.run ();
122 Load_Balancing_Service::~Load_Balancing_Service (void)
127 ACE_TMAIN(int argc
, ACE_TCHAR
*argv
[])
130 Load_Balancing_Service factory
;
132 if (factory
.init (argc
, argv
) == -1)
137 result
= factory
.run ();
139 catch (const CORBA::Exception
& ex
)
141 ex
._tao_print_exception ("Load_Balancing_Service");