summaryrefslogtreecommitdiff
path: root/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.h
diff options
context:
space:
mode:
Diffstat (limited to 'CIAO/DAnCE/NodeApplication/NodeApplication_Impl.h')
-rw-r--r--CIAO/DAnCE/NodeApplication/NodeApplication_Impl.h397
1 files changed, 0 insertions, 397 deletions
diff --git a/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.h b/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.h
deleted file mode 100644
index ee1878ff07d..00000000000
--- a/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.h
+++ /dev/null
@@ -1,397 +0,0 @@
-//$Id$
-
-/**========================================================
- *
- * @file NodeApplication_Impl.h
- *
- * @Brief This file contains the implementation of
- * the NodeApplication interface.
- *
- * @author Tao Lu <lu@dre.vanderbilt.edu>
- * @author Gan Deng <dengg@dre.vanderbilt.edu>
- *========================================================*/
-
-#ifndef NODEAPPLICATION_IMPL_H
-#define NODEAPPLICATION_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/Synch.h"
-#include "ace/Synch_Traits.h"
-#include "ace/SString.h"
-#include "ace/Hash_Map_Manager_T.h"
-#include "tao/ORB.h"
-#include "ciao/Deployment_CoreS.h"
-#include "ciao/Server_init.h"
-#include "ciao/CIAO_common.h"
-#include "ciao/Object_Set_T.h"
-#include "ciaosvcs/Events/CIAO_EventService_Factory_impl.h"
-#include "ciaosvcs/Events/CIAO_Events_Base/CIAO_EventsS.h"
-
-#include "NodeApp_Configurator.h"
-#include "Container_Base.h"
-
-using CIAO::Utility::write_IOR;
-
-/**
- *
- * @class NodeApplication_Impl
- *
- * @brief This class implements the NodeApplication interface.
- * This interface is semantically very simillar to container
- * in the old DnC spec. However this class will also be used
- * as a Server for hosting home/component. This way we reduce the
- * complexity of the framework by omitting the componentserver layer.
- *
- * @@TODO add configuration capabilities. Threading is one of them.
- *
- * @@Assumptions:
- * 1. Now the implementation is not thread safe.
- * // @@Gan, the above assumption is _really_ bad. Could you please
- * use the lock in the imeplementation to do some simple
- * prootections.
- **/
-
-namespace CIAO
-{
- // @@ Gan, as we discussed before can you please wrap this
- // implementation in a namespace Node_Application or whatever to
- // signify that it belongs to another software piece of CIAO?
- class NodeApplication_Impl
- : public virtual POA_Deployment::NodeApplication
- {
- public:
- enum Component_State
- {
- NEW_BORN, PRE_ACTIVE, ACTIVE, POST_ACTIVE, PASSIVE, DEACTIVATED
- };
-
- typedef struct _component_state_info
- {
- Components::CCMObject_var objref_;
- Component_State state_;
- } Component_State_Info;
-
- NodeApplication_Impl (CORBA::ORB_ptr o,
- PortableServer::POA_ptr p,
- NodeApp_Configurator &c,
- const Static_Config_EntryPoints_Maps* static_entrypts_maps =0);
-
- /// Default destructor.
- virtual ~NodeApplication_Impl (void);
-
- /**
- * @method finishLaunch
- *
- * @brief This operation dose 2 things.
- * 1. Get the external connction (facet and Event source)
- * and connect them to the local receptacle/event sink.
- * 2. If the start augment is true, start the Components.
- * @Note:
- * The connection containes the object ref of the provided object
- * reference (facet/event consumer) of components from other NodeApplications.
- * However the name field stores the name of the port on the local component.
- */
- virtual void
- finishLaunch (const Deployment::Connections & connections,
- CORBA::Boolean start,
- CORBA::Boolean add_connection
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::StartError,
- Deployment::InvalidConnection));
-
- /**
- * @method start
- */
- virtual void
- start (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::StartError));
-
- /*------------- CIAO specific IDL operations (idl)----------
- *
- *-----------------------------------------------------------*/
-
- /**
- * @method ciao_preactivate
- */
- virtual void
- ciao_preactivate (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::StartError));
-
- /**
- * @method ciao_postactivate
- */
- virtual void
- ciao_postactivate (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::StartError));
-
- /**
- * @method ciao_passivate
- */
- virtual void
- ciao_passivate (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::StopError));
-
- /// Initialize the NodeApplication
- virtual CORBA::Long init (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
- /// Start install homes and components.
- virtual ::Deployment::ComponentInfos *
- install (const ::Deployment::NodeImplementationInfo & node_impl_info
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException,
- ::Deployment::UnknownImplId,
- ::Deployment::ImplEntryPointNotFound,
- ::Deployment::InstallationFailure,
- ::Components::InvalidConfiguration));
-
- /// Install a number of CIAO_Event_Service objects within the NA
- virtual ::Deployment::CIAO_Event_Services *
- install_es (const ::Deployment::ESInstallationInfos & es_infos
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((::CORBA::SystemException,
- ::Deployment::InstallationFailure));
-
- /// Get the object reference of the NodeApplicationManager.
- /// This might come in handy later.
- virtual ::CORBA::Object_ptr
- get_node_application_manager (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
- /// Access the readonly attribute.
- virtual ::Deployment::Properties *
- properties (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
- /// Remove a component instance from the NodeApplication
- virtual void remove_component (const char * inst_name
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((::CORBA::SystemException,
- ::Components::RemoveFailure));
-
- virtual void activate_component (const char * name
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((::CORBA::SystemException,
- ::Deployment::StartError));
-
- virtual void passivate_component (const char * name
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((::CORBA::SystemException,
- ::Components::RemoveFailure));
-
- /// Remove everything inside including all components and homes.
- virtual void remove (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
- /// Create a container interface, which will be hosted in this NodeApplication.
- virtual ::Deployment::Container_ptr
- create_container (const ::Deployment::Properties &properties
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException,
- ::Components::CreateFailure,
- ::Components::InvalidConfiguration));
-
- /// Remove a container interface.
- virtual void remove_container (::Deployment::Container_ptr cref
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException,
- ::Components::RemoveFailure));
-
- /// Get all container object refs
- virtual ::Deployment::Containers * get_containers (
- ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
- /*------------- CIAO specific helper functions (C++)---------
- *
- *-----------------------------------------------------------*/
-
- /// Get the containing POA. This operation does *not*
- /// increase the reference count of the POA.
- virtual PortableServer::POA_ptr _default_POA (void);
-
- /// Return the cached object reference of this NodeApplication object.
- /// This operation does *NOT* increase the reference count.
- ::Deployment::NodeApplication_ptr
- get_objref (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS);
-
- /*------- CIAO helper functions for pub/sub service -------
- *
- *--------------------------------------------------------*/
-
- /// Set up a connection using the CIAO_Event_Service, which
- /// is available as a field in the <Deployment::Connection>
- /// struct type.
- /// If <add_or_remove> input parameter is true, then we will
- /// add the event connection, otherwise we will remove the
- /// event connection.
- void build_event_connection (
- const Deployment::Connection & connection,
- bool add_or_remove
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((Deployment::InvalidConnection,
- CORBA::SystemException));
-
- protected:
- /// If <add_connection> is "false", then we shall "remove"
- /// the connections, otherwise we will add these connections.
- virtual void
- finishLaunch_i (const Deployment::Connections & connections,
- CORBA::Boolean start,
- CORBA::Boolean add_connection
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::StartError,
- Deployment::InvalidConnection));
- virtual void
- handle_facet_receptable_connection (
- Components::CCMObject_ptr comp,
- const Deployment::Connection & connection,
- CORBA::Boolean add_connection)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::InvalidConnection));
-
- virtual void
- handle_emitter_consumer_connection (
- Components::CCMObject_ptr comp,
- const Deployment::Connection & connection,
- CORBA::Boolean add_connection)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::InvalidConnection));
-
- virtual void
- handle_publisher_consumer_connection (
- Components::CCMObject_ptr comp,
- const Deployment::Connection & connection,
- CORBA::Boolean add_connection)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::InvalidConnection));
-
- virtual bool
- _is_es_consumer_conn (Deployment::Connection conn);
-
- virtual bool
- _is_publisher_es_conn (Deployment::Connection conn);
-
- /// Register the publisher to the CIAO event service
- /// The only fields of <connection> struct used in this method
- /// are: <type>, <event_service>, <instanceName>, <portName>.
- virtual void
- handle_publisher_es_connection (
- Components::CCMObject_ptr comp,
- const Deployment::Connection & connection,
- CORBA::Boolean add_connection)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::InvalidConnection));
-
- /// Register the consumer to the CIAO event service
- virtual void
- handle_es_consumer_connection (
- const Deployment::Connection & connection,
- CORBA::Boolean add_connection)
- ACE_THROW_SPEC ((CORBA::SystemException,
- Deployment::InvalidConnection));
-
- /// Create and initialize all the containers
- virtual CORBA::Long create_all_containers (
- const ::Deployment::ContainerImplementationInfos & container_infos
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
- /// Create a "key" for the connection
- virtual ACE_CString *
- create_connection_key (const Deployment::Connection & connection);
-
- /// To build a map between a component instance and its container
- typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
- Deployment::Container_var,
- ACE_Hash<ACE_CString>,
- ACE_Equal_To<ACE_CString>,
- ACE_Null_Mutex> Component_Container_Map;
- typedef Component_Container_Map::iterator Component_Container_Iterator;
- Component_Container_Map component_container_map_;
-
-
- /// To store all created Component objects as well as their lifecycle
- /// states..
- typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
- Component_State_Info,
- ACE_Hash<ACE_CString>,
- ACE_Equal_To<ACE_CString>,
- ACE_Null_Mutex> CCMComponent_Map;
- typedef CCMComponent_Map::iterator Component_Iterator;
- CCMComponent_Map component_state_map_;
-
- /// A Map which stores all the connection cookies
- typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
- ::Components::Cookie_var,
- ACE_Hash<ACE_CString>,
- ACE_Equal_To<ACE_CString>,
- ACE_Null_Mutex> Cookie_Map;
- typedef Cookie_Map::iterator Cookie_Map_Iterator;
- Cookie_Map cookie_map_;
-
- /// Synchronize access to the object set.
- TAO_SYNCH_MUTEX lock_;
-
- /// Keep a list of managed Container objects.
- Object_Set<Deployment::Container, Deployment::Container_var> container_set_;
-
- /// Keep a pointer to the managing ORB serving this servant.
- CORBA::ORB_var orb_;
-
- /// Keep a pointer to the managing POA.
- // @@Gan/Jai, which POA is this? Same as the component POA or a
- // different one. My sense is that its different. Could you please
- //document it?
- PortableServer::POA_var poa_;
-
- // Configurator for allocating NodeApp resources and policies
- NodeApp_Configurator &configurator_;
-
- /// Cached properties
- Deployment::Properties properties_;
-
- /// And a reference to the NodeApplicationManager that created us.
- ::CORBA::Object_var node_app_manager_;
-
- /// Cache the object reference (of ourselves).
- ::Deployment::NodeApplication_var objref_;
-
- /// A factory to create CIAO event services
- EventService_Factory_impl es_factory_;
-
- /// Cache the (NA specific) installation info of all the
- /// CIAO_Event_Services
- typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
- ::Deployment::ESInstallationInfos_var,
- ACE_Hash<ACE_CString>,
- ACE_Equal_To<ACE_CString>,
- ACE_Null_Mutex> ES_Installation_Map;
- typedef ES_Installation_Map::iterator ES_Installation_Map_Iterator;
- ES_Installation_Map es_info_map_;
-
- const Static_Config_EntryPoints_Maps* static_entrypts_maps_;
- private:
- /// Default constructor, noop
- NodeApplication_Impl(void);
- };
-}
-
-#if defined (__ACE_INLINE__)
-# include "NodeApplication_Impl.inl"
-#endif /* __ACE_INLINE__ */
-
-#include /**/ "ace/post.h"
-#endif /* NODEAPPLICATION_IMPL_H */