diff options
author | venkita <venkita@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2005-08-01 13:36:36 +0000 |
---|---|---|
committer | venkita <venkita@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2005-08-01 13:36:36 +0000 |
commit | 6cd5beec77636a0be151c3aaaf035752443ed850 (patch) | |
tree | 32d46810faf2699de7e5a8055526c6e7a2e33200 | |
parent | ca47a87d17a8f4ed8d7e8a1e547c6c20b351876c (diff) | |
download | ATCD-6cd5beec77636a0be151c3aaaf035752443ed850.tar.gz |
*** empty log message ***
18 files changed, 689 insertions, 222 deletions
diff --git a/TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager.mpc b/TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager.mpc index de6accc8527..af7df494fcc 100644 --- a/TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager.mpc +++ b/TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager.mpc @@ -2,7 +2,7 @@ // $Id$ project (DomainApplicationManager): ciao_deployment_svnt { - after += Config_Handlers Node_Daemon + after += Config_Handlers Node_Daemon sharedname = DomainApplicationManager diff --git a/TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp b/TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp index 8a1c5bf61bb..3cb78569a8a 100644 --- a/TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp +++ b/TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp @@ -1,18 +1,28 @@ // $Id$ + #include "DomainApplicationManager_Impl.h" #include "NodeManager/NodeDaemonC.h" #include "ace/Null_Mutex.h" #include "ace/OS_NS_string.h" #include "ace/SString.h" //#include "Config_Handlers/DnC_Dump.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, @@ -39,16 +49,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, @@ -75,8 +85,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 @@ -111,7 +120,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 ()); } @@ -124,7 +133,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; @@ -132,7 +141,7 @@ init (ACE_ENV_SINGLE_ARG_DECL) } bool -CIAO::DomainApplicationManager_Impl:: +CIAO::DomainApplicationManager_Impl_Base:: get_plan_info (void) { CIAO_TRACE("CIAO::DomainApplicationManager_Impl::get_plan_info"); @@ -170,8 +179,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 */ @@ -194,7 +202,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) { CIAO_TRACE("CIAO::DomainApplicationManager_Impl::split_plan"); @@ -232,8 +240,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); } @@ -329,7 +336,7 @@ split_plan (void) } void -CIAO::DomainApplicationManager_Impl:: +CIAO::DomainApplicationManager_Impl_Base:: add_connections (const Deployment::Connections & incoming_conn) { CIAO_TRACE("CIAO::DomainApplicationManager_Impl::add_connections"); @@ -347,7 +354,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) @@ -378,7 +385,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 ()); } @@ -386,12 +393,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 = @@ -401,7 +412,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 ()); @@ -419,16 +430,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, @@ -486,7 +498,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; @@ -495,7 +507,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)) @@ -578,7 +590,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; @@ -587,7 +599,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)) @@ -643,7 +655,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; @@ -652,7 +664,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)) @@ -685,7 +697,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; @@ -695,7 +707,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)) { @@ -711,7 +723,7 @@ getPlan (ACE_ENV_SINGLE_ARG_DECL) } Deployment::Connections * -CIAO::DomainApplicationManager_Impl:: +CIAO::DomainApplicationManager_Impl_Base:: get_outgoing_connections (const Deployment::DeploymentPlan &plan) { CIAO_TRACE("CIAO::DomainApplicationManager_Impl::get_outgoing_connections"); @@ -732,7 +744,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) { @@ -820,7 +832,7 @@ get_outgoing_connections_i (const char * instname, } void -CIAO::DomainApplicationManager_Impl:: +CIAO::DomainApplicationManager_Impl_Base:: dump_connections (const ::Deployment::Connections & connections) { CIAO_TRACE("CIAO::DomainApplicationManager_Impl::dump_connections"); @@ -843,3 +855,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; +} + diff --git a/TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h b/TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h index dbf6364a60b..01541c28de9 100644 --- a/TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h +++ b/TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h @@ -13,6 +13,7 @@ */ //===================================================================== + #ifndef CIAO_DOMAINAPPLICATIONMANAGER_IMPL_H #define CIAO_DOMAINAPPLICATIONMANAGER_IMPL_H #include /**/ "ace/pre.h" @@ -47,7 +48,7 @@ namespace CIAO * deploying an application on the domain level, i.e. across * nodes. It specializes the ApplicationManager abstract interface. */ - class DomainApplicationManager_Export DomainApplicationManager_Impl + class DomainApplicationManager_Export DomainApplicationManager_Impl_Base : public virtual POA_Deployment::DomainApplicationManager { public: @@ -65,11 +66,11 @@ namespace CIAO } Chained_Artifacts; /// Constructor - DomainApplicationManager_Impl (CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, - Deployment::TargetManager_ptr manager, - const Deployment::DeploymentPlan &plan, - const char * deployment_file) + DomainApplicationManager_Impl_Base (CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + Deployment::TargetManager_ptr manager, + const Deployment::DeploymentPlan &plan, + const char * deployment_file) ACE_THROW_SPEC ((CORBA::SystemException)); @@ -182,8 +183,8 @@ namespace CIAO protected: /// Destructor - virtual ~DomainApplicationManager_Impl (void); - + virtual ~DomainApplicationManager_Impl_Base (void); + /** * (1) Parse the global deployment plan, get the total number of * child plans included in the global plan, and get the list of @@ -225,6 +226,9 @@ namespace CIAO /// Dump connections, a static method void dump_connections (const ::Deployment::Connections & connections); + virtual ::Deployment::NodeManager_ptr + get_node_manager (const char* name) = 0; + protected: /// location of the Domainapplication CORBA::String_var domainapp_path_; @@ -284,6 +288,61 @@ namespace CIAO ::Deployment::Connections_var all_connections_; }; + + + /** + * @class DomainApplicationManager_Impl + * + */ + class DomainApplicationManager_Impl + : public virtual DomainApplicationManager_Impl_Base + { + public: + /// Constructor + DomainApplicationManager_Impl (CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + Deployment::TargetManager_ptr manager, + const Deployment::DeploymentPlan &plan, + const char * deployment_file) + ACE_THROW_SPEC ((CORBA::SystemException)); + + protected: + /// Destructor + virtual ~DomainApplicationManager_Impl (void); + + virtual ::Deployment::NodeManager_ptr get_node_manager (const char* name); + }; + + struct Static_Config_EntryPoints_Maps; + + /** + * @class Static_DomainApplicationManager_Impl + * + */ + class Static_DomainApplicationManager_Impl + : public virtual DomainApplicationManager_Impl_Base + { + public: + /// Constructor + 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)); + + protected: + /// Destructor + virtual ~Static_DomainApplicationManager_Impl (void); + + virtual ::Deployment::NodeManager_ptr get_node_manager (const char* name); + + protected: + ::Deployment::NodeManager_var static_node_manager_; + + }; + } #if defined (__ACE_INLINE__) diff --git a/TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.inl b/TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.inl index b50adfbc712..5ffd34609c1 100644 --- a/TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.inl +++ b/TAO/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.inl @@ -2,15 +2,56 @@ // // $Id$ + + ACE_INLINE const char * -CIAO::DomainApplicationManager_Impl::get_uuid () const +CIAO::DomainApplicationManager_Impl_Base::get_uuid () const { return this->uuid_; } ACE_INLINE void -CIAO::DomainApplicationManager_Impl::set_uuid (const char * uuid) +CIAO::DomainApplicationManager_Impl_Base::set_uuid (const char * uuid) { // Copy this uuid reference this->uuid_ = CORBA::string_dup (uuid); } + +ACE_INLINE +CIAO::DomainApplicationManager_Impl:: +DomainApplicationManager_Impl (CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + Deployment::TargetManager_ptr manager, + const Deployment::DeploymentPlan & plan, + const char * deployment_file) + ACE_THROW_SPEC ((CORBA::SystemException)) + : DomainApplicationManager_Impl_Base (orb, poa, manager, plan, deployment_file) +{ +} + +ACE_INLINE +CIAO::DomainApplicationManager_Impl:: +~DomainApplicationManager_Impl () +{ +} + +ACE_INLINE ::Deployment::NodeManager_ptr +CIAO::DomainApplicationManager_Impl:: +get_node_manager (const char* name) +{ + return this->deployment_config_.get_node_manager (name); +} + +ACE_INLINE +CIAO::Static_DomainApplicationManager_Impl:: +~Static_DomainApplicationManager_Impl () +{ +} + +ACE_INLINE ::Deployment::NodeManager_ptr +CIAO::Static_DomainApplicationManager_Impl:: +get_node_manager (const char* name) +{ + ACE_UNUSED_ARG (name); + return ::Deployment::NodeManager::_duplicate (static_node_manager_.in ()); +} diff --git a/TAO/CIAO/DAnCE/ExecutionManager/ExecutionManager.mpc b/TAO/CIAO/DAnCE/ExecutionManager/ExecutionManager.mpc index 017d9c3837e..23c35fd5b4c 100644 --- a/TAO/CIAO/DAnCE/ExecutionManager/ExecutionManager.mpc +++ b/TAO/CIAO/DAnCE/ExecutionManager/ExecutionManager.mpc @@ -23,9 +23,9 @@ project(ExecutionManager): ciao_deployment_svnt, naming, ifr_client, ciao_server exename = Execution_Manager - after += DomainApplicationManager ExecutionManager_stub + after += DomainApplicationManager ExecutionManager_stub Node_Daemon - libs += DomainApplicationManager ExecutionManager_stub + libs += DomainApplicationManager ExecutionManager_stub Node_Daemon IDL_Files { } diff --git a/TAO/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp b/TAO/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp index 1252878379d..cb65366d8c6 100644 --- a/TAO/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp +++ b/TAO/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp @@ -1,20 +1,23 @@ // $Id$ + #include "NodeApplicationManager_Impl.h" #include "ace/Process.h" #include "ace/OS_NS_stdio.h" +#include "ciao/Container_Base.h" +#include "ciao/NodeApplication_Impl.h" #if !defined (__ACE_INLINE__) # include "NodeApplicationManager_Impl.inl" #endif /* __ACE_INLINE__ */ -CIAO::NodeApplicationManager_Impl::~NodeApplicationManager_Impl (void) +CIAO::NodeApplicationManager_Impl_Base::~NodeApplicationManager_Impl_Base (void) { } PortableServer::ObjectId -CIAO::NodeApplicationManager_Impl::init ( +CIAO::NodeApplicationManager_Impl_Base::init ( const char *nodeapp_location, const CORBA::ULong delay, const Deployment::DeploymentPlan & plan, @@ -61,7 +64,7 @@ CIAO::NodeApplicationManager_Impl::init ( ACE_CATCHANY { ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "NodeApplicationManager_Impl::init\t\n"); + "NodeApplicationManager_Impl_Base::init\t\n"); ACE_RE_THROW; } ACE_ENDTRY; @@ -72,7 +75,7 @@ CIAO::NodeApplicationManager_Impl::init ( } void -CIAO::NodeApplicationManager_Impl:: +CIAO::NodeApplicationManager_Impl_Base:: parse_config_value (ACE_CString & str ACE_ENV_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException, @@ -84,129 +87,8 @@ parse_config_value (ACE_CString & str ACE_THROW ( CORBA::NO_IMPLEMENT() ); } -Deployment::NodeApplication_ptr -CIAO::NodeApplicationManager_Impl:: -create_node_application (const ACE_CString & options - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - Deployment::ResourceNotAvailable, - Deployment::StartError, - Deployment::InvalidProperty)) -{ - CIAO_TRACE("CIAO::NodeApplicationManager_Impl::create_node_application"); - Deployment::NodeApplication_var retval; - Deployment::Properties_var prop; - - ACE_NEW_THROW_EX (prop, - Deployment::Properties, - CORBA::INTERNAL ()); - ACE_CHECK_RETURN (Deployment::NodeApplication::_nil()); - - // @@ Create a new callback servant. - CIAO::NodeApplication_Callback_Impl * callback_servant = 0; - ACE_NEW_THROW_EX (callback_servant, - CIAO::NodeApplication_Callback_Impl (this->orb_.in (), - this->callback_poa_.in (), - this->objref_.in (), - prop.in ()), - CORBA::NO_MEMORY ()); - ACE_CHECK_RETURN (Deployment::NodeApplication::_nil()); - - PortableServer::ServantBase_var servant_var (callback_servant); - PortableServer::ObjectId_var cb_id - = this->callback_poa_->activate_object (callback_servant - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (Deployment::NodeApplication::_nil()); - - ACE_Process node_application; - ACE_Process_Options p_options; - - ACE_TRY - { - CORBA::Object_var cb_obj = - this->callback_poa_->id_to_reference (cb_id.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CIAO::NodeApplication_Callback_var cb = - CIAO::NodeApplication_Callback::_narrow (cb_obj.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::String_var cb_ior = - this->orb_->object_to_string (cb.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - // spawn the new NodeApplication. - p_options.command_line ("%s -k %s" - "%s", - this->nodeapp_path_.c_str (), - cb_ior.in (), - options.c_str ()); - - p_options.avoid_zombies (1); - - if (node_application.spawn (p_options) == -1) - { - if (CIAO::debug_level () > 1) - ACE_DEBUG ((LM_ERROR, "Fail to spawn a NodeApplication process\n")); - ACE_TRY_THROW (Deployment::ResourceNotAvailable ()); - } - - // wait for nodeApp to pass back its object reference. with a - // timeout value. using perform_work and stuff. - - int looping = 1; - - ACE_Time_Value timeout (this->spawn_delay_, 0); - - while (looping) - { - this->orb_->perform_work (timeout - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - retval = callback_servant->get_nodeapp_ref (); - - if (timeout == ACE_Time_Value::zero || !CORBA::is_nil (retval.in ())) - looping = 0; - } - - if (CORBA::is_nil (retval.in ())) - { - if (CIAO::debug_level () > 1) - ACE_DEBUG ((LM_ERROR, "Fail to acquire the NodeApplication object\n")); - - ACE_TRY_THROW (Deployment::ResourceNotAvailable ()); - } - - { - //ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, ace_mon, this->lock_, 0); - this->nodeapp_ = Deployment::NodeApplication::_duplicate (retval.in ()); - } - } - ACE_CATCHANY - { - this->callback_poa_->deactivate_object (cb_id.in ()); - ACE_TRY_CHECK; - - ACE_RE_THROW; - } - ACE_ENDTRY; - ACE_CHECK_RETURN (Deployment::NodeApplication::_nil ()); - - this->callback_poa_->deactivate_object (cb_id.in () ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (Deployment::NodeApplication::_nil ()); - - if (CIAO::debug_level () > 1) - ACE_DEBUG ((LM_DEBUG, "CIAO::NodeApplicationManager_Impl::NodeApplication spawned!\n")); - - return retval._retn (); -} - Deployment::Connections * -CIAO::NodeApplicationManager_Impl:: +CIAO::NodeApplicationManager_Impl_Base:: create_connections (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException, Deployment::ResourceNotAvailable, @@ -269,7 +151,7 @@ create_connections (ACE_ENV_SINGLE_ARG_DECL) } Deployment::Application_ptr -CIAO::NodeApplicationManager_Impl:: +CIAO::NodeApplicationManager_Impl_Base:: startLaunch (const Deployment::Properties & configProperty, Deployment::Connections_out providedReference, CORBA::Boolean start @@ -358,7 +240,7 @@ startLaunch (const Deployment::Properties & configProperty, void -CIAO::NodeApplicationManager_Impl:: +CIAO::NodeApplicationManager_Impl_Base:: destroyApplication (Deployment::Application_ptr app ACE_ENV_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException, @@ -378,3 +260,206 @@ destroyApplication (Deployment::Application_ptr app return; } + + +CIAO::NodeApplicationManager_Impl::~NodeApplicationManager_Impl (void) +{ +} + +CIAO::NodeApplicationManager_Impl:: +NodeApplicationManager_Impl (CORBA::ORB_ptr o, + PortableServer::POA_ptr p) + : NodeApplicationManager_Impl_Base (o, p) +{ +} + +Deployment::NodeApplication_ptr +CIAO::NodeApplicationManager_Impl:: +create_node_application (const ACE_CString & options + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException, + Deployment::ResourceNotAvailable, + Deployment::StartError, + Deployment::InvalidProperty)) +{ + CIAO_TRACE("CIAO::NodeApplicationManager_Impl::create_node_application"); + Deployment::NodeApplication_var retval; + Deployment::Properties_var prop; + + ACE_NEW_THROW_EX (prop, + Deployment::Properties, + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (Deployment::NodeApplication::_nil()); + + // @@ Create a new callback servant. + CIAO::NodeApplication_Callback_Impl * callback_servant = 0; + ACE_NEW_THROW_EX (callback_servant, + CIAO::NodeApplication_Callback_Impl (this->orb_.in (), + this->callback_poa_.in (), + this->objref_.in (), + prop.in ()), + CORBA::NO_MEMORY ()); + ACE_CHECK_RETURN (Deployment::NodeApplication::_nil()); + + PortableServer::ServantBase_var servant_var (callback_servant); + PortableServer::ObjectId_var cb_id + = this->callback_poa_->activate_object (callback_servant + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (Deployment::NodeApplication::_nil()); + + ACE_Process node_application; + ACE_Process_Options p_options; + + ACE_TRY + { + CORBA::Object_var cb_obj = + this->callback_poa_->id_to_reference (cb_id.in () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + CIAO::NodeApplication_Callback_var cb = + CIAO::NodeApplication_Callback::_narrow (cb_obj.in () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + CORBA::String_var cb_ior = + this->orb_->object_to_string (cb.in () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + // spawn the new NodeApplication. + p_options.command_line ("%s -k %s" + "%s", + this->nodeapp_path_.c_str (), + cb_ior.in (), + options.c_str ()); + + p_options.avoid_zombies (1); + + if (node_application.spawn (p_options) == -1) + { + if (CIAO::debug_level () > 1) + ACE_DEBUG ((LM_ERROR, "Fail to spawn a NodeApplication process\n")); + ACE_TRY_THROW (Deployment::ResourceNotAvailable ()); + } + + // wait for nodeApp to pass back its object reference. with a + // timeout value. using perform_work and stuff. + + int looping = 1; + + ACE_Time_Value timeout (this->spawn_delay_, 0); + + while (looping) + { + this->orb_->perform_work (timeout + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + retval = callback_servant->get_nodeapp_ref (); + + if (timeout == ACE_Time_Value::zero || !CORBA::is_nil (retval.in ())) + looping = 0; + } + + if (CORBA::is_nil (retval.in ())) + { + if (CIAO::debug_level () > 1) + ACE_DEBUG ((LM_ERROR, "Fail to acquire the NodeApplication object\n")); + + ACE_TRY_THROW (Deployment::ResourceNotAvailable ()); + } + + { + //ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, ace_mon, this->lock_, 0); + this->nodeapp_ = Deployment::NodeApplication::_duplicate (retval.in ()); + } + } + ACE_CATCHANY + { + this->callback_poa_->deactivate_object (cb_id.in ()); + ACE_TRY_CHECK; + + ACE_RE_THROW; + } + ACE_ENDTRY; + ACE_CHECK_RETURN (Deployment::NodeApplication::_nil ()); + + this->callback_poa_->deactivate_object (cb_id.in () ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (Deployment::NodeApplication::_nil ()); + + if (CIAO::debug_level () > 1) + ACE_DEBUG ((LM_DEBUG, "CIAO::NodeApplicationManager_Impl::NodeApplication spawned!\n")); + + return retval._retn (); +} + + +CIAO::Static_NodeApplicationManager_Impl::~Static_NodeApplicationManager_Impl (void) +{ +} + +CIAO::Static_NodeApplicationManager_Impl:: +Static_NodeApplicationManager_Impl (CORBA::ORB_ptr o, + PortableServer::POA_ptr p, + Static_Config_EntryPoints_Maps* static_config_entrypoints_maps) + : NodeApplicationManager_Impl_Base (o, p), + static_config_entrypoints_maps_ (static_config_entrypoints_maps) +{ +} + +Deployment::NodeApplication_ptr +CIAO::Static_NodeApplicationManager_Impl:: +create_node_application (const ACE_CString & options + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException, + Deployment::ResourceNotAvailable, + Deployment::StartError, + Deployment::InvalidProperty)) +{ + ACE_UNUSED_ARG(options); + + CIAO::NodeApplication_Impl *nodeapp_servant; + + ACE_DEBUG ((LM_DEBUG, "create_static_node_application\n")); + + ACE_NEW_RETURN (nodeapp_servant, + CIAO::NodeApplication_Impl (orb_.in (), + poa_.in (), + this->static_config_entrypoints_maps_), + Deployment::NodeApplication::_nil () + ); + if (nodeapp_servant->init (ACE_ENV_SINGLE_ARG_PARAMETER)) + { + ACE_DEBUG ((LM_DEBUG, "NodeApplication Failed on creating and\ + initializing the session container!")); + return Deployment::NodeApplication::_nil (); + } + ACE_TRY_CHECK; + + // CONFIGURING NodeApplication + PortableServer::ObjectId_var nodeapp_oid + = poa_->activate_object (nodeapp_servant + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + CORBA::Object_var + obj = poa_->id_to_reference (nodeapp_oid.in () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + Deployment::NodeApplication_var nodeapp_obj = + Deployment::NodeApplication::_narrow (obj.in () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (CORBA::is_nil (nodeapp_obj.in ())) + { + ACE_ERROR ((LM_ERROR, "Unable to activate NodeApplication object\n")); + return Deployment::NodeApplication::_nil (); + } + + this->nodeapp_ = Deployment::NodeApplication::_duplicate (nodeapp_obj.in ()); + + return nodeapp_obj._retn (); +} diff --git a/TAO/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h b/TAO/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h index 7ce8858be8e..b49c503d25b 100644 --- a/TAO/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h +++ b/TAO/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h @@ -1,4 +1,6 @@ + //$Id$ + // -*- C++ -*- //============================================================================= @@ -36,12 +38,12 @@ namespace CIAO /** * @class NodeApplicationManager_Impl */ - class CIAO_NAM_Export NodeApplicationManager_Impl + class CIAO_NAM_Export NodeApplicationManager_Impl_Base : public virtual POA_Deployment::NodeApplicationManager { public: /// Constructor - NodeApplicationManager_Impl (CORBA::ORB_ptr o, + NodeApplicationManager_Impl_Base (CORBA::ORB_ptr o, PortableServer::POA_ptr p); /*=========================================================== @@ -105,7 +107,7 @@ namespace CIAO protected: /// Destructor - virtual ~NodeApplicationManager_Impl (void); + virtual ~NodeApplicationManager_Impl_Base (void); // Internal help function to create new NodeApplicationProcess virtual Deployment::NodeApplication_ptr @@ -114,7 +116,7 @@ namespace CIAO ACE_THROW_SPEC ((CORBA::SystemException, Deployment::ResourceNotAvailable, Deployment::StartError, - Deployment::InvalidProperty)); + Deployment::InvalidProperty))=0; // Helper function to get the connection. virtual Deployment::Connections * @@ -176,6 +178,65 @@ namespace CIAO // Synchronize access to the object set. TAO_SYNCH_MUTEX lock_; }; + + /** + * @class NodeApplicationManager_Impl + */ + class NodeApplicationManager_Impl + : public virtual NodeApplicationManager_Impl_Base + { + public: + /// Constructor + NodeApplicationManager_Impl (CORBA::ORB_ptr o, + PortableServer::POA_ptr p); + + protected: + /// Destructor + virtual ~NodeApplicationManager_Impl (void); + + // Internal help function to create new NodeApplicationProcess + // Here we override it to create an in-process NodeApplication object + virtual Deployment::NodeApplication_ptr + create_node_application (const ACE_CString & options + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, + Deployment::ResourceNotAvailable, + Deployment::StartError, + Deployment::InvalidProperty)); + }; + + struct Static_Config_EntryPoints_Maps; + + /** + * @class Static_NodeApplicationManager_Impl + */ + class Static_NodeApplicationManager_Impl + : public virtual NodeApplicationManager_Impl_Base + { + public: + /// Constructor + Static_NodeApplicationManager_Impl (CORBA::ORB_ptr o, + PortableServer::POA_ptr p, + Static_Config_EntryPoints_Maps* static_config_entrypoints_maps); + + protected: + /// Destructor + virtual ~Static_NodeApplicationManager_Impl (void); + + // Internal help function to create new NodeApplicationProcess + // Here we override it to create an in-process NodeApplication object + virtual Deployment::NodeApplication_ptr + create_node_application (const ACE_CString & options + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, + Deployment::ResourceNotAvailable, + Deployment::StartError, + Deployment::InvalidProperty)); + + Static_Config_EntryPoints_Maps* static_config_entrypoints_maps_; + + }; + } #if defined (__ACE_INLINE__) diff --git a/TAO/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl b/TAO/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl index 24908a047a4..5a29debbb53 100644 --- a/TAO/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl +++ b/TAO/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl @@ -2,8 +2,8 @@ // $Id$ ACE_INLINE -CIAO::NodeApplicationManager_Impl:: -NodeApplicationManager_Impl (CORBA::ORB_ptr o, +CIAO::NodeApplicationManager_Impl_Base:: +NodeApplicationManager_Impl_Base (CORBA::ORB_ptr o, PortableServer::POA_ptr p) : orb_ (CORBA::ORB::_duplicate (o)), poa_ (PortableServer::POA::_duplicate (p)), @@ -20,7 +20,7 @@ NodeApplicationManager_Impl (CORBA::ORB_ptr o, ACE_INLINE Deployment::NodeApplicationManager_ptr -CIAO::NodeApplicationManager_Impl::get_nodeapp_manager (void) +CIAO::NodeApplicationManager_Impl_Base::get_nodeapp_manager (void) { return this->objref_.in (); } diff --git a/TAO/CIAO/DAnCE/NodeManager/NodeDaemon_Impl.cpp b/TAO/CIAO/DAnCE/NodeManager/NodeDaemon_Impl.cpp index ff4a2930dd9..cdbf97a8d34 100644 --- a/TAO/CIAO/DAnCE/NodeManager/NodeDaemon_Impl.cpp +++ b/TAO/CIAO/DAnCE/NodeManager/NodeDaemon_Impl.cpp @@ -1,9 +1,9 @@ // $Id$ #include "NodeDaemon_Impl.h" -#include "../NodeApplicationManager/NodeApplicationManager_Impl.h" +#include "ciao/Container_Base.h" -CIAO::NodeDaemon_Impl::NodeDaemon_Impl (const char *name, +CIAO::NodeDaemon_Impl_Base::NodeDaemon_Impl_Base (const char *name, CORBA::ORB_ptr orb, PortableServer::POA_ptr poa, const char * nodapp_loc, @@ -18,13 +18,9 @@ CIAO::NodeDaemon_Impl::NodeDaemon_Impl (const char *name, { } -CIAO::NodeDaemon_Impl::~NodeDaemon_Impl () -{ - -} void -CIAO::NodeDaemon_Impl::init (ACE_ENV_SINGLE_ARG_DECL) +CIAO::NodeDaemon_Impl_Base::init (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { ACE_TRY @@ -45,29 +41,37 @@ CIAO::NodeDaemon_Impl::init (ACE_ENV_SINGLE_ARG_DECL) ACE_CATCHANY { ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "NodeDaemon_Impl::init\t\n"); + "NodeDaemon_Impl_Base::constructor\t\n"); + // @@ This is bogus and will not work with emulated exceptions + // -- Bala ACE_RE_THROW; } ACE_ENDTRY; ACE_CHECK; } + +CIAO::NodeDaemon_Impl_Base::~NodeDaemon_Impl_Base () +{ + +} + PortableServer::POA_ptr -CIAO::NodeDaemon_Impl::_default_POA (void) +CIAO::NodeDaemon_Impl_Base::_default_POA (void) { return PortableServer::POA::_duplicate (this->poa_.in ()); } char * -CIAO::NodeDaemon_Impl::name (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) +CIAO::NodeDaemon_Impl_Base::name (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) ACE_THROW_SPEC ((CORBA::SystemException)) { return CORBA::string_dup (this->name_.in ()); } void -CIAO::NodeDaemon_Impl::shutdown (ACE_ENV_SINGLE_ARG_DECL) +CIAO::NodeDaemon_Impl_Base::shutdown (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER); @@ -75,7 +79,7 @@ CIAO::NodeDaemon_Impl::shutdown (ACE_ENV_SINGLE_ARG_DECL) } void -CIAO::NodeDaemon_Impl::joinDomain (const Deployment::Domain & , +CIAO::NodeDaemon_Impl_Base::joinDomain (const Deployment::Domain & , Deployment::TargetManager_ptr , Deployment::Logger_ptr ACE_ENV_ARG_DECL) @@ -85,22 +89,22 @@ CIAO::NodeDaemon_Impl::joinDomain (const Deployment::Domain & , } void -CIAO::NodeDaemon_Impl::leaveDomain (ACE_ENV_SINGLE_ARG_DECL) +CIAO::NodeDaemon_Impl_Base::leaveDomain (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { //Implementation undefined. ACE_THROW (CORBA::NO_IMPLEMENT ()); } - Deployment::NodeApplicationManager_ptr -CIAO::NodeDaemon_Impl::preparePlan (const Deployment::DeploymentPlan &plan +CIAO::NodeDaemon_Impl_Base::preparePlan (const Deployment::DeploymentPlan &plan ACE_ENV_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException, Deployment::StartError, Deployment::PlanError)) { CIAO_TRACE("CIAO::NodeDaemon_Impl::preparePlan"); + ACE_TRY { if (!this->map_.is_available (plan.UUID.in ())) @@ -113,11 +117,9 @@ CIAO::NodeDaemon_Impl::preparePlan (const Deployment::DeploymentPlan &plan } //Implementation undefined. - CIAO::NodeApplicationManager_Impl *app_mgr; - ACE_NEW_THROW_EX (app_mgr, - CIAO::NodeApplicationManager_Impl (this->orb_.in (), - this->poa_.in ()), - CORBA::NO_MEMORY ()); + CIAO::NodeApplicationManager_Impl_Base *app_mgr; + app_mgr = create_node_app_manager (this->orb_.in (), this->poa_.in () + ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; PortableServer::ServantBase_var safe (app_mgr); @@ -160,11 +162,11 @@ CIAO::NodeDaemon_Impl::preparePlan (const Deployment::DeploymentPlan &plan Deployment::NodeApplicationManager::_nil ()); } ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "(%P|%t) NodeDaemon_Impl::preparePlan\t\n"); - ACE_RE_THROW; - } + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, + "NodeDaemon_Impl_Base::preparePlan\t\n"); + ACE_RE_THROW; + } ACE_ENDTRY; ACE_CHECK_RETURN (Deployment::NodeApplicationManager::_nil ()); @@ -172,7 +174,7 @@ CIAO::NodeDaemon_Impl::preparePlan (const Deployment::DeploymentPlan &plan } void -CIAO::NodeDaemon_Impl::destroyManager +CIAO::NodeDaemon_Impl_Base::destroyManager (Deployment::NodeApplicationManager_ptr manager ACE_ENV_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException, @@ -217,10 +219,19 @@ CIAO::NodeDaemon_Impl::destroyManager ACE_CATCHANY { ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "NodeDaemon_Impl::destroyManager\t\n"); + "NodeDaemon_Impl_Base::destroyManager\t\n"); ACE_RE_THROW; } ACE_ENDTRY; } + +CIAO::NodeDaemon_Impl::~NodeDaemon_Impl () +{ +} + +CIAO::Static_NodeDaemon_Impl::~Static_NodeDaemon_Impl () +{ +} + diff --git a/TAO/CIAO/DAnCE/NodeManager/NodeDaemon_Impl.h b/TAO/CIAO/DAnCE/NodeManager/NodeDaemon_Impl.h index 3524c57e8fc..113fd0b9bbc 100644 --- a/TAO/CIAO/DAnCE/NodeManager/NodeDaemon_Impl.h +++ b/TAO/CIAO/DAnCE/NodeManager/NodeDaemon_Impl.h @@ -22,6 +22,7 @@ #include /**/ "ace/pre.h" #include "NodeDaemonS.h" +#include "NodeApplicationManager/NodeApplicationManager_Impl.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once @@ -34,6 +35,7 @@ #include "NAM_Map.h" + namespace CIAO { /** @@ -45,13 +47,15 @@ namespace CIAO * This class implements the CIAO:NodeDaemon interface. * */ - class NodeDaemon_Impl + class NodeApplicationManager_Impl_Base; + + class NodeDaemon_Impl_Base : public virtual POA_CIAO::NodeDaemon { public: /// Constructor - NodeDaemon_Impl (const char *name, + NodeDaemon_Impl_Base (const char *name, CORBA::ORB_ptr orb, PortableServer::POA_ptr p, const char * nodeapp_loc, @@ -102,7 +106,13 @@ namespace CIAO /// through the reference counting mechanism (i.e. to /// disallow calling operator delete() on an instance of /// this class. - virtual ~NodeDaemon_Impl (void); + virtual ~NodeDaemon_Impl_Base (void); + + virtual ::CIAO::NodeApplicationManager_Impl_Base * + create_node_app_manager (CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException))=0; /// Keep a pointer to the managing ORB serving this servant. CORBA::ORB_var orb_; @@ -127,6 +137,75 @@ namespace CIAO NAM_Map map_; }; + + /** + * @class NodeDaemon_Impl + * + */ + class NodeDaemon_Impl + : public virtual NodeDaemon_Impl_Base + { + public: + + /// Constructor + NodeDaemon_Impl (const char *name, + CORBA::ORB_ptr orb, + PortableServer::POA_ptr p, + const char * nodeapp_loc, + int spawn_delay); + + protected: + /// Since this class is reference counted, making this + /// destructor protected to enforce proper memory managment + /// through the reference counting mechanism (i.e. to + /// disallow calling operator delete() on an instance of + /// this class. + virtual ~NodeDaemon_Impl (void); + + virtual ::CIAO::NodeApplicationManager_Impl_Base * + create_node_app_manager (CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + }; + + class NodeApplicationManager_Impl; + struct Static_Config_EntryPoints_Maps; + + /** + * @class Static_NodeDaemon_Impl + * + */ + class Static_NodeDaemon_Impl + : public virtual NodeDaemon_Impl_Base + { + public: + + /// Constructor + Static_NodeDaemon_Impl (const char *name, + CORBA::ORB_ptr orb, + PortableServer::POA_ptr p, + const char * nodeapp_loc, + int spawn_delay, + Static_Config_EntryPoints_Maps* static_config_entrypoints_maps + ); + + protected: + /// Since this class is reference counted, making this + /// destructor protected to enforce proper memory managment + /// through the reference counting mechanism (i.e. to + /// disallow calling operator delete() on an instance of + /// this class. + virtual ~Static_NodeDaemon_Impl (void); + + virtual ::CIAO::NodeApplicationManager_Impl_Base * + create_node_app_manager (CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + + Static_Config_EntryPoints_Maps* static_config_entrypoints_maps_; + }; } #if defined(_MSC_VER) diff --git a/TAO/CIAO/DAnCE/NodeManager/NodeDaemon_Impl.inl b/TAO/CIAO/DAnCE/NodeManager/NodeDaemon_Impl.inl index 6318deb79a0..b25ca5f53de 100644 --- a/TAO/CIAO/DAnCE/NodeManager/NodeDaemon_Impl.inl +++ b/TAO/CIAO/DAnCE/NodeManager/NodeDaemon_Impl.inl @@ -1,2 +1,59 @@ /* -*- C++ -*- */ // $Id$ + +ACE_INLINE +CIAO::NodeDaemon_Impl:: +NodeDaemon_Impl (const char *name, + CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + const char * nodapp_loc, + int spawn_delay) + : NodeDaemon_Impl_Base (name, orb, poa, nodapp_loc, spawn_delay) +{} + + +ACE_INLINE +::CIAO::NodeApplicationManager_Impl_Base * +::CIAO::NodeDaemon_Impl:: +create_node_app_manager (CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + CIAO::NodeApplicationManager_Impl_Base *app_mgr; + ACE_NEW_THROW_EX (app_mgr, + CIAO::NodeApplicationManager_Impl (orb, + poa), + CORBA::NO_MEMORY ()); + return app_mgr; +} + +ACE_INLINE +CIAO::Static_NodeDaemon_Impl:: +Static_NodeDaemon_Impl (const char *name, + CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa, + const char * nodapp_loc, + int spawn_delay, + Static_Config_EntryPoints_Maps* static_config_entrypoints_maps) + : NodeDaemon_Impl_Base (name, orb, poa, nodapp_loc, spawn_delay), + static_config_entrypoints_maps_ (static_config_entrypoints_maps) +{} + +ACE_INLINE +::CIAO::NodeApplicationManager_Impl_Base * +::CIAO::Static_NodeDaemon_Impl:: +create_node_app_manager (CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + CIAO::NodeApplicationManager_Impl_Base *app_mgr; + ACE_NEW_THROW_EX (app_mgr, + CIAO::Static_NodeApplicationManager_Impl (orb, + poa, + this->static_config_entrypoints_maps_), + CORBA::NO_MEMORY ()); + return app_mgr; +} + diff --git a/TAO/CIAO/DAnCE/ciao/Container_Impl.cpp b/TAO/CIAO/DAnCE/ciao/Container_Impl.cpp index 97a1006fd18..c3a4d479196 100644 --- a/TAO/CIAO/DAnCE/ciao/Container_Impl.cpp +++ b/TAO/CIAO/DAnCE/ciao/Container_Impl.cpp @@ -41,10 +41,21 @@ CIAO::Container_Impl::init (const ::Deployment::Properties &properties // @@Jai, what is the condition to create an upgradeable container? // Where is it getting created and how? Need to address that. - ACE_NEW_THROW_EX (this->container_, - CIAO::Session_Container (this->orb_.in (), this), - CORBA::INTERNAL ()); - ACE_CHECK_RETURN (-1); + if (this->static_entrypts_maps_ == 0) + { + ACE_NEW_THROW_EX (this->container_, + CIAO::Session_Container (this->orb_.in (), this), + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (-1); + } + else + { + ACE_NEW_THROW_EX (this->container_, + CIAO::Session_Container (this->orb_.in (), this, 1, + this->static_entrypts_maps_), + CORBA::INTERNAL ()); + ACE_CHECK_RETURN (-1); + } return this->container_->init (0, 0 diff --git a/TAO/CIAO/DAnCE/ciao/Container_Impl.h b/TAO/CIAO/DAnCE/ciao/Container_Impl.h index 428b47c67f2..69e62a7e89c 100644 --- a/TAO/CIAO/DAnCE/ciao/Container_Impl.h +++ b/TAO/CIAO/DAnCE/ciao/Container_Impl.h @@ -52,7 +52,8 @@ namespace CIAO /// Constructor Container_Impl (CORBA::ORB_ptr o, PortableServer::POA_ptr p, - ::Deployment::NodeApplication_ptr server); + ::Deployment::NodeApplication_ptr server, + const Static_Config_EntryPoints_Maps* static_entrypts_maps =0); /// Destructor virtual ~Container_Impl (void); @@ -207,6 +208,8 @@ protected: ACE_Null_Mutex> CCMComponent_Map; typedef CCMComponent_Map::iterator Component_Iterator; CCMComponent_Map component_map_; + + const Static_Config_EntryPoints_Maps* static_entrypts_maps_; }; } diff --git a/TAO/CIAO/DAnCE/ciao/Container_Impl.inl b/TAO/CIAO/DAnCE/ciao/Container_Impl.inl index 40406e5582e..b0ee9c6d558 100644 --- a/TAO/CIAO/DAnCE/ciao/Container_Impl.inl +++ b/TAO/CIAO/DAnCE/ciao/Container_Impl.inl @@ -4,10 +4,12 @@ ACE_INLINE CIAO::Container_Impl::Container_Impl (CORBA::ORB_ptr o, PortableServer::POA_ptr p, - ::Deployment::NodeApplication_ptr server) + ::Deployment::NodeApplication_ptr server, + const Static_Config_EntryPoints_Maps* static_entrypts_maps) : orb_ (CORBA::ORB::_duplicate (o)), poa_ (PortableServer::POA::_duplicate (p)), - nodeapp_ (::Deployment::NodeApplication::_duplicate (server)) + nodeapp_ (::Deployment::NodeApplication::_duplicate (server)), + static_entrypts_maps_ (static_entrypts_maps) { } diff --git a/TAO/CIAO/DAnCE/ciao/NodeApplication_Impl.cpp b/TAO/CIAO/DAnCE/ciao/NodeApplication_Impl.cpp index 63078657f51..276b5fe649e 100644 --- a/TAO/CIAO/DAnCE/ciao/NodeApplication_Impl.cpp +++ b/TAO/CIAO/DAnCE/ciao/NodeApplication_Impl.cpp @@ -302,7 +302,8 @@ CIAO::NodeApplication_Impl::create_container (const ::Deployment::Properties &pr ACE_NEW_THROW_EX (container_servant, CIAO::Container_Impl (this->orb_.in (), this->poa_.in (), - this->get_objref ()), + this->get_objref (), + this->static_entrypts_maps_), CORBA::NO_MEMORY ()); ACE_CHECK_RETURN (0); diff --git a/TAO/CIAO/DAnCE/ciao/NodeApplication_Impl.h b/TAO/CIAO/DAnCE/ciao/NodeApplication_Impl.h index b2dccf413d6..53bdebcc485 100644 --- a/TAO/CIAO/DAnCE/ciao/NodeApplication_Impl.h +++ b/TAO/CIAO/DAnCE/ciao/NodeApplication_Impl.h @@ -63,7 +63,8 @@ namespace CIAO public: /// Default constructor. NodeApplication_Impl (CORBA::ORB_ptr o, - PortableServer::POA_ptr p); + PortableServer::POA_ptr p, + const Static_Config_EntryPoints_Maps* static_entrypts_maps =0); /// Default destructor. virtual ~NodeApplication_Impl (void); @@ -227,6 +228,8 @@ namespace CIAO /// Cache the object reference (of ourselves). ::Deployment::NodeApplication_var objref_; + + const Static_Config_EntryPoints_Maps* static_entrypts_maps_; }; } diff --git a/TAO/CIAO/DAnCE/ciao/NodeApplication_Impl.inl b/TAO/CIAO/DAnCE/ciao/NodeApplication_Impl.inl index d0a30e2b401..3d65a293a05 100644 --- a/TAO/CIAO/DAnCE/ciao/NodeApplication_Impl.inl +++ b/TAO/CIAO/DAnCE/ciao/NodeApplication_Impl.inl @@ -4,10 +4,11 @@ ACE_INLINE CIAO::NodeApplication_Impl:: NodeApplication_Impl (CORBA::ORB_ptr o, - PortableServer::POA_ptr p) - + PortableServer::POA_ptr p, + const Static_Config_EntryPoints_Maps* static_entrypts_maps) : orb_ (CORBA::ORB::_duplicate (o)), - poa_ (PortableServer::POA::_duplicate (p)) + poa_ (PortableServer::POA::_duplicate (p)), + static_entrypts_maps_ (static_entrypts_maps) { } diff --git a/TAO/CIAO/DAnCE/ciao/Version.h b/TAO/CIAO/DAnCE/ciao/Version.h index e36f84e74ec..45b75180041 100644 --- a/TAO/CIAO/DAnCE/ciao/Version.h +++ b/TAO/CIAO/DAnCE/ciao/Version.h @@ -1,7 +1,9 @@ // $Id$ // This is an automatically generated file. + #define CIAO_MAJOR_VERSION 0 #define CIAO_MINOR_VERSION 4 #define CIAO_BETA_VERSION 1 #define CIAO_VERSION "0.4.1" + |