summaryrefslogtreecommitdiff
path: root/TAO/performance-tests/Cubit/TAO/IDL_Cubit/Cubit_Server.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/performance-tests/Cubit/TAO/IDL_Cubit/Cubit_Server.cpp')
-rw-r--r--TAO/performance-tests/Cubit/TAO/IDL_Cubit/Cubit_Server.cpp119
1 files changed, 119 insertions, 0 deletions
diff --git a/TAO/performance-tests/Cubit/TAO/IDL_Cubit/Cubit_Server.cpp b/TAO/performance-tests/Cubit/TAO/IDL_Cubit/Cubit_Server.cpp
new file mode 100644
index 00000000000..c6c491c2911
--- /dev/null
+++ b/TAO/performance-tests/Cubit/TAO/IDL_Cubit/Cubit_Server.cpp
@@ -0,0 +1,119 @@
+// $Id$
+
+#include "Cubit_Server.h"
+#include "tao/TAO_Internal.h"
+#include "tao/debug.h"
+#include "ace/OS_NS_stdio.h"
+
+ACE_RCSID(IDL_Cubit, Cubit_Server, "$Id$")
+
+Cubit_Server::Cubit_Server (void)
+ : ior_output_file_ (0),
+ orb_manager_ (),
+ factory_impl_ (0),
+ factory_id_ (),
+ argc_ (0),
+ argv_ (0)
+{
+}
+
+int
+Cubit_Server::parse_args (void)
+{
+ ACE_Get_Opt get_opts (argc_, argv_, "df:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'd': // debug flag.
+ TAO_debug_level++;
+ break;
+
+ case 'f': // output the IOR to a file.
+ this->ior_output_file_ = ACE_OS::fopen (get_opts.opt_arg (), "w");
+ if (this->ior_output_file_ == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Unable to open <%s> for writing: %p\n",
+ get_opts.opt_arg (),
+ ""),
+ -1);
+ break;
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s"
+ " [-d]"
+ " [-f] <ior_output_file>"
+ "\n",
+ argv_ [0]),
+ -1);
+ }
+
+ // Indicates successful parsing of command line.
+ return 0;
+}
+
+int
+Cubit_Server::init (int argc,
+ char** 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") == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "%p\n",
+ "init_child_poa"),
+ -1);
+ this->argc_ = argc;
+ this->argv_ = argv;
+
+ if (this->parse_args () == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "%p\n",
+ "parse_args"),
+ -1);
+ // Get the orb
+ CORBA::ORB_var orb = this->orb_manager_.orb ();
+
+ // Now create the implementations
+ this->factory_impl_ = new Cubit_Factory_i (orb.in ());
+
+ PortableServer::POA_var root_poa = this->orb_manager_.root_poa ();
+ this->factory_impl_->set_default_poa (root_poa.in ());
+
+ this->factory_id_ =
+ this->orb_manager_.activate_under_child_poa ("factory",
+ this->factory_impl_);
+
+ ACE_DEBUG ((LM_DEBUG,
+ "The IOR is: <%s>\n",
+ this->factory_id_.in ()));
+
+ if (this->ior_output_file_)
+ {
+ ACE_OS::fprintf (this->ior_output_file_,
+ "%s",
+ this->factory_id_.in ());
+ ACE_OS::fclose (this->ior_output_file_);
+ }
+
+ return 0;
+}
+
+int
+Cubit_Server::run (void)
+{
+ if (this->orb_manager_.run () == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Cubit_Server::run"),
+ -1);
+ return 0;
+}
+
+Cubit_Server::~Cubit_Server (void)
+{
+ delete this->factory_impl_;
+}