summaryrefslogtreecommitdiff
path: root/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h
diff options
context:
space:
mode:
Diffstat (limited to 'CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h')
-rw-r--r--CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h509
1 files changed, 0 insertions, 509 deletions
diff --git a/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h b/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h
deleted file mode 100644
index 49e52ee7d37..00000000000
--- a/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h
+++ /dev/null
@@ -1,509 +0,0 @@
-//==================================================================
-/**
- * @file DomainApplicationManager_Impl.h
- *
- * $Id$
- *
- * This file contains implementation for the servant of
- * Deployment::DomainApplicationManager.
- *
- * @author Gan Deng <gan.deng@vanderbilt.edu>
- * @author Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
- * @author Tao Lu <lu@dre.vanderbilt.edu>
- */
-//=====================================================================
-
-#ifndef CIAO_DOMAINAPPLICATIONMANAGER_IMPL_H
-#define CIAO_DOMAINAPPLICATIONMANAGER_IMPL_H
-#include /**/ "ace/pre.h"
-
-#include "ace/config-all.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-
-#include "ace/Hash_Map_Manager.h"
-#include "ace/Vector_T.h"
-#include "ace/Functor.h"
-#include "ace/OS_NS_string.h"
-#include "ciao/DomainApplicationManagerS.h"
-#include "ciao/Deployment_common.h"
-
-#include "tao/Valuetype/ValueBase.h"
-#include "tao/Valuetype/Valuetype_Adapter_Impl.h"
-
-#include "Deployment_Configuration.h"
-#include "DomainApplicationManager_Export.h"
-#include "ciao/CIAO_common.h"
-#include "ciao/Deployment_EventsC.h"
-
-namespace CIAO
-{
- namespace Execution_Manager
- {
- class Execution_Manager_Impl;
- }
-
- /**
- * @class DomainApplicationManager_Impl
- *
- * @brief A servant for the Deployment::DomainApplicationManager
- * interface. The DomainApplicationManager is responsible for
- * deploying an application on the domain level, i.e. across
- * nodes. It specializes the ApplicationManager abstract interface.
- */
- class DomainApplicationManager_Export DomainApplicationManager_Impl
- : public virtual POA_Deployment::DomainApplicationManager
- {
- public:
-
- // External_Connections means we search all the connections including
- // the connectiosn for external/shared components of this plan which hold
- // port objrefs of components within this plan
- enum Connection_Search_Type
- {
- External_Connections,
- Internal_Connections
- };
-
- /// Define the type which contains a list of DnC artifacts.
- /// @@ Assumption: Each NodeApplicationManager create only one
- /// NodeApplication when the startLaunch() operation is invoked,
- /// which means all the nodes on that child plan are collocated in
- /// the same process.
- typedef struct _chained_artifacts
- {
- ::Deployment::NodeManager_var node_manager_;
- ::Deployment::DeploymentPlan_var child_plan_;
- ::Deployment::NodeApplicationManager_var node_application_manager_;
- ::Deployment::NodeApplication_var node_application_;
- ::Deployment::DeploymentPlan_var old_child_plan_;
- } Chained_Artifacts;
-
- /// Constructor
- DomainApplicationManager_Impl (CORBA::ORB_ptr orb,
- PortableServer::POA_ptr poa,
- Deployment::TargetManager_ptr manager,
- Execution_Manager::Execution_Manager_Impl * em,
- const Deployment::DeploymentPlan &plan,
- const char * deployment_file)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
-
- /*===========================================================
- * Below are helper methods for the DomainApplicationManager
- *
- *============================================================*/
- /**
- * Initialize the DomainApplicationManager.
- * @para em A pointer to the ExecutionManager servant C++ object.
- *
- * (1) Set the total number of child plans.
- * (2) Set the list of NodeManager names, which is an array of strings.
- * The <node_manager_names> is a pointer to an array of ACE_CString
- * objets, which is allocated by the caller and deallocated by the
- * DomainApplicationManager destructor.
- * (3) Check the validity of the deployment plan and the deployment
- * information data file.
- * (4) Call split_plan () member function.
- * (5) Invoke all the preparePlan () operations on all the corresponding
- * NodeManagers with child plans.
- *
- *
- * @@ What else do we need to initialize here?
- */
- void init (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::ResourceNotAvailable,
- Deployment::StartError,
- Deployment::PlanError));
-
- /**
- * set_uuid method on the DomainApplicationManager assigns the
- * UUID of the associated plan to this Manager. This helps in
- * reverse lookup operations such as given a manager, obtaining
- * the UUID associated. The get_uuid method is used in this case.
- */
- void set_uuid (const char * uuid);
-
- const char * get_uuid () const;
-
- /*===========================================================
- * Below are operations from the DomainApplicationManager
- *
- *============================================================*/
-
- /**
- * Fetch the NodeApplication object reference based on the NodeManager name.
- */
- virtual Deployment::NodeApplication_ptr get_node_app (
- const char * node_name
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((
- ::CORBA::SystemException,
- ::Deployment::NoSuchName));
-
- /**
- * Executes the application, but does not start it yet. Users can
- * optionally provide launch-time configuration properties to
- * override properties that are part of the plan. Raises the
- * InvalidProperty exception if a configuration property is
- * invalid. Raises the StartError exception if an error occurs
- * during launching. Raises the ResourceNotAvailable exception if
- * the commitResources parameter to the prepare operation of the
- * ExecutionManager was true, if late resource allocation is used,
- * and one of the requested resources is not available.
- */
- virtual void
- startLaunch (const ::Deployment::Properties & configProperty,
- ::CORBA::Boolean start
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException,
- ::Deployment::ResourceNotAvailable,
- ::Deployment::StartError,
- ::Deployment::InvalidProperty));
-
- /**
- * The second step in launching an application in the
- * domain-level. If the start parameter is true, the application
- * is started as well. Raises the StartError exception if
- * launching or starting the application fails.
- */
- virtual void finishLaunch (CORBA::Boolean start,
- CORBA::Boolean is_ReDAC
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException,
- ::Deployment::StartError));
-
- /**
- * The last step in launching an application in the
- * domain-level. We establish connection bindings
- * for external/shared components of this deployment plan
- * components.
- * Internally, this operation will invoke some operations
- * on ExecutionManager to finish up this task.
- */
- virtual void post_finishLaunch (void)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::StartError));
-
- virtual void passivate_shared_components (void)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::StartError));
-
- virtual void activate_shared_components (void)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::StartError));
-
-
- /**
- * Starts the application. Raises the StartError exception if
- * starting the application fails.
- */
- virtual void start (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException,
- ::Deployment::StartError));
-
- /**
- * Terminates a running application. Raises the StopError
- * exception if an error occurs during termination. Raises the
- * InvalidReference exception if the appliction referen is
- * unknown.
- */
- virtual void destroyApplication (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException,
- ::Deployment::StopError));
-
- /**
- * Returns the DeploymentPlan associated with this ApplicationManager.
- */
- virtual ::Deployment::DeploymentPlan * getPlan (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
- /**
- * This is a helper function to destroy the NodeAppManager.
- * Since we don't want to do so in the destructor so we will
- * ask the ExecutionManager to do this on us when the same IDL
- * op invoked on it. This is part of the result for merging DAM
- * with DA.
- */
- virtual void destroyManager (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::StopError));
-
- // The input parameter is a *new_plan* which has the
- // same UUID of the existing running plan.
- virtual void
- perform_redeployment (
- const Deployment::DeploymentPlan & plan
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::PlanError,
- Deployment::InstallationFailure,
- Deployment::UnknownImplId,
- Deployment::ImplEntryPointNotFound,
- Deployment::InvalidConnection,
- ::Components::RemoveFailure));
-
- protected:
- /// Destructor
- virtual ~DomainApplicationManager_Impl (void);
-
- /**
- * (1) Parse the global deployment plan, get the total number of
- * child plans included in the global plan, and get the list of
- * names of NodeManagers for each child plan.
- * (2) Check whether all the NodeManager names are present in the
- * deployment information data file.
- */
- bool get_plan_info (void);
-
- /**
- * Split the global (domain-level) deployment plan to a set of
- * local (node-level) deployment plans. The set of local plans
- * are cached in the ACE hash map member variable.
- * Also, fill in the <node_manager_> field of the Chained_Artifacts
- * struct.
- */
- int split_plan (void);
-
- /**
- * Construct <Component_Binding_Info> struct for the component instance.
- *
- * @para name component instance name
- * @para child_uuid child plan uuid string
- */
- CIAO::Component_Binding_Info *
- populate_binding_info (const ACE_CString& name,
- const ACE_CString& child_uuid);
-
- /**
- * Construct <Component_Binding_Info> struct for the component instance.
- * Fetch the plan_uuid info from the internally cached shared component
- * list.
- *
- * @para name component instance name
- */
- CIAO::Component_Binding_Info *
- populate_binding_info (const ACE_CString& name);
-
- /**
- * Contact each NodeManager to get shared compnents information
- * and then update its internal cache.
- */
- void synchronize_shared_components_with_node_managers (void);
-
- /**
- * A helper function to add a list of shared components into
- * the cached shared component list.
- *
- * @para shared A list of shared components to be added.
- */
- void add_shared_components (const Deployment::ComponentPlans & shared);
-
- /**
- * A private function to check whether a component is in the shared
- * component list.
- *
- * @para name The name of a component instance.
- */
- bool is_shared_component (const char * name);
-
- /**
- * Cache the incoming connections, which is a sequence of Connections,
- * into the <all_connections_> list.
- */
- void add_connections (const Deployment::Connections & incoming_conn);
-
- /**
- * Given a child deployment plan, find the <Connections> sequence
- * of the "providedReference" for the component instances in the
- * child deployment plan as Receiver side.
- * By default, we search in the new plan.
- *
- * If <is_getting_all_connections> is false, then we only
- * search for "new connections" (valid for ReDaC case only).
- * Otherwise, we will search for both new connections and those
- * already existing connections.
- */
- Deployment::Connections *
- get_outgoing_connections (const Deployment::DeploymentPlan &plan,
- bool is_getting_all_connections = true,
- bool is_search_new_plan = true,
- Connection_Search_Type t = Internal_Connections
- ACE_ENV_ARG_DECL_WITH_DEFAULTS);
-
- /// This is a helper function to find the connection for a component.
- bool
- get_outgoing_connections_i (const char * instname,
- Deployment::Connections & retv,
- bool is_ReDAC,
- bool is_search_new_plan
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((Deployment::StartError));
-
- bool
- populate_connection_for_binding (
- const char * instname,
- const Deployment::PlanConnectionDescription & binding,
- const Deployment::DeploymentPlan & plan,
- Deployment::Connections & retv)
- ACE_THROW_SPEC ((Deployment::StartError));
-
- bool
- handle_es_connection (
- const char * instname,
- const Deployment::PlanConnectionDescription & binding,
- const Deployment::DeploymentPlan & plan,
- Deployment::Connections & retv)
- ACE_THROW_SPEC ((Deployment::StartError));
-
- bool
- handle_direct_connection (
- const char * instname,
- const Deployment::PlanConnectionDescription & binding,
- const Deployment::DeploymentPlan & plan,
- Deployment::Connections & retv)
- ACE_THROW_SPEC ((Deployment::StartError));
-
- /// Dump connections, a static method
- void dump_connections (const ::Deployment::Connections & connections);
-
- /// Check whether a connection already exists in the cached old plan
- bool already_exists (const Deployment::PlanConnectionDescription & conn);
-
- /// Remove those appeared in <right> from the <left>
- Deployment::Connections *
- subtract_connections (const Deployment::Connections & left,
- const Deployment::Connections & right);
-
- void
- purge_connections (Deployment::Connections_var & connections,
- const char * inst);
-
- /**
- * The first step in finish_launching an application in the
- * domain-level. We install all the CIAO_Event_Service objects
- * as specified in the DeploymentPlan.
- * Internally, this operation will invoke an operation on each cached
- * NodeApplication object.
- */
- virtual void install_all_es (void)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::StartError));
-
- /**
- * Add all CIAO_Event_Service objects into the cached map.
- */
- virtual void
- add_es_to_map (Deployment::ESInstallationInfos * es_infos,
- Deployment::CIAO_Event_Services * event_services)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::StartError));
-
- /**
- * Get the actual event connection QoS properties based on the
- * deployment requirement. The deployment requirement only specifies
- * an identifier/reference to the EventServiceDeploymentDescriptions.
- */
- virtual const Deployment::Properties &
- get_connection_QoS_configuration (
- const Deployment::Requirement & requirement);
-
- protected:
- /// location of the Domainapplication
- CORBA::String_var domainapp_path_;
-
- /// Keep a pointer to the managing ORB serving this servant.
- CORBA::ORB_var orb_;
-
- /// Keep a pointer to the managing POA.
- PortableServer::POA_var poa_;
-
- /// Pointer to the ExecutionManager_Impl "singleton" servant object
- /// We could do this because ExecutionManager and DomainApplicationManager
- /// are always collocated in the same process, so we don't have
- /// to pass CORBA object reference back and forth.
- Execution_Manager::Execution_Manager_Impl * execution_manager_;
-
- /// Cache a list of shared components
- Deployment::ComponentPlans_var shared_;
-
- /// Cache the ior of the previous reference
- CORBA::String_var ior_;
-
- /// Cached TargetManager.
- Deployment::TargetManager_var target_manager_;
-
- /// Cached deployment plan for the particular domain.
- /// The plan will be initialized when init is called.
- Deployment::DeploymentPlan plan_;
-
- /// Cached old deployment plan, i.e., before redeployment
- Deployment::DeploymentPlan old_plan_;
-
- /// Cached child plans.
- //Deployment::DeploymentPlan * child_plan_;
-
- /// Total number of child deployment plans.
- size_t num_child_plans_;
-
- /// The list of node manager names, each of them
- /// corresponds to one child plan.
- ACE_Vector<ACE_CString> node_manager_names_;
-
- /// Cached information for NodeManager, NodeApplicationManager,
- /// NodeApplication, Connections, etc.
- /// Key: NodeManager name with CString type.
- /// Value: Chained_Artifacts struct type.
- typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
- Chained_Artifacts,
- ACE_Hash<ACE_CString>,
- ACE_Equal_To<ACE_CString>,
- ACE_Null_Mutex> Chained_Artifacts_Table;
-
- Chained_Artifacts_Table artifact_map_;
-
- /// Cached information of all the CIAO_Event_Service objects within
- /// the deployment plan
- /// Key: the string identifier of the CIAO_Event_Service
- /// Value: the object reference of the CIAO_Event_Service
- typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
- CIAO::CIAO_Event_Service_var,
- ACE_Hash<ACE_CString>,
- ACE_Equal_To<ACE_CString>,
- ACE_Null_Mutex> Event_Service_Table;
-
- Event_Service_Table es_map_;
-
- /// The deployment information data file.
- const char * deployment_file_;
-
- /// Deployment Configuration info, which contains the deployment topology.
- Deployment_Configuration deployment_config_;
-
- /// UUID from the Plan
- CORBA::String_var uuid_;
-
- /// Maintain a list of <Connections>, each of which is obtained by
- /// calling the startLaunch() method on the NodeApplicationManager object.
- ::Deployment::Connections_var all_connections_;
-
- /// This variable is used to control the execution path of some
- /// member function implementations. The reason is because we want
- /// to avoid unnecessary code duplicate. The default value is "false".
- bool is_redeployment_;
-
- /// Cache the CIAO_Event_Service deployment description
- CIAO::DAnCE::EventServiceDeploymentDescriptions_var esd_;
- };
-}
-
-#if defined (__ACE_INLINE__)
-# include "DomainApplicationManager_Impl.inl"
-#endif /* __ACE_INLINE__ */
-
-#include /**/ "ace/post.h"
-#endif /* CIAO_DOMAINAPPLICATIONMANAGER_IMPL_H */