diff options
Diffstat (limited to 'TAO/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp')
-rw-r--r-- | TAO/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp | 165 |
1 files changed, 92 insertions, 73 deletions
diff --git a/TAO/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp b/TAO/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp index c8522b9b4fb..7f5aa59ceda 100644 --- a/TAO/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp +++ b/TAO/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp @@ -10,7 +10,7 @@ namespace CIAO { namespace Plan_Launcher { - + static CORBA::Object_ptr fetch_reference_naming (CORBA::ORB_ptr orb ACE_ENV_ARG_DECL) @@ -19,19 +19,17 @@ namespace CIAO orb->resolve_initial_references ("NameService" ACE_ENV_ARG_PARAMETER); ACE_CHECK; - + CosNaming::NamingContext_var pns = CosNaming::NamingContext::_narrow (tmp.in () ACE_ENV_ARG_PARAMETER); ACE_CHECK; - - CosNaming::Name name (2); - name.length (2); + + CosNaming::Name name (1); + name.length (1); name[0].id = - CORBA::string_dup ("CIAO"); - name[1].id = CORBA::string_dup ("ExecutionManager"); - + return pns->resolve (name ACE_ENV_ARG_PARAMETER); } @@ -40,13 +38,13 @@ namespace CIAO : em_ () { } - + bool Plan_Launcher_i::init (const char *em_ior, - CORBA::ORB_ptr orb ACE_ENV_ARG_DECL) + CORBA::ORB_ptr orb ACE_ENV_ARG_DECL) { CORBA::Object_var obj; - + if (em_ior == 0) { obj = fetch_reference_naming (orb ACE_ENV_ARG_PARAMETER); @@ -58,55 +56,63 @@ namespace CIAO ACE_ENV_ARG_PARAMETER); ACE_CHECK; } - + this->em_ = ::CIAO::ExecutionManagerDaemon::_narrow (obj.in () ACE_ENV_ARG_PARAMETER); ACE_CHECK; - + if (CORBA::is_nil (this->em_.in ())) { ACE_ERROR ((LM_ERROR, - "(%P|%t) CIAO_PlanLauncher: nil Execution" - " Manager reference, narrow failed\n")); + "(%P|%t) CIAO_PlanLauncher: nil Execution" + " Manager reference, narrow failed\n")); return false; } - + if (CIAO::debug_level () > 9) ACE_DEBUG ((LM_DEBUG, "(%P|%t) CIAO_PlanLauncher: Obtained Execution" " Manager ref \n")); - + return true; } - - - const char * + + + const char * Plan_Launcher_i::launch_plan (const char *plan_uri ACE_ENV_ARG_DECL) ACE_THROW_SPEC ((Plan_Launcher_i::Deployment_Failure)) { + ACE_DEBUG ((LM_DEBUG, "Parsing plan...\n")); + CIAO::Config_Handlers::XML_File_Intf intf (plan_uri); - + ::Deployment::DeploymentPlan_var plan = intf.get_plan (); - + ACE_DEBUG ((LM_DEBUG, "Parsing complete....\n")); return this->launch_plan (plan.in ()); } - const char * + const char * Plan_Launcher_i::launch_plan (const ::Deployment::DeploymentPlan &plan ACE_ENV_ARG_DECL) ACE_THROW_SPEC ((Plan_Launcher_i::Deployment_Failure)) { - + if (CORBA::is_nil (this->em_.in ())) { - ACE_ERROR ((LM_ERROR, + ACE_ERROR ((LM_ERROR, ACE_TEXT ("CIAO::Plan_Launcher_i: ") - ACE_TEXT ("launch_plan called witn an uninitialized EM.\n"))); + ACE_TEXT ("launch_plan called witn an uninitialized EM.\n"))); return 0; } - + + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("CIAO::Plan_Launcher_i: " ) + ACE_TEXT ("about to call this->em_->preparePlan\n"))); ::Deployment::DomainApplicationManager_var dam (this->em_->preparePlan (plan, 1)); - + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("CIAO::Plan_Launcher_i: " ) + ACE_TEXT ("after to call this->em_->preparePlan\n"))); + if (CORBA::is_nil (dam.in ())) { ACE_DEBUG ((LM_DEBUG, @@ -114,20 +120,20 @@ namespace CIAO "nil DomainApplicationManager reference\n")); return 0; } - + if (CIAO::debug_level () > 9) ACE_DEBUG ((LM_DEBUG, "CIAO_PlanLauncher: Obtained DAM ref \n")); - + ::Deployment::Properties_var properties; ACE_NEW_RETURN (properties, Deployment::Properties, 0); - + if (CIAO::debug_level ()) ACE_DEBUG ((LM_DEBUG, "CIAO_PlanLauncher: start Launch application...\n")); - + // Dont not start the Application immediately since it vialtes // the semantics of component activation sequence int start = 0; @@ -135,33 +141,33 @@ namespace CIAO { dam->startLaunch (properties.in (), 0); - + if (CIAO::debug_level ()) ACE_DEBUG ((LM_DEBUG, "[success]\n")); - + // Call finish Launch to complete the connections if (CIAO::debug_level ()) ACE_DEBUG ((LM_DEBUG, "CIAO_PlanLauncher: finish Launch application...\n")); dam->finishLaunch (start, false); // is_ReDAC by default is <false> - + if (CIAO::debug_level ()) ACE_DEBUG ((LM_DEBUG, "[success]\n")); - + // Call start to activate components if (CIAO::debug_level ()) ACE_DEBUG ((LM_DEBUG, "CIAO_PlanLauncher: start activating components...\n")); dam->start (); - + if (CIAO::debug_level ()) ACE_DEBUG ((LM_DEBUG, "[success]\n")); - + if (CIAO::debug_level ()) ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("CIAO_PlanLauncher: ") ACE_TEXT ("Application Deployed successfully\n"))); - + map_.bind_dam_reference (plan.UUID.in (), Deployment::DomainApplicationManager::_duplicate (dam.in ())); } @@ -177,7 +183,7 @@ namespace CIAO ex.resourceType.in (), ex.propertyName.in (), ex.elementName.in (), - ex.resourceName.in ())); + ex.resourceName.in ())); ACE_THROW (Deployment_Failure ()); } ACE_CATCH (Deployment::StartError, ex) @@ -204,15 +210,28 @@ namespace CIAO ex.reason.in ())); ACE_THROW (Deployment_Failure ()); } + ACE_CATCHANY + { + ACE_ERROR ((LM_ERROR, + "CORBA EXCEPTION: %s\n", + ACE_ANY_EXCEPTION._info().fast_rep())); + ACE_THROW (Deployment_Failure ()); + } + ACE_CATCHALL + { + ACE_ERROR ((LM_ERROR, + "EXCEPTION: non-CORBA exception\n")); + ACE_THROW (Deployment_Failure ()); + } ACE_ENDTRY; ACE_CHECK_RETURN (0); - + std::string * retv = new std::string (plan.UUID.in ()); - - return (*retv).c_str (); + + return (*retv).c_str (); } - - ::Deployment::DomainApplicationManager_ptr + + ::Deployment::DomainApplicationManager_ptr Plan_Launcher_i::get_dam (const char *uuid ACE_ENV_ARG_DECL) { if (!this->map_.is_plan_available (uuid)) @@ -224,7 +243,7 @@ namespace CIAO } return this->map_.fetch_dam_reference (uuid); } - + bool Plan_Launcher_i::teardown_plan (const char *uuid) { @@ -232,31 +251,31 @@ namespace CIAO // executable to tear down a plan, so we could NOT rely on the local // DAM_Map to fetch DAM obj reference. Instead, we make a remote call // on ExecutionManager to fetch it. - ACE_TRY + ACE_TRY { ::Deployment::DomainApplicationManager_var dapp_mgr = - this->em_->getManager (uuid); + this->em_->getManager (uuid); - dapp_mgr->destroyApplication (); - if (CIAO::debug_level ()) - ACE_DEBUG ((LM_DEBUG, "[success]\n")); + dapp_mgr->destroyApplication (); + if (CIAO::debug_level ()) + ACE_DEBUG ((LM_DEBUG, "[success]\n")); - // Note that we should ask the DAM to tell EM whether the DAM should - // be destroyed - this->destroy_dam_by_plan (uuid); + // Note that we should ask the DAM to tell EM whether the DAM should + // be destroyed + this->destroy_dam_by_plan (uuid); } ACE_CATCHANY { ACE_DEBUG ((LM_ERROR, "Unable to find DomainApplicationManager " - "for plan with uuid: %s\n", uuid)); + "for plan with uuid: %s\n", uuid)); return false; } ACE_ENDTRY; return true; } - - bool + + bool Plan_Launcher_i::teardown_plan (::Deployment::DomainApplicationManager_ptr dam ACE_ENV_ARG_DECL) { @@ -265,16 +284,16 @@ namespace CIAO "CIAO_PlanLauncher: destroy the application.....\n")); dam->destroyApplication (); - + if (CIAO::debug_level ()) ACE_DEBUG ((LM_DEBUG, "[success]\n")); this->destroy_dam (dam); - + return true; } - - void + + void Plan_Launcher_i::destroy_dam (::Deployment::DomainApplicationManager_ptr dam ACE_ENV_ARG_DECL) { @@ -288,7 +307,7 @@ namespace CIAO ACE_DEBUG ((LM_DEBUG, "[success]\n")); } - void + void Plan_Launcher_i::destroy_dam_by_plan (const char* plan_uuid ACE_ENV_ARG_DECL) { @@ -302,40 +321,40 @@ namespace CIAO ACE_DEBUG ((LM_DEBUG, "[success]\n")); } - const char * + const char * Plan_Launcher_i::re_launch_plan (const char *plan_uri ACE_ENV_ARG_DECL) ACE_THROW_SPEC ((Plan_Launcher_i::Deployment_Failure)) { CIAO::Config_Handlers::XML_File_Intf intf (plan_uri); - + ::Deployment::DeploymentPlan_var plan = intf.get_plan (); - + return this->re_launch_plan (plan.in ()); } - const char * + const char * Plan_Launcher_i::re_launch_plan (const ::Deployment::DeploymentPlan &plan ACE_ENV_ARG_DECL) ACE_THROW_SPEC ((Plan_Launcher_i::Deployment_Failure)) { - + if (CORBA::is_nil (this->em_.in ())) { - ACE_ERROR ((LM_ERROR, + ACE_ERROR ((LM_ERROR, ACE_TEXT ("CIAO::Plan_Launcher_i: ") - ACE_TEXT ("re_launch_plan called witn an uninitialized EM.\n"))); + ACE_TEXT ("re_launch_plan called witn an uninitialized EM.\n"))); return 0; } - + this->em_->perform_redeployment (plan); - + if (CIAO::debug_level ()) ACE_DEBUG ((LM_DEBUG, "CIAO_PlanLauncher: new plan redeployed ...\n")); std::string * retv = new std::string (plan.UUID.in ()); - - return (*retv).c_str (); + + return (*retv).c_str (); } } } |