summaryrefslogtreecommitdiff
path: root/modules/CIAO/DAnCE/ExecutionManager/Execution_Manager_Impl.h
diff options
context:
space:
mode:
Diffstat (limited to 'modules/CIAO/DAnCE/ExecutionManager/Execution_Manager_Impl.h')
-rw-r--r--modules/CIAO/DAnCE/ExecutionManager/Execution_Manager_Impl.h175
1 files changed, 175 insertions, 0 deletions
diff --git a/modules/CIAO/DAnCE/ExecutionManager/Execution_Manager_Impl.h b/modules/CIAO/DAnCE/ExecutionManager/Execution_Manager_Impl.h
new file mode 100644
index 00000000000..cf674d37fe9
--- /dev/null
+++ b/modules/CIAO/DAnCE/ExecutionManager/Execution_Manager_Impl.h
@@ -0,0 +1,175 @@
+/*=======================================================================
+ *
+ * @file Execution_Manager_Impl.h
+ *
+ * $Id$
+ *
+ * @brief This file contains implementation for
+ * Deployment::ExecutionManager interface.
+ *
+ * @author Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+ * @auther Tao Lu <lu@dre.vanderbilt.edu>
+ *
+ *======================================================================*/
+
+#ifndef CIAO_EXECUTION_MANAGER_IMPL_H
+#define CIAO_EXECUTION_MANAGER_IMPL_H
+#include /**/ "ace/pre.h"
+
+#include "Interfaces/ExecutionManagerDaemonS.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "DAM_Map.h"
+#include "ace/SString.h"
+#include "ciao/Deployment_common.h"
+
+namespace CIAO
+{
+ namespace Execution_Manager
+ {
+ /**
+ *
+ * @class Execution_Manager_Impl
+ *
+ * @brief This class implements the
+ * ExecutionManger. ExecutionManager starts the execution process
+ * after the planning stage.
+ *
+ */
+ class Execution_Manager_Impl
+ : public virtual POA_CIAO::ExecutionManagerDaemon
+ {
+ public:
+ /// Constructor
+ Execution_Manager_Impl (CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ const char * init_file);
+
+ /// Template methods from ExecutionManagerDaemon, please see
+ /// $CIAO_ROOT/ciao/Deployment.idl for documentation
+ virtual Deployment::DomainApplicationManager_ptr
+ preparePlan (const Deployment::DeploymentPlan & plan,
+ CORBA::Boolean commitResources)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::ResourceNotAvailable,
+ Deployment::PlanError,
+ Deployment::StartError));
+
+ virtual Deployment::DomainApplicationManagers *
+ getManagers ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Below method is CIAO specific extension
+ virtual Deployment::DomainApplicationManager_ptr
+ getManager (const char * plan_uuid)
+ ACE_THROW_SPEC ((CORBA::SystemException, Deployment::PlanNotExist));
+
+ virtual void
+ destroyManager (Deployment::DomainApplicationManager_ptr manager)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StopError));
+
+ // Below method is CIAO specific extension, please see the IDL
+ // definition for more details.
+ virtual void
+ destroyManagerByPlan (const char * plan_uuid)
+ ACE_THROW_SPEC ((::CORBA::SystemException,
+ ::Deployment::StopError));
+
+ virtual void shutdown ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // 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_THROW_SPEC ((::CORBA::SystemException,
+ ::Deployment::PlanError,
+ ::Deployment::InstallationFailure,
+ ::Deployment::UnknownImplId,
+ ::Deployment::ImplEntryPointNotFound,
+ ::Deployment::InvalidConnection,
+ ::Deployment::InvalidProperty,
+ ::Components::RemoveFailure));
+
+ virtual Deployment::DeploymentPlan * getPlan (
+ const char * plan_uuid)
+ ACE_THROW_SPEC ((::CORBA::SystemException));
+
+ /// ****************** C++ Methods *************************
+
+ /// If input <add_connection> is true, then it will add new
+ /// connections which are across different assemblies. Otherwise
+ /// it will remove the specified connections of this component.
+ ///
+ /// @@GD: Later we can add another method which could accept
+ /// a list of bindings and do the batch job.
+ virtual void finalize_global_binding (
+ const Component_Binding_Info & binding,
+ CORBA::Boolean add_connection)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Deployment::InvalidConnection));
+
+ virtual void passivate_shared_components (
+ const Component_Binding_Info & binding)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError));
+
+ virtual void activate_shared_components (
+ const Component_Binding_Info & binding)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError));
+
+ /// Add shared component information.
+ /// This call will be made by DomainApplicationManager.
+ virtual void
+ add_shared_component (const Component_Binding_Info & binding);
+
+ /// Remove shared component
+ virtual void
+ remove_shared_component (const Component_Binding_Info & binding);
+
+ /// If the input component <name> was found in the internal
+ /// cached shared component list, and the plan_uuid also matches,
+ /// then this member function returns <true>, otherwise it
+ /// returns <false>.
+ virtual bool
+ is_component_running (const char * name, const char * plan_uuid);
+
+ protected:
+ /// Return the NodeApplication hosting the given biding
+ virtual Deployment::NodeApplication_ptr
+ find_node_application (const Component_Binding_Info & binding)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Deployment::InvalidConnection));
+
+ protected:
+ /// Destructor.
+ virtual ~Execution_Manager_Impl (void);
+
+ /// Cached ORB pointer
+ CORBA::ORB_var orb_;
+
+ /// Cached POA pointer
+ PortableServer::POA_var poa_;
+
+ /// Path to the initialization file
+ ACE_CString const init_file_;
+
+ /// A map which caches the DomainApplicationManager object ref.
+ DAM_Map map_;
+
+ /// A set of shared components and their location info.
+ ACE_Unbounded_Set<Component_Binding_Info> shared_components_;
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* EXECUTIONMANAGER_IMPL_H */