diff options
Diffstat (limited to 'TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp')
-rw-r--r-- | TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp | 118 |
1 files changed, 84 insertions, 34 deletions
diff --git a/TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp b/TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp index 7f07705f78a..d4852279d0e 100644 --- a/TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp +++ b/TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp @@ -4,13 +4,21 @@ #include "ace/Null_Mutex.h" #include "ace/OS_NS_string.h" #include "NodeManager/NodeDaemonC.h" +#include "Container_Base.h" + +//@@ VS: Currently, the DAM relies on the deployment_config_ to supply +//it with the NodeManager IOR that the latter obtained from the +//deployment_file. With static configuration, the NodeManager is +//created by the DAM, since it is not up and running already. Hence +//the need to have this dependency on NodeManager implementation. +#include "NodeManager/NodeDaemon_Impl.h" #if !defined (__ACE_INLINE__) # include "DomainApplicationManager_Impl.inl" #endif /* __ACE_INLINE__ */ -CIAO::DomainApplicationManager_Impl:: -DomainApplicationManager_Impl (CORBA::ORB_ptr orb, +CIAO::DomainApplicationManager_Impl_Base:: +DomainApplicationManager_Impl_Base (CORBA::ORB_ptr orb, PortableServer::POA_ptr poa, Deployment::TargetManager_ptr manager, const Deployment::DeploymentPlan & plan, @@ -37,16 +45,16 @@ DomainApplicationManager_Impl (CORBA::ORB_ptr orb, ACE_CHECK; } -CIAO::DomainApplicationManager_Impl::~DomainApplicationManager_Impl () +CIAO::DomainApplicationManager_Impl_Base::~DomainApplicationManager_Impl_Base () { if (CIAO::debug_level () > 1) { - ACE_DEBUG ((LM_DEBUG, "DomainApplicationManager destroyed\n")); + ACE_DEBUG ((LM_DEBUG, "Base_DomainApplicationManager destroyed\n")); } } void -CIAO::DomainApplicationManager_Impl:: +CIAO::DomainApplicationManager_Impl_Base:: init (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException, Deployment::ResourceNotAvailable, @@ -70,8 +78,7 @@ init (ACE_ENV_SINGLE_ARG_DECL) { // Get the NodeManager object reference. ::Deployment::NodeManager_var my_node_manager = - this->deployment_config_.get_node_manager - (this->node_manager_names_[i].c_str ()); + this->get_node_manager (this->node_manager_names_[i].c_str ()); // Get the child deployment plan reference. ACE_Hash_Map_Entry @@ -106,7 +113,7 @@ init (ACE_ENV_SINGLE_ARG_DECL) if (CORBA::is_nil (app_manager.in ())) { - ACE_DEBUG ((LM_DEBUG, "DomainAppMgr::init () received a nil\ + ACE_DEBUG ((LM_DEBUG, "Base_DomainAppMgr::init () received a nil\ reference for NodeApplicationManager\n")); ACE_THROW (Deployment::StartError ()); } @@ -119,7 +126,7 @@ init (ACE_ENV_SINGLE_ARG_DECL) ACE_CATCHANY { ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "DomainApplicationManager_Impl::init\t\n"); + "DomainApplicationManager_Impl_Base::init\t\n"); ACE_RE_THROW; } ACE_ENDTRY; @@ -127,11 +134,11 @@ init (ACE_ENV_SINGLE_ARG_DECL) } bool -CIAO::DomainApplicationManager_Impl:: +CIAO::DomainApplicationManager_Impl_Base:: get_plan_info (void) { - if ( this->deployment_config_.init (this->deployment_file_) == -1 ) - return 0; + if (deployment_config_.init (deployment_file_) != 0) + return 0; const CORBA::ULong length = this->plan_.instance.length (); @@ -164,8 +171,7 @@ get_plan_info (void) // Check if there is a corresponding NodeManager instance existing // If not present return false ::Deployment::NodeManager_var mgr = - this->deployment_config_.get_node_manager - (this->plan_.instance [index].node.in ()); + this->get_node_manager (this->plan_.instance [index].node.in ()); if (CORBA::is_nil (mgr.in ())) return 0; /* Failure */ @@ -188,7 +194,7 @@ get_plan_info (void) //@@ We should ask those spec writers to look at the code below, hopefully // They will realize some thing. int -CIAO::DomainApplicationManager_Impl:: +CIAO::DomainApplicationManager_Impl_Base:: split_plan (void) { // Initialize the total number of child deployment plans specified @@ -218,8 +224,7 @@ split_plan (void) // Fill in the node_manager_ field. artifacts.node_manager_ = - this->deployment_config_.get_node_manager - (this->node_manager_names_[i].c_str ()); + this->get_node_manager (this->node_manager_names_[i].c_str ()); this->artifact_map_.bind (node_manager_names_[i], artifacts); } @@ -316,7 +321,7 @@ split_plan (void) } void -CIAO::DomainApplicationManager_Impl:: +CIAO::DomainApplicationManager_Impl_Base:: add_connections (const Deployment::Connections & incoming_conn) { @@ -334,7 +339,7 @@ add_connections (const Deployment::Connections & incoming_conn) } void -CIAO::DomainApplicationManager_Impl:: +CIAO::DomainApplicationManager_Impl_Base:: startLaunch (const ::Deployment::Properties & configProperty, ::CORBA::Boolean start ACE_ENV_ARG_DECL) @@ -343,6 +348,7 @@ startLaunch (const ::Deployment::Properties & configProperty, ::Deployment::StartError, ::Deployment::InvalidProperty)) { + ACE_DEBUG ((LM_DEBUG, "In DAM::startLaunch, num_child_plans = %d\n", num_child_plans_)); ACE_UNUSED_ARG (start); ACE_TRY { @@ -363,7 +369,7 @@ startLaunch (const ::Deployment::Properties & configProperty, if (CORBA::is_nil (my_nam)) { - ACE_DEBUG ((LM_DEBUG, "While starting launch, the DomainApplicationManager\ + ACE_DEBUG ((LM_DEBUG, "While starting launch, the Base_DomainApplicationManager\ has a nil reference for NodeApplicationManager\n")); ACE_THROW (Deployment::StartError ()); } @@ -371,12 +377,16 @@ startLaunch (const ::Deployment::Properties & configProperty, ::Deployment::Connections_var retn_connections; + ACE_DEBUG ((LM_DEBUG, "before DAM to call NAM %s \n", + this->node_manager_names_[i].c_str ())); // Obtained the returned NodeApplication object reference // and the returned Connections variable. ::Deployment::Application_var temp_application = my_nam->startLaunch (configProperty, retn_connections.out (), 0); // This is a mistake. This should never be here. + ACE_DEBUG ((LM_DEBUG, "after DAM to call NAM %s \n", + this->node_manager_names_[i].c_str ())); // Narrow down to NodeApplication object reference ::Deployment::NodeApplication_var my_na = @@ -386,7 +396,7 @@ startLaunch (const ::Deployment::Properties & configProperty, if (CORBA::is_nil (my_na.in ())) { - ACE_DEBUG ((LM_DEBUG, "The DomainApplicationManager receives a nil\ + ACE_DEBUG ((LM_DEBUG, "The Base_DomainApplicationManager receives a nil\ reference of NodeApplication after calling\ startLaunch on NodeApplicationManager.\n")); ACE_THROW (Deployment::StartError ()); @@ -404,16 +414,17 @@ startLaunch (const ::Deployment::Properties & configProperty, ACE_CATCHANY { ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "DomainApplicationManager_Impl::startLaunch\t\n"); + "DomainApplicationManager_Impl_Base::startLaunch\t\n"); ACE_RE_THROW; } ACE_ENDTRY; ACE_CHECK; + ACE_DEBUG ((LM_DEBUG, "Exiting DAM::startLaunch, num_child_plans = %d\n", num_child_plans_)); } void -CIAO::DomainApplicationManager_Impl:: +CIAO::DomainApplicationManager_Impl_Base:: finishLaunch (::CORBA::Boolean start ACE_ENV_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException, @@ -469,7 +480,7 @@ finishLaunch (::CORBA::Boolean start ACE_CATCHANY { ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "DomainApplicationManager_Impl::finishLaunch\t\n"); + "DomainApplicationManager_Impl_Base::finishLaunch\t\n"); ACE_RE_THROW; } ACE_ENDTRY; @@ -478,7 +489,7 @@ finishLaunch (::CORBA::Boolean start } void -CIAO::DomainApplicationManager_Impl:: +CIAO::DomainApplicationManager_Impl_Base:: start (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException, ::Deployment::StartError)) @@ -508,7 +519,7 @@ start (ACE_ENV_SINGLE_ARG_DECL) ACE_CATCHANY { ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "DomainApplicationManager_Impl::start\t\n"); + "DomainApplicationManager_Impl_Base::start\t\n"); ACE_RE_THROW; } ACE_ENDTRY; @@ -517,7 +528,7 @@ start (ACE_ENV_SINGLE_ARG_DECL) } void -CIAO::DomainApplicationManager_Impl:: +CIAO::DomainApplicationManager_Impl_Base:: destroyApplication (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException, ::Deployment::StopError)) @@ -550,7 +561,7 @@ destroyApplication (ACE_ENV_SINGLE_ARG_DECL) ACE_CATCHANY { ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "DomainApplicationManager_Impl::destroyApplication\t\n"); + "DomainApplicationManager_Impl_Base::destroyApplication\t\n"); ACE_RE_THROW; } ACE_ENDTRY; @@ -559,7 +570,7 @@ destroyApplication (ACE_ENV_SINGLE_ARG_DECL) } void -CIAO::DomainApplicationManager_Impl:: +CIAO::DomainApplicationManager_Impl_Base:: destroyManager (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException, Deployment::StopError)) @@ -588,7 +599,7 @@ destroyManager (ACE_ENV_SINGLE_ARG_DECL) ACE_CATCHANY { ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "DomainApplicationManager_Impl::destroyManager\t\n"); + "DomainApplicationManager_Impl_Base::destroyManager\t\n"); ACE_RE_THROW; } ACE_ENDTRY; @@ -598,7 +609,7 @@ destroyManager (ACE_ENV_SINGLE_ARG_DECL) // Returns the DeploymentPlan associated with this ApplicationManager. ::Deployment::DeploymentPlan * -CIAO::DomainApplicationManager_Impl:: +CIAO::DomainApplicationManager_Impl_Base:: getPlan (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { @@ -613,7 +624,7 @@ getPlan (ACE_ENV_SINGLE_ARG_DECL) } Deployment::Connections * -CIAO::DomainApplicationManager_Impl:: +CIAO::DomainApplicationManager_Impl_Base:: get_outgoing_connections (const Deployment::DeploymentPlan &plan) { Deployment::Connections_var connections; @@ -633,7 +644,7 @@ get_outgoing_connections (const Deployment::DeploymentPlan &plan) } bool -CIAO::DomainApplicationManager_Impl:: +CIAO::DomainApplicationManager_Impl_Base:: get_outgoing_connections_i (const char * instname, Deployment::Connections & retv) { @@ -720,7 +731,7 @@ get_outgoing_connections_i (const char * instname, } void -CIAO::DomainApplicationManager_Impl:: +CIAO::DomainApplicationManager_Impl_Base:: dump_connections (const ::Deployment::Connections & connections) { const CORBA::ULong conn_len = connections.length (); @@ -742,3 +753,42 @@ dump_connections (const ::Deployment::Connections & connections) ACE_DEBUG ((LM_DEBUG, "endpoint: \n")); } } + + +CIAO::Static_DomainApplicationManager_Impl:: +Static_DomainApplicationManager_Impl (CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + Deployment::TargetManager_ptr manager, + const Deployment::DeploymentPlan & plan, + const char * deployment_file, + Static_Config_EntryPoints_Maps* static_config_entrypoints_maps) + ACE_THROW_SPEC ((CORBA::SystemException)) + : DomainApplicationManager_Impl_Base (orb, poa, manager, plan, deployment_file) +{ + Static_NodeDaemon_Impl *static_node_daemon_impl; + // Create and install the CIAO Daemon servant + static_node_daemon_impl = + new CIAO::Static_NodeDaemon_Impl("NodeDaemon", + orb, + poa, + "", //exe location + 0, //spawn delay + static_config_entrypoints_maps); + // Activate the ourself. + PortableServer::ObjectId_var oid + = this->poa_->activate_object (static_node_daemon_impl + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + CORBA::Object_var obj = + this->poa_->id_to_reference (oid.in () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + // And cache the object reference. + this->static_node_manager_ = + Deployment::NodeManager::_narrow (obj.in () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; +} + |