Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

CIAO::DomainApplicationManager_Impl Class Reference

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. More...

#include <DomainApplicationManager_Impl.h>

Collaboration diagram for CIAO::DomainApplicationManager_Impl:

Collaboration graph
[legend]
List of all members.

Public Types

typedef CIAO::DomainApplicationManager_Impl::_chained_artifacts Chained_Artifacts
enum  Connection_Search_Type { External_Connections, Internal_Connections }

Public Member Functions

 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) throw (CORBA::SystemException)
 Constructor.
void init () throw (CORBA::SystemException, Deployment::ResourceNotAvailable, Deployment::StartError, Deployment::PlanError)
void set_uuid (const char *uuid)
const char * get_uuid () const
virtual Deployment::NodeApplication_ptr get_node_app (const char *node_name) throw ( ::CORBA::SystemException, ::Deployment::NoSuchName)
virtual void startLaunch (const ::Deployment::Properties &configProperty,::CORBA::Boolean start) throw (CORBA::SystemException, ::Deployment::ResourceNotAvailable, ::Deployment::StartError, ::Deployment::InvalidProperty)
virtual void finishLaunch (CORBA::Boolean start, CORBA::Boolean is_ReDAC) throw (CORBA::SystemException, ::Deployment::StartError)
virtual void post_finishLaunch (void) throw (CORBA::SystemException, Deployment::StartError)
virtual void start () throw (CORBA::SystemException, ::Deployment::StartError)
virtual void destroyApplication () throw (CORBA::SystemException, ::Deployment::StopError)
virtual ::Deployment::DeploymentPlan * getPlan () throw (CORBA::SystemException)
virtual void destroyManager () throw (CORBA::SystemException, Deployment::StopError)
virtual void perform_redeployment (const Deployment::DeploymentPlan &plan) throw (CORBA::SystemException, Deployment::PlanError, Deployment::InstallationFailure, Deployment::UnknownImplId, Deployment::ImplEntryPointNotFound, Deployment::InvalidConnection, ::Components::RemoveFailure)

Protected Types

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

Protected Member Functions

virtual ~DomainApplicationManager_Impl (void)
 Destructor.
bool get_plan_info (void)
int split_plan (void)
CIAO::Component_Binding_Info * populate_binding_info (const ACE_CString &name, const ACE_CString &child_uuid)
CIAO::Component_Binding_Info * populate_binding_info (const ACE_CString &name)
void synchronize_shared_components_with_node_managers (void)
void add_shared_components (const Deployment::ComponentPlans &shared)
bool is_shared_component (const char *name)
void add_connections (const Deployment::Connections &incoming_conn)
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)
bool get_outgoing_connections_i (const char *instname, Deployment::Connections &retv, bool is_ReDAC, bool is_search_new_plan) throw (Deployment::StartError)
 This is a helper function to find the connection for a component.
void dump_connections (const ::Deployment::Connections &connections)
 Dump connections, a static method.
bool already_exists (const Deployment::PlanConnectionDescription &conn)
 Check whether a connection already exists in the cached old plan.
Deployment::Connections * subtract_connections (const Deployment::Connections &left, const Deployment::Connections &right)
 Remove those appeared in <right> from the <left>.

Protected Attributes

CORBA::String_var domainapp_path_
 location of the Domainapplication
CORBA::ORB_var orb_
 Keep a pointer to the managing ORB serving this servant.
PortableServer::POA_var poa_
 Keep a pointer to the managing POA.
Execution_Manager::Execution_Manager_Implexecution_manager_
Deployment::ComponentPlans_var shared_
 Cache a list of shared components.
CORBA::String_var ior_
 Cache the ior of the previous reference.
Deployment::TargetManager_var target_manager_
 Cached TargetManager.
Deployment::DeploymentPlan plan_
Deployment::DeploymentPlan old_plan_
 Cached old deployment plan, i.e., before redeployment.
size_t num_child_plans_
 Total number of child deployment plans.
ACE_Vector< ACE_CStringnode_manager_names_
Chained_Artifacts_Table artifact_map_
const char * deployment_file_
 The deployment information data file.
Deployment_Configuration deployment_config_
 Deployment Configuration info, which contains the deployment topology.
CORBA::String_var uuid_
 UUID from the Plan.
::Deployment::Connections_var all_connections_
bool is_redeployment_

Detailed Description

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.


Member Typedef Documentation

