summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/Logging_Service/Logging_Service_i.cpp
blob: efc5eabf71e2d65d8608ebc59a8686c2b25143aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
// $Id$

#include "Logging_Service_i.h"

ACE_RCSID(Logging_Service, Logging_Service_i, "$Id$")

Logger_Server::Logger_Server (void)
  :service_name_ ("LoggingService")
{
  // Do nothing 
}

int
Logger_Server::parse_args (void)
{
  ACE_Get_Opt get_opts (argc_, argv_, "dn:");
  int c;

  while ((c = get_opts ()) != -1)
    switch (c)
      {
      case 'd':  // debug flag.
        TAO_debug_level++;
        break;
      case 'n':  // Set factory name to cmnd line arg
	service_name_ = get_opts.optarg;
	break;
      case '?':
      default:
        ACE_ERROR_RETURN ((LM_ERROR,
                           "usage:  %s"
                           " [-d]"
			   " [-n service-name]"
                           "\n",
                           argv_ [0]),
                          -1);
      }

  // Indicates successful parsing of command line.
  return 0;
}

int
Logger_Server::init (int argc,
		     char *argv[],
		     CORBA::Environment &env)
{
  this->argc_ = argc;
  this->argv_ = argv;

  // Call the init of <TAO_ORB_Manager> to initialize the ORB and
  // create a child POA under the root POA.
  if (this->orb_manager_.init_child_poa (argc,
					 argv,
					 "child_poa",
					 env) == -1)
    ACE_ERROR_RETURN ((LM_ERROR,
		       "%p\n",
		       "init_child_poa"),
		      -1);
  
  TAO_CHECK_ENV_RETURN (env,-1);
  
  // Parse the command line arguments.
  if (this->parse_args () != 0)
    ACE_ERROR_RETURN ((LM_ERROR,
		       "%p\n",
		       "parse_args"),
		      -1);

  // Activate the logger_factory.
  CORBA::String_var str =
    this->orb_manager_.activate_under_child_poa ("logger_factory",
						 &this->factory_impl_,
						 env);
    if (TAO_debug_level > 0)
    ACE_DEBUG ((LM_DEBUG,
		"The IOR is: <%s>\n",
		str.in ()));

    // Initialize the naming service
  if (this->init_naming_service (env) != 0)
    ACE_ERROR_RETURN ((LM_ERROR,
		       "%p\n",
		       "init_naming_service"),
		      -1);
  else
    return 0;
}


// Initialisation of Naming Service and register IDL_Logger Context
// and logger_factory object.

int
Logger_Server::init_naming_service (CORBA::Environment& env)
{
  // Get pointers to the ORB and child POA
  CORBA::ORB_var orb = this->orb_manager_.orb ();
  PortableServer::POA_var child_poa = this->orb_manager_.child_poa ();

  // Initialize the naming service
  if (this->my_name_server_.init (orb.in (),
				  child_poa.in ()) == -1)
    return -1;

  // Create an instance of the Logger_Factory
  Logger_Factory_var factory = this->factory_impl_._this (env);
  TAO_CHECK_ENV_RETURN (env, -1);

  //Register the logger_factory
  CosNaming::Name factory_name (1);
  factory_name.length (1);
  factory_name[0].id = CORBA::string_dup ("Logger_Factory");
  this->my_name_server_->bind (factory_name,
			       factory.in (),
			       env);
  TAO_CHECK_ENV_RETURN (env,-1);
  
  return 0;
}

int
Logger_Server::run (CORBA::Environment& env)
{
  if (this->orb_manager_.run (env) == -1)
    ACE_ERROR_RETURN ((LM_ERROR,
                       "Logger_Server::run"),
                      -1);
  return 0;
}

Logger_Server::~Logger_Server (void)
{
  // Do nothing
}