summaryrefslogtreecommitdiff
path: root/TAO/examples/Logging/Logging_Service_i.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/examples/Logging/Logging_Service_i.cpp')
-rw-r--r--TAO/examples/Logging/Logging_Service_i.cpp142
1 files changed, 142 insertions, 0 deletions
diff --git a/TAO/examples/Logging/Logging_Service_i.cpp b/TAO/examples/Logging/Logging_Service_i.cpp
new file mode 100644
index 00000000000..3b65ab4da94
--- /dev/null
+++ b/TAO/examples/Logging/Logging_Service_i.cpp
@@ -0,0 +1,142 @@
+// $Id$
+
+#include "Logging_Service_i.h"
+#include "tao/debug.h"
+
+ACE_RCSID(Logging_Service, Logging_Service_i, "$Id$")
+
+Logger_Server::Logger_Server (void)
+ :service_name_ (const_cast<char *> ("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.opt_arg ();
+ 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[]
+ ACE_ENV_ARG_DECL)
+{
+ 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"
+ ACE_ENV_ARG_PARAMETER) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "%p\n",
+ "init_child_poa"),
+ -1);
+
+ ACE_CHECK_RETURN (-1);
+
+ this->orb_manager_.activate_poa_manager (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (-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_
+ ACE_ENV_ARG_PARAMETER);
+ if (TAO_debug_level > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "The IOR is: <%s>\n",
+ str.in ()));
+
+ // Initialize the naming service
+ int ret = this->init_naming_service (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (-1);
+ if (ret != 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 (ACE_ENV_SINGLE_ARG_DECL_NOT_USED ACE_ENV_SINGLE_ARG_PARAMETER)
+{
+ // Get pointers to the ORB and child POA
+ CORBA::ORB_var orb = this->orb_manager_.orb ();
+
+ // Initialize the naming service
+ if (this->my_name_server_.init (orb.in ()) == -1)
+ return -1;
+
+ // Create an instance of the Logger_Factory
+ Logger_Factory_var factory = this->factory_impl_._this (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (-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 ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (-1);
+
+ return 0;
+}
+
+int
+Logger_Server::run (ACE_ENV_SINGLE_ARG_DECL)
+{
+ int ret = this->orb_manager_.run (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (-1);
+ if (ret == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Logger_Server::run"),
+ -1);
+ return 0;
+}
+
+Logger_Server::~Logger_Server (void)
+{
+ // Do nothing
+}