typedef struct CIAO::DomainApplicationManager_Impl::_chained_artifacts CIAO::DomainApplicationManager_Impl::Chained_Artifacts
 

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 ACE_Hash_Map_Manager_Ex<ACE_CString, Chained_Artifacts, ACE_Hash<ACE_CString>, ACE_Equal_To<ACE_CString>, ACE_Null_Mutex> CIAO::DomainApplicationManager_Impl::Chained_Artifacts_Table [protected]
 

Cached information for NodeManager, NodeApplicationManager, NodeApplication, Connections, etc. Key: NodeManager name with CString type. Value: Chained_Artifacts struct type.


Member Enumeration Documentation

enum CIAO::DomainApplicationManager_Impl::Connection_Search_Type
 

Enumeration values:
External_Connections 
Internal_Connections 


Constructor & Destructor Documentation

CIAO::DomainApplicationManager_Impl::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
throw (CORBA::SystemException)
 

Constructor.

CIAO::DomainApplicationManager_Impl::~DomainApplicationManager_Impl void   )  [protected, virtual]
 

Destructor.


Member Function Documentation

void CIAO::DomainApplicationManager_Impl::add_connections const Deployment::Connections &  incoming_conn  )  [protected]
 

Cache the incoming connections, which is a sequence of Connections, into the <all_connections_> list.

void CIAO::DomainApplicationManager_Impl::add_shared_components const Deployment::ComponentPlans &  shared  )  [protected]
 

A helper function to add a list of shared components into the cached shared component list.

shared A list of shared components to be added.

bool CIAO::DomainApplicationManager_Impl::already_exists const Deployment::PlanConnectionDescription &  conn  )  [protected]
 

Check whether a connection already exists in the cached old plan.

void CIAO::DomainApplicationManager_Impl::destroyApplication  )  throw (CORBA::SystemException, ::Deployment::StopError) [virtual]
 

Terminates a running application. Raises the StopError exception if an error occurs during termination. Raises the InvalidReference exception if the appliction referen is unknown.

void CIAO::DomainApplicationManager_Impl::destroyManager  )  throw (CORBA::SystemException, Deployment::StopError) [virtual]
 

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.

void CIAO::DomainApplicationManager_Impl::dump_connections const ::Deployment::Connections &  connections  )  [protected]
 

Dump connections, a static method.

void CIAO::DomainApplicationManager_Impl::finishLaunch CORBA::Boolean  start,
CORBA::Boolean  is_ReDAC
throw (CORBA::SystemException, ::Deployment::StartError) [virtual]
 

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.

Deployment::NodeApplication_ptr CIAO::DomainApplicationManager_Impl::get_node_app const char *  node_name  )  throw ( ::CORBA::SystemException, ::Deployment::NoSuchName) [virtual]
 

Fetch the NodeApplication object reference based on the NodeManager name.

Deployment::Connections * CIAO::DomainApplicationManager_Impl::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
[protected]
 

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.

bool CIAO::DomainApplicationManager_Impl::get_outgoing_connections_i const char *  instname,
Deployment::Connections &  retv,
bool  is_ReDAC,
bool  is_search_new_plan
throw (Deployment::StartError) [protected]
 

This is a helper function to find the connection for a component.

bool CIAO::DomainApplicationManager_Impl::get_plan_info void   )  [protected]
 

(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.

ACE_INLINE const char * CIAO::DomainApplicationManager_Impl::get_uuid  )  const
 

Deployment::DeploymentPlan * CIAO::DomainApplicationManager_Impl::getPlan  )  throw (CORBA::SystemException)
 

Returns the DeploymentPlan associated with this ApplicationManager.

void CIAO::DomainApplicationManager_Impl::init  )  throw (CORBA::SystemException, Deployment::ResourceNotAvailable, Deployment::StartError, Deployment::PlanError)
 

Initialize the DomainApplicationManager. 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?

bool CIAO::DomainApplicationManager_Impl::is_shared_component const char *  name  )  [protected]
 

A private function to check whether a component is in the shared component list.

name The name of a component instance.

void CIAO::DomainApplicationManager_Impl::perform_redeployment const Deployment::DeploymentPlan &  plan  )  throw (CORBA::SystemException, Deployment::PlanError, Deployment::InstallationFailure, Deployment::UnknownImplId, Deployment::ImplEntryPointNotFound, Deployment::InvalidConnection, ::Components::RemoveFailure) [virtual]
 

