summaryrefslogtreecommitdiff
path: root/CIAO/DAnCE/ExecutionManager/Execution_Manager_Impl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'CIAO/DAnCE/ExecutionManager/Execution_Manager_Impl.cpp')
-rw-r--r--CIAO/DAnCE/ExecutionManager/Execution_Manager_Impl.cpp544
1 files changed, 0 insertions, 544 deletions
diff --git a/CIAO/DAnCE/ExecutionManager/Execution_Manager_Impl.cpp b/CIAO/DAnCE/ExecutionManager/Execution_Manager_Impl.cpp
deleted file mode 100644
index cef9bce35b9..00000000000
--- a/CIAO/DAnCE/ExecutionManager/Execution_Manager_Impl.cpp
+++ /dev/null
@@ -1,544 +0,0 @@
-// $Id$
-
-#include "Execution_Manager_Impl.h"
-#include "ciao/CIAO_common.h"
-#include "DomainApplicationManager/DomainApplicationManager_Impl.h"
-
-ACE_RCSID (ExecutionManager,
- Execution_Manager_Impl,
- "$Id$")
-
-namespace CIAO
-{
- namespace Execution_Manager
- {
- Execution_Manager_Impl::Execution_Manager_Impl (
- CORBA::ORB_ptr orb,
- PortableServer::POA_ptr poa,
- const char * init_file)
- : orb_ (CORBA::ORB::_duplicate (orb))
- , poa_ (PortableServer::POA::_duplicate (poa))
- , init_file_ (init_file)
- {
- }
-
- Execution_Manager_Impl::~Execution_Manager_Impl (void)
- {
- }
-
- Deployment::DomainApplicationManager_ptr
- Execution_Manager_Impl::preparePlan (
- const Deployment::DeploymentPlan &plan,
- CORBA::Boolean
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::ResourceNotAvailable,
- Deployment::PlanError,
- Deployment::StartError
- ))
- {
- CIAO_TRACE("Execution_Manager::Execution_Manager_Impl::preparePlan");
-
- if (CIAO::debug_level () > 9)
- ACE_DEBUG ((LM_DEBUG,
- "CIAO (%P|%t) Domain Application Manager "
- "invoked CIAO_Execution_Manager: preparePlan \n"));
-
- // There is a Domain Application Manager already existing
- // for this DeploymentPlan.
- // No need to create a new DAM. Hence pass the
- // reference that is already created.
- //
- ACE_DEBUG ((LM_DEBUG, "CIAO (%P|%t) calling this->man_.is_plan_available()...\n"));
- if (this->map_.is_plan_available (plan.UUID.in ()))
- {
- ACE_DEBUG ((LM_DEBUG, "CIAO (%P|%t) Plan is already available; "
- "calling this->man_.fetch_dam_reference()...\n"));
-
- return this->map_.fetch_dam_reference (plan.UUID.in ());
- }
- else
- {
- ACE_DEBUG ((LM_DEBUG, "CIAO (%P|%t) Plan wasn't already available\n"));
- }
-
- // We are about to begin working on a new DeploymentPlan.
- // Create a DAM servant, which will be populated
- // to be sent back to the PlanLauncher.
- //
- CIAO::DomainApplicationManager_Impl *dam_servant = 0;
-
- // Create a new Domain Application Manager servant
- // to be sent back to the Plan Launcher.
- //
- ACE_DEBUG ((LM_DEBUG, "CIAO (%P|%t) About to instantiate CIAO::DomainApplicationManager_Impl\n"));
- ACE_NEW_THROW_EX (
- dam_servant,
- CIAO::DomainApplicationManager_Impl (
- this->orb_.in (),
- this->poa_.in (),
- ::Deployment::TargetManager::_nil (),
- this, // a plain C++ pointer
- plan,
- this->init_file_.c_str ()),
- CORBA::NO_MEMORY ());
- ACE_DEBUG ((LM_DEBUG, "CIAO (%P|%t) Instantiated CIAO::DomainApplicationManager_Impl\n"));
-
- // Sanity check for NULL pointer
- // Should we throw an exception here?
- // We have exceptions like PlanError or StartError at
- // our disposal already in this function.
- // Why did the creation of DAM fail in the first place?
- //
- ACE_CHECK_RETURN (::Deployment::DomainApplicationManager::_nil ());
-
- // Standard owner transfer mechanisms.
- //
- PortableServer::ServantBase_var safe_daemon (dam_servant);
-
- // Calling the init function on the DAM.
- // This function will split the plan into node specific
- // plans, so that those plans can be sent off to individual
- // Node Application Managers.
- //
- ACE_DEBUG ((LM_DEBUG, "CIAO (%P|%t) About to init...\n"));
- dam_servant->init (ACE_ENV_SINGLE_ARG_PARAMETER);
-
- // This is a wrong exception to be thrown here.
- // We already had a DAM servant, the DAM servant is
- // not NIL any more.
- // We need to throw the right exception here.
- //
- ACE_CHECK_RETURN (::Deployment::DomainApplicationManager::_nil ());
-
- ACE_DEBUG ((LM_DEBUG, "CIAO (%P|%t) About to set uuid on DAM...\n"));
- dam_servant->set_uuid (plan.UUID.in ());
-
- Deployment::DomainApplicationManager_var dam =
- dam_servant->_this ();
-
- /// @@ TODO:Need to check the return value......
- ///
- this->map_.bind_dam_reference (
- plan.UUID.in (),
- Deployment::DomainApplicationManager::_duplicate (dam.in ()));
- ACE_DEBUG ((LM_DEBUG, "CIAO (%P|%t) Bound DAM reference...\n"));
-
- // Return the ApplicationManager instance
- return dam._retn ();
- }
-
- Deployment::DomainApplicationManagers *
- Execution_Manager_Impl::getManagers (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException))
- {
- CIAO_TRACE("Execution_Manager::Execution_Manager_Impl::getManagers");
-
- // TODO Need to check the return value.
- //
- return this->map_.get_dams (ACE_ENV_SINGLE_ARG_PARAMETER);
- }
-
- Deployment::DomainApplicationManager_ptr
- Execution_Manager_Impl::getManager (const char * plan_uuid
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException, Deployment::PlanNotExist))
- {
- return this->map_.fetch_dam_reference (plan_uuid);
- }
-
- void
- Execution_Manager_Impl::destroyManager (
- Deployment::DomainApplicationManager_ptr manager
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::StopError))
- {
- CIAO_TRACE("Execution_Manager::Execution_Manager_Impl::destroyManagers");
- ACE_TRY
- {
- ::Deployment::DeploymentPlan_var plan =
- manager->getPlan (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- // What if we still have components running within this plan?
- //
- (void) this->map_.unbind_dam (plan->UUID.in ());
-
- // Where does the POA deactivate happen?
- //
- manager->destroyManager (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
-#if 0
- PortableServer::ObjectId_var oid =
- this->poa_->reference_to_id (manager
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- this->poa_->deactivate_object (oid.in ()
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-#endif /*if 0*/
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- "Execution_Manager_Impl::destroyManager\t\n");
- ACE_THROW (Deployment::StopError ());
- }
- ACE_ENDTRY;
- ACE_CHECK;
- }
-
-
- void
- Execution_Manager_Impl::destroyManagerByPlan (
- const char * plan_uuid
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::StopError))
- {
- CIAO_TRACE("Execution_Manager::Execution_Manager_Impl::destroyManagerByPlan");
- ACE_TRY
- {
- // Get DomainApplicationManager first
- if (! this->map_.is_plan_available (plan_uuid))
- {
- ACE_ERROR ((LM_ERROR,
- "Execution_Manager_Impl::destroyManagerByPlan - "
- "Invalid plan uuid [%s]\n", plan_uuid));
- ACE_THROW (Deployment::StopError ());
- }
-
- Deployment::DomainApplicationManager_var
- dam = this->map_.fetch_dam_reference (plan_uuid);
-
- // Get the plan
- Deployment::DeploymentPlan_var plan = dam->getPlan ();
-
- // If any component is still running, then we return.
- CORBA::ULong inst_lenth = plan->instance.length ();
- for (CORBA::ULong i = 0; i < inst_lenth; ++i)
- {
- if (this->is_component_running (plan->instance[i].name.in (),
- plan_uuid))
- return;
- }
-
- (void) this->map_.unbind_dam (plan->UUID.in ());
-
- // Where does the POA deactivate happen?
- //
- dam->destroyManager (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
-#if 0
- PortableServer::ObjectId_var oid =
- this->poa_->reference_to_id (manager
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- this->poa_->deactivate_object (oid.in ()
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-#endif /*if 0*/
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- "Execution_Manager_Impl::destroyManager\t\n");
- ACE_THROW (Deployment::StopError ());
- }
- ACE_ENDTRY;
- ACE_CHECK;
- }
-
-
- void
- Execution_Manager_Impl::shutdown (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException))
- {
- CIAO_TRACE("Execution_Manager::Execution_Manager_Impl::shutdown");
- // Shutdown the ORB on which it is runing
- this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
- }
-
- void
- Execution_Manager_Impl::perform_redeployment (
- const Deployment::DeploymentPlan & plan
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((::CORBA::SystemException,
- ::Deployment::PlanError,
- ::Deployment::InstallationFailure,
- ::Deployment::UnknownImplId,
- ::Deployment::ImplEntryPointNotFound,
- ::Deployment::InvalidConnection,
- ::Deployment::InvalidProperty,
- ::Components::RemoveFailure))
- {
- CIAO_TRACE ("CIAO::Execution_Manager_Impl::perform_redeployment");
-
- ACE_DEBUG ((LM_DEBUG,
- "CIAO (%P|%t) Dynamic Redeployment: "
- "invoked CIAO::Execution_Manager_Impl::perform_redeployment \n"));
-
- Deployment::DomainApplicationManager_var dam;
-
- if (this->map_.is_plan_available (plan.UUID.in ()))
- {
- dam = this->map_.fetch_dam_reference (plan.UUID.in ());
- }
- else
- {
- ACE_ERROR ((LM_ERROR,
- "DAnCE (%P|%t) ExecutionManager_Impl.cpp -"
- "CIAO::Execution_Manager_Impl::perform_redeployment -"
- "Invalid plan uuid: %s\n", plan.UUID.in ()));
- ACE_THROW (Deployment::PlanError (
- "Execution_Manager_Impl::perform_redeployment",
- "Invalid plan uuid specified."));
- }
-
- ACE_TRY
- {
- // Call perform_redeployment() on the DAM, which will do the
- // actual redeployment and reconfiguration on the dommain level.
- dam->perform_redeployment (plan);
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- "Execution_Manager_Impl::perform_redeployment\t\n");
- ACE_RE_THROW;
- }
- ACE_ENDTRY;
- ACE_CHECK;
- }
-
- Deployment::DeploymentPlan *
- Execution_Manager_Impl::getPlan (const char * plan_uuid
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((::CORBA::SystemException))
- {
- Deployment::DomainApplicationManager_var dam;
-
- if (this->map_.is_plan_available (plan_uuid))
- {
- dam = this->map_.fetch_dam_reference (plan_uuid);
- }
- else
- {
- ACE_ERROR ((LM_ERROR,
- "DAnCE (%P|%t) ExecutionManager_Impl.cpp -"
- "CIAO::Execution_Manager_Impl::getPlan -"
- "Invalid plan uuid: %s\n", plan_uuid));
- ACE_THROW (::CORBA::BAD_PARAM ());
- }
-
- ACE_TRY
- {
- return dam->getPlan ();
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- "Execution_Manager_Impl::getPlan\t\n");
- ACE_RE_THROW;
- }
- ACE_ENDTRY;
- ACE_CHECK;
- }
-
- void
- Execution_Manager_Impl::finalize_global_binding (
- const Component_Binding_Info & binding,
- CORBA::Boolean add_or_remove)
- ACE_THROW_SPEC ((
- ::CORBA::SystemException,
- ::Deployment::InvalidConnection))
- {
- ACE_DEBUG ((LM_DEBUG,
- "Execution_Manage::finalizing global bindings.\n"));
-
- // Find the NodeApplication hosting the component, and then call
- // <finishLaunch> on it
- ACE_TRY
- {
- Deployment::NodeApplication_var
- node_app = this->find_node_application (binding);
-
- if (CORBA::is_nil (node_app.in ()))
- {
- ACE_ERROR ((LM_ERROR,
- "Execution_Manager_Impl::finalize_global_binding - "
- "nil NodeApplication object reference.\n"));
- ACE_THROW (Deployment::InvalidConnection ());
- }
-
- node_app->finishLaunch (binding.providedReference_.in (),
- true, // start
- add_or_remove);
-
- // Update the internal shared component list
- if (add_or_remove)
- this->add_shared_component (binding);
- else
- this->remove_shared_component (binding);
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- "Execution_Manager_Impl::finalize_global_binding\t\n");
- ACE_THROW (Deployment::InvalidConnection ());
- }
- ACE_ENDTRY;
- }
-
- void
- Execution_Manager_Impl::passivate_shared_components (
- const Component_Binding_Info & binding)
- ACE_THROW_SPEC ((
- ::CORBA::SystemException,
- Deployment::StartError))
- {
- ACE_DEBUG ((LM_DEBUG,
- "Execution_Manage::passivate shared components.\n"));
-
- // Find the NodeApplication hosting the component, and then call
- // <finishLaunch> on it
- ACE_TRY
- {
- Deployment::NodeApplication_var
- node_app = this->find_node_application (binding);
-
- if (CORBA::is_nil (node_app.in ()))
- {
- ACE_ERROR ((LM_ERROR,
- "Execution_Manager_Impl::passivate_shared_components - "
- "nil NodeApplication object reference.\n"));
- ACE_THROW (Deployment::StartError ());
- }
-
- node_app->passivate_component (binding.name_.c_str ());
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- "Execution_Manager_Impl::passivate_shared_components\t\n");
- ACE_THROW (Deployment::StartError ());
- }
- ACE_ENDTRY;
- }
-
- void
- Execution_Manager_Impl::activate_shared_components (
- const Component_Binding_Info & binding)
- ACE_THROW_SPEC ((
- ::CORBA::SystemException,
- Deployment::StartError))
- {
- ACE_DEBUG ((LM_DEBUG,
- "Execution_Manage::activate shared components.\n"));
-
- // Find the NodeApplication hosting the component, and then call
- // <ciao_activate> on it
- ACE_TRY
- {
- Deployment::NodeApplication_var
- node_app = this->find_node_application (binding);
-
- if (CORBA::is_nil (node_app.in ()))
- {
- ACE_ERROR ((LM_ERROR,
- "Execution_Manager_Impl::activate_shared_components - "
- "nil NodeApplication object reference.\n"));
- ACE_THROW (Deployment::StartError ());
- }
-
- node_app->activate_component (binding.name_.c_str ());
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- "Execution_Manager_Impl::passivate_shared_components\t\n");
- ACE_THROW (Deployment::StartError ());
- }
- ACE_ENDTRY;
- }
-
-
- Deployment::NodeApplication_ptr
-
- Execution_Manager_Impl::
- find_node_application (const Component_Binding_Info & binding)
- ACE_THROW_SPEC ((
- ::CORBA::SystemException,
- ::Deployment::InvalidConnection))
- {
- // Find the DAM based on plan_UUID
- Deployment::DomainApplicationManager_var dam;
-
- if (this->map_.is_plan_available (binding.plan_uuid_))
- {
- dam = this->map_.fetch_dam_reference (binding.plan_uuid_);
- }
- else
- {
- ACE_ERROR ((LM_ERROR,
- "DAnCE (%P|%t) ExecutionManager_Impl.cpp -"
- "CIAO::Execution_Manager_Impl::find_node_application -"
- "Invalid plan uuid: %s\n", binding.plan_uuid_.c_str ()));
- ACE_THROW (::CORBA::BAD_PARAM ());
- }
-
- // Find the NA based on the NodeName field of the binding
- // This is a CORBA call on the DAM
- Deployment::NodeApplication_var
- node_app = dam->get_node_app (binding.node_.c_str ());
-
- if (CORBA::is_nil (node_app.in ()))
- {
- ACE_ERROR ((LM_ERROR,
- "DAnCE (%P|%t) ExecutionManager_Impl.cpp -"
- "CIAO::Execution_Manager_Impl::find_node_application -"
- "Invalid node name: %s!\n", binding.node_.c_str ()));
- ACE_THROW (::CORBA::BAD_PARAM ());
- }
-
- return node_app._retn ();
- }
-
- void
- Execution_Manager_Impl::
- add_shared_component (const Component_Binding_Info & comp)
- {
- this->shared_components_.insert (comp);
- }
-
- void
- Execution_Manager_Impl::
- remove_shared_component (const Component_Binding_Info & comp)
- {
- this->shared_components_.remove (comp);
- }
-
- bool
- Execution_Manager_Impl::
- is_component_running (const char * name, const char * plan_uuid)
- {
- for (ACE_Unbounded_Set<Component_Binding_Info>::iterator
- iter = this->shared_components_.begin ();
- iter != this->shared_components_.end ();
- ++iter)
- {
- if (ACE_OS::strcmp ((*iter).name_.c_str (), name) == 0 &&
- ACE_OS::strcmp ((*iter).plan_uuid_.c_str (), plan_uuid) == 0)
- return true;
- }
-
- return false;
- }
- }
-}