summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/tests/ImplRepo/IR_Helper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/tests/ImplRepo/IR_Helper.cpp')
-rw-r--r--TAO/orbsvcs/tests/ImplRepo/IR_Helper.cpp227
1 files changed, 0 insertions, 227 deletions
diff --git a/TAO/orbsvcs/tests/ImplRepo/IR_Helper.cpp b/TAO/orbsvcs/tests/ImplRepo/IR_Helper.cpp
deleted file mode 100644
index 649c8903775..00000000000
--- a/TAO/orbsvcs/tests/ImplRepo/IR_Helper.cpp
+++ /dev/null
@@ -1,227 +0,0 @@
-// $Id$
-
-#include "IR_Helper.h"
-#include "ace/Get_Opt.h"
-#include "ace/Read_Buffer.h"
-#include "orbsvcs/PingS.h"
-#include "tao/IIOP_Profile.h"
-
-class Ping_i: public POA_Ping_Object
- // = TITLE
- // Ping Object Implementation
- //
- // = DESCRIPTION
- // Implementation Repository uses this to check to see if the server
- // is still running.
-{
-public:
- Ping_i (int debug = 0) : debug_ (debug) {}
-
- virtual void ping (CORBA::Environment &)
- {
- if (this->debug_)
- ACE_DEBUG ((LM_DEBUG, "Pong!\n"));
- }
-private:
- int debug_;
-};
-
-IR_Helper::IR_Helper (char *server_name,
- PortableServer::POA_ptr poa,
- CORBA::ORB_ptr orb,
- int debug)
- : name_ (ACE::strnew (server_name)),
- ir_key_ (0),
- ir_addr_ (0),
- ping_ (new Ping_i (debug)),
- implrepo_ (0),
- poa_ (poa),
- orb_ (orb),
- debug_ (debug)
-{
- const char *exception_message = "Null Message";
-
- ACE_TRY_NEW_ENV
- {
- exception_message = "While read_ir_ior";
- this->read_ir_ior (ACE_TRY_ENV);
- ACE_TRY_CHECK;
-
- // Resolve the IR.
- exception_message = "While string_to_object of ImplRepo";
- CORBA::Object_var implrepo_object =
- this->orb_->string_to_object (this->ir_key_, ACE_TRY_ENV);
- ACE_TRY_CHECK;;
-
- if (CORBA::is_nil (implrepo_object.in ()))
- ACE_ERROR ((LM_ERROR,
- "invalid implrepo key <%s>\n",
- this->ir_key_));
-
- exception_message = "While narrowing ImplRepo";
- this->implrepo_ =
- Implementation_Repository::_narrow (implrepo_object.in(), ACE_TRY_ENV);
- ACE_TRY_CHECK;
-
- // Now register the Ping Object
- PortableServer::ObjectId_var ping_id =
- PortableServer::string_to_ObjectId ("ping");
-
- exception_message = "While activating ping object";
- this->poa_->activate_object_with_id (ping_id.in (),
- this->ping_,
- ACE_TRY_ENV);
- ACE_TRY_CHECK;
-
- exception_message = "While creating reference to ping object";
- this->ping_ptr_ =
- this->poa_->id_to_reference (ping_id.in (),
- ACE_TRY_ENV);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- ACE_ERROR ((LM_ERROR, "IR_Helper::IR_Helper - %s\n", exception_message));
- ACE_TRY_ENV.print_exception ("SYS_EX");
- return;
- }
- ACE_ENDTRY;
-}
-
-IR_Helper::~IR_Helper ()
-{
- delete this->name_;
- delete this->ir_key_;
-
- // @@ Delete the two objects
-}
-
-int
-IR_Helper::register_server (const char *comm_line,
- const char *environment,
- const char *working_dir,
- CORBA_Environment &ACE_TRY_ENV)
-{
- ACE_TRY
- {
- CORBA::Object_var implrepo_object =
- this->orb_->string_to_object (this->ir_key_, ACE_TRY_ENV);
- ACE_TRY_CHECK;
-
- Implementation_Repository *ImplRepo =
- Implementation_Repository::_narrow (implrepo_object.in(), ACE_TRY_ENV);
- ACE_TRY_CHECK;
-
- if (CORBA::is_nil (implrepo_object.in ()))
- ACE_ERROR_RETURN ((LM_ERROR,
- "invalid implrepo key <%s>\n",
- this->ir_key_),
- -1);
-
- Implementation_Repository::Process_Options proc_opts;
-
- proc_opts.command_line_ = CORBA::string_dup (comm_line);
- proc_opts.environment_ = CORBA::string_dup (environment);
- proc_opts.working_directory_ = CORBA::string_dup (working_dir);
-
- ImplRepo->reregister_server (this->name_, proc_opts, ACE_TRY_ENV);
- }
- ACE_CATCHANY
- {
- ACE_TRY_ENV.print_exception ("IR_Helper::register_server");
- return -1;
- }
- ACE_ENDTRY;
- return 0;
-}
-
-int
-IR_Helper::read_ir_ior (CORBA_Environment &ACE_TRY_ENV)
-{
- ACE_UNUSED_ARG (ACE_TRY_ENV);
-
- // Open the file for reading.
- // @@ Hard-coded name is bad. Need to fix.
- ACE_HANDLE f_handle_ = ACE_OS::open ("implrepo.ior", 0);
-
- if (f_handle_ == ACE_INVALID_HANDLE)
- ACE_ERROR_RETURN ((LM_ERROR,
- "Unable to open %s for writing: implrepo.ior\n"),
- -1);
-
- ACE_Read_Buffer ior_buffer (f_handle_);
- this->ir_key_ = ior_buffer.read ();
-
- if (this->ir_key_ == 0)
- ACE_ERROR_RETURN ((LM_ERROR,
- "Unable to allocate memory to read ior: %p\n"),
- -1);
-
- ACE_OS::close (f_handle_);
- return 0;
-}
-
-
-void
-IR_Helper::notify_startup (CORBA_Environment &ACE_TRY_ENV)
-{
- // Get our host and port and convert it to something we can use.
- ACE_INET_Addr my_addr = TAO_ORB_Core_instance ()->orb_params ()->addr ();
- Implementation_Repository::INET_Addr my_ir_addr;
- my_ir_addr.port_ = my_addr.get_port_number ();
- my_ir_addr.host_ = CORBA::string_dup (my_addr.get_host_name ());
-
- ACE_TRY
- {
- delete this->ir_addr_;
- this->ir_addr_ = this->implrepo_->server_is_running (this->name_,
- my_ir_addr,
- this->ping_ptr_,
- ACE_TRY_ENV);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- ACE_RETHROW;
- }
- ACE_ENDTRY;
-}
-
-
-// Notify the IR that the server has been shut down.
-void
-IR_Helper::notify_shutdown (CORBA_Environment &ACE_TRY_ENV)
-{
- ACE_TRY
- {
- this->implrepo_->server_is_shutting_down (this->name_, ACE_TRY_ENV);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- ACE_RETHROW;
- }
- ACE_ENDTRY;
-}
-
-void
-IR_Helper::change_object (CORBA::Object_ptr obj, CORBA_Environment &ACE_TRY_ENV)
-{
- if ( obj
- && obj->_stubobj ()
- && obj->_stubobj ()->profile_in_use ()
- && this->implrepo_
- && this->implrepo_->_stubobj ()
- && this->implrepo_->_stubobj ()->profile_in_use () )
- {
- TAO_IIOP_Profile *implrepo_pfile =
- ACE_dynamic_cast (TAO_IIOP_Profile *,
- this->implrepo_->_stubobj ()->profile_in_use ());
- TAO_IIOP_Profile *iiop_pfile =
- ACE_dynamic_cast (TAO_IIOP_Profile *,
- obj->_stubobj ()->profile_in_use ());
-
- // @@ Only same host for now
- iiop_pfile->port (implrepo_pfile->port ());
- }
-}