CIAO::Component_Binding_Info * CIAO::DomainApplicationManager_Impl::populate_binding_info const ACE_CString name  )  [protected]
 

Construct <component_binding_info> struct for the component instance. Fetch the plan_uuid info from the internally cached shared component list.

name component instance name

CIAO::Component_Binding_Info * CIAO::DomainApplicationManager_Impl::populate_binding_info const ACE_CString name,
const ACE_CString child_uuid
[protected]
 

Construct <component_binding_info> struct for the component instance.

name component instance name child_uuid child plan uuid string

void CIAO::DomainApplicationManager_Impl::post_finishLaunch void   )  throw (CORBA::SystemException, Deployment::StartError) [virtual]
 

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.

ACE_INLINE void CIAO::DomainApplicationManager_Impl::set_uuid const char *  uuid  ) 
 

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.

int CIAO::DomainApplicationManager_Impl::split_plan void   )  [protected]
 

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.

void CIAO::DomainApplicationManager_Impl::start  )  throw (CORBA::SystemException, ::Deployment::StartError) [virtual]
 

Starts the application. Raises the StartError exception if starting the application fails.

void CIAO::DomainApplicationManager_Impl::startLaunch const ::Deployment::Properties &  configProperty,
::CORBA::Boolean  start
throw (CORBA::SystemException, ::Deployment::ResourceNotAvailable, ::Deployment::StartError, ::Deployment::InvalidProperty) [virtual]
 

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.

Deployment::Connections * CIAO::DomainApplicationManager_Impl::subtract_connections const Deployment::Connections &  left,
const Deployment::Connections &  right
[protected]
 

Remove those appeared in <right> from the <left>.

void CIAO::DomainApplicationManager_Impl::synchronize_shared_components_with_node_managers void   )  [protected]
 

Contact each NodeManager to get shared compnents information and then update its internal cache.


Member Data Documentation

::Deployment::Connections_var CIAO::DomainApplicationManager_Impl::all_connections_ [protected]
 

Maintain a list of <connections>, each of which is obtained by calling the startLaunch() method on the NodeApplicationManager object.

Chained_Artifacts_Table CIAO::DomainApplicationManager_Impl::artifact_map_ [protected]
 

Deployment_Configuration CIAO::DomainApplicationManager_Impl::deployment_config_ [protected]
 

Deployment Configuration info, which contains the deployment topology.

const char* CIAO::DomainApplicationManager_Impl::deployment_file_ [protected]
 

The deployment information data file.

CORBA::String_var CIAO::DomainApplicationManager_Impl::domainapp_path_ [protected]
 

location of the Domainapplication

Execution_Manager::Execution_Manager_Impl* CIAO::DomainApplicationManager_Impl::execution_manager_ [protected]
 

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.

CORBA::String_var CIAO::DomainApplicationManager_Impl::ior_ [protected]
 

Cache the ior of the previous reference.

bool CIAO::DomainApplicationManager_Impl::is_redeployment_ [protected]
 

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".

ACE_Vector<ACE_CString> CIAO::DomainApplicationManager_Impl::node_manager_names_ [protected]
 

The list of node manager names, each of them corresponds to one child plan.

size_t CIAO::DomainApplicationManager_Impl::num_child_plans_ [protected]
 

Total number of child deployment plans.

Deployment::DeploymentPlan CIAO::DomainApplicationManager_Impl::old_plan_ [protected]
 

Cached old deployment plan, i.e., before redeployment.

CORBA::ORB_var CIAO::DomainApplicationManager_Impl::orb_ [protected]
 

Keep a pointer to the managing ORB serving this servant.

Deployment::DeploymentPlan CIAO::DomainApplicationManager_Impl::plan_ [protected]
 

Cached deployment plan for the particular domain. The plan will be initialized when init is called.

PortableServer::POA_var CIAO::DomainApplicationManager_Impl::poa_ [protected]
 

Keep a pointer to the managing POA.

Deployment::ComponentPlans_var CIAO::DomainApplicationManager_Impl::shared_ [protected]
 

Cache a list of shared components.

Deployment::TargetManager_var CIAO::DomainApplicationManager_Impl::target_manager_ [protected]
 

Cached TargetManager.

CORBA::String_var CIAO::DomainApplicationManager_Impl::uuid_ [protected]
 

UUID from the Plan.


The documentation for this class was generated from the following files:
Generated on Thu Feb 16 04:16:47 2006 for DAnCE by  doxygen 1.3.9.1