diff options
Diffstat (limited to 'CIAO/docs/templates/CIAO_Glue_Session_Template.h')
-rw-r--r-- | CIAO/docs/templates/CIAO_Glue_Session_Template.h | 733 |
1 files changed, 0 insertions, 733 deletions
diff --git a/CIAO/docs/templates/CIAO_Glue_Session_Template.h b/CIAO/docs/templates/CIAO_Glue_Session_Template.h deleted file mode 100644 index 053933f776e..00000000000 --- a/CIAO/docs/templates/CIAO_Glue_Session_Template.h +++ /dev/null @@ -1,733 +0,0 @@ -// $Id$ - -// =========================================================== -// -// @file CIAO_Glue_Session_Template.h -// -// This is a pseudo-meta generic servant implementations template -// for CIAO's CIDL compiler. It demonstrates how a servant -// implementation for a session component should look like. -// -// The generated filename for files using this template shoule be -// [idl-basename]_svnt.h -// -// @author Nanbor Wang <nanbor@cs.wustl.edu> -// -// =========================================================== - -#ifndef CIAO_GLUE_SESSION_[idl-basename]_SVNT_H -#define CIAO_GLUE_SESSION_[idl-basename]_SVNT_H -#include /**/ "ace/pre.h" - -#include "[idl-name]S.h" // Source in the skeletons for component - // client-view equivalent interfaces -#include "[idl-name]EC.h" // Source in the executor mapping - // that component implementations use -#include "ciao/Container_Base.h" //Source in the container interface definitions -#include "tao/LocalObject.h" -#include "tao/PortableServer/Key_Adapters.h" -#include "ace/Active_Map_Manager_T.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -/// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -/// @@@ Notice that all component and interface names need to be -/// fully qualified as we are creating a new namespace for the CIAO's -/// container glue code. -/// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - -##if component is defined withing a [module name] -namespace CIAO_GLUE_[module_name] -##else -namespace CIAO_GLUE -##endif -{ - - ////////////////////////////////////////////////////////////////// - // Facet Glue Code implementation - // @@ We are assuming that these facets are declared under the same - // module as the component (thus, we are placing this glue code - // here under the same namespace. If they are not, we will - // either be generating them in separate namespaces, or include - // some other CIDL generated files to get the glue code - // implementation. - -##foreach [facet type] in (all facet interface types in the original IDL) - class [SERVANT]_Export [facet type]_Servant : - : public virtual POA_[facet type] // full skeleton name here - { - public: - // Constructor and destructor. - [facet type]_Servant (CCM_[facet type]_ptr executor, - ::Components::CCMContext_ptr ctx); - ~[facet tyep]_Servant (); - -## foreach [operation] in (all facet operations) - // Generate operation decls. -## end foreach [operation] - - // get_component implementation. - virtual CORBA::Object_ptr - _get_component (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - protected: - // Facet executor. - CCM_[facet type]_var executor_; - - // Context object. - ::Components::CCMContext_var ctx_; - }; -##end foreach [facet type] - - - ////////////////////////////////////////////////////////////////// - // Component specific context implementation - class [SERVANT]_Export [component name]_Context : - public virtual CCM_[component name]_Context, - public virtual TAO_Local_RefCounted_Object - { - public: - // We will allow the the servant glue code we generate to access - // our states. - friend class [component name]_Servant; - - // Ctor. - [component name]_Context (::Components::CCMHome_ptr home, - ::CIAO::Session_Container *c, - [component name]_Servant *sv); - - // Dtor. - virtual ~[component name]_Context (); - - // Operations for [component name] event source, and - // receptacles defined in CCM_[component name]_Context. - -##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate: -## if [receptacle name] is a simplex receptacle ('uses') - [uses type]_ptr - get_connection_[receptacle name] (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); -## else ([receptacle name] is a multiplex ('uses multiple') receptacle) - // [receptacle name]Connections typedef'ed as a sequence of - // struct [receptacle name]Connection. - [receptacle name]Connections * - get_connections_[receptacle name] (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS); - ACE_THROW_SPEC ((CORBA::SystemException)); -## endif [receptacle name] -##end foreach [receptacle name] with [uses type] - -##foreach [event name] with [eventtype] in (list of all event sources) generate: - void push_[event name] ([eventtype] *ev - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); -##end foreach [event name] with [eventtype] - - // Operations for ::Components::CCMContext - virtual ::Components::Principal_ptr - get_caller_principal (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual ::Components::CCMHome_ptr - get_CCM_home (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual CORBA::Boolean - get_rollback_only (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::IllegalState)); - - virtual ::Components::Transaction::UserTransaction_ptr - get_user_transaction (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::IllegalState)); - - virtual CORBA::Boolean - is_caller_in_role (const char * role - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual void - set_rollback_only (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::IllegalState)); - - // Operations for ::Components::SessionContext interface - virtual CORBA::Object_ptr - get_CCM_object (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::IllegalState)); - protected: - // We need to generate, in protected section, stuff that manage - // connections and consumers of this component. - -##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate: -## if [receptacle name] is a simplex receptacle ('uses') - // Simplex [receptacle name] connection management operations - void - connect_[receptacle name] ([uses type]_ptr c - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::AlreadyConnected, - ::Components::InvalidConnection)); - - [uses type]_ptr - disconnect_[receptacle name] (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::NoConnection)); - - // Simplex [receptacle name] connection - [uses type]_var ciao_uses_[receptacle name]_; - -## else ([receptacle name] is a multiplex ('uses multiple') receptacle) - // Multiplex [receptacle name] connection management operations - ::Components::Cookie * - connect_[receptacle name] ([uses type]_ptr c - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::ExceedConnectionLimit, - ::Components::InvalidConnection)); - - [uses type]_ptr - disconnect_[receptacle name] (::Components::Cookie *ck - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::InvalidConnection)); - - // Multiplex [receptacle name] connections - - ACE_Active_Map_Manager<[uses type]_var> ciao_muses_[receptacle name]_; -## endif [receptacle name] -##end foreach [receptacle name] with [uses type] - - // Operations for emits interfaces. -##foreach [emit name] with [eventtype] in (list of all emitters) generate: - void - connect_[emit name] ([eventtype]Consumer_ptr c - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::AlreadyConnected)); - - [eventtype]Consumer_ptr - disconnect_[emit name] (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::NoConnection)); - - [eventtype]Consumer_var ciao_emits_[emit name]_consumer_; -##end foreach [emit name] with [eventtype] - - // Operations for publishes interfaces. -##foreach [publish name] with [eventtype] in (list of all publishers) generate: - ::Components::Cookie * - subscribe_[publish name] ([eventtype]Consumer_ptr c - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::ExceededConnectionLimit)); - - [eventtype]Consumer_ptr - unsubscribe_[publish name] (::Components::Cookie *ck - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::InvalidConnection)); - - ACE_Active_Map_Manager<[eventtype]Consumer_var> ciao_publishes_[publish name]_map_; -##end foreach [publish name] with [eventtype] - - protected: - /// Cached component home reference. - ::Components::CCMHome_var home_; - - /// session container - ::CIAO::Session_Container *container_; - - /// Reference back to owner. - [component name]_Servant *servant_; - - /// @@ Cached component reference. - [component name]_var component_; - - }; - - ////////////////////////////////////////////////////////////////// - // Component Servant Glue code implementation - class [SERVANT]_Export [component name]_Servant - : public virtual POA_[component name] // full skeleton name here - { - public: - // Ctor. - [component name]_Servant (CCM_[component name]_ptr executor, - ::Components::CCMHome_ptr home, - ::CIAO::Session_Container *c); - - // Dtor. - ~[component name]_Servant (void); - -##foreach [operation] in all supported interfaces of own component and all inherited components and attribute accessors/mutators - - // Generate the [operation] here. - -##end - - // Operations for provides interfaces. -##foreach [facet name] with [facet type] in (list of all provided interfaces) generate: - virtual [facet type]_ptr - provide_[facet name] (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); -##end foreach [facet name] with [facet type] - - // Operations for receptacles interfaces. - -##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate: -## if [receptacle name] is a simplex receptacle ('uses') - // Simplex [receptacle name] connection management operations - virtual void - connect_[receptacle name] ([uses type]_ptr c - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::AlreadyConnected, - ::Components::InvalidConnection)); - - virtual [uses type]_ptr - disconnect_[receptacle name] (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::NoConnection)); - - virtual [uses type]_ptr - get_connection_[receptacle name] (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); -## else ([receptacle name] is a multiplex ('uses multiple') receptacle) - // Multiplex [receptacle name] connection management operations - virtual ::Components::Cookie * - connect_[receptacle name] ([uses type]_ptr c - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::ExceedConnectionLimit, - ::Components::InvalidConnection)); - - virtual [uses type]_ptr - disconnect_[receptacle name] (::Components::Cookie *ck - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::InvalidConnection)); - - virtual [receptacle name]Connections * - get_connections_[receptacle name] (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); -## endif [receptacle name] -##end foreach [receptacle name] with [uses type] - - // Operations for consumers interfaces. -##foreach [consumer name] with [eventtype] in (list of all consumers) generate: - - // First we need to generate the event sink specific servant - class [SERVANT]_Export [eventtype]Consumer_[consumer name]_Servant - : public virtual POA_[eventtype]Consumer // full skeleton name here - { - public: - // Constructor and destructor. - [event type]Consumer_[consumer name]_Servant (CCM_[component name]_ptr executor, - CCM_[component name]_Context_ptr c); - - ~[event type]Consumer_[consumer name]_Servant (); - -## foreach [type] in ([eventtype] and all its parent eventtype, if any) - virtual void push_[type] ([type] *evt - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); -## end [type] - - // Inherit from ::Compopnents::EventConsumerBase - virtual void push_event (::Components::EventBase *ev - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::BadEventType)); - - // get_component implementation. - virtual CORBA::Object_ptr - _get_component (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - protected: - // Executor - CCM_[component name]_var executor_; - - // Context object. - CCM_[component name]_Context_var ctx_; - }; - - virtual [eventtype]Consumer_ptr - get_consumer_[consumer name] (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); -##end foreach [consumer name] with [eventtype] - - // Operations for emits interfaces. -##foreach [emit name] with [eventtype] in (list of all emitters) generate: - virtual void - connect_[emit name] ([eventtype]Consumer_ptr c - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException - ::Components::AlreadyConnected)); - - virtual [eventtype]Consumer_ptr - disconnect_[emit name] (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::NoConnection)); -##end foreach [emit name] with [eventtype] - - // Operations for publishes interfaces. -##foreach [publish name] with [eventtype] in (list of all publishers) generate: - virtual ::Components::Cookie * - subscribe_[publish name] ([eventtype]Consumer_ptr c - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::ExceededConnectionLimit)); - - virtual [eventtype]Consumer_ptr - unsubscribe_[publish name] (::Components::Cookie *ck - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::InvalidConnection)); -##end foreach [publish name] with [eventtype] - - // Operations for Navigation interface - virtual CORBA::Object_ptr - provide_facet (const char * name - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException , - Components::InvalidName)) ; - - virtual ::Components::FacetDescriptions * - get_all_facets (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual ::Components::FacetDescriptions * - get_named_facets (const Components::NameList & names - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException , - Components::InvalidName)); - - virtual CORBA::Boolean - same_component (CORBA::Object_ptr object_ref - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - // Operations for Receptacles interface - virtual ::Components::Cookie * - connect (const char * name, - CORBA::Object_ptr connection - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName, - Components::InvalidConnection, - Components::AlreadyConnected, - Components::ExceededConnectionLimit)); - - virtual CORBA::Object_ptr - disconnect (const char * name, - Components::Cookie *ck - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName, - Components::InvalidConnection, - Components::CookieRequired, - Components::NoConnection)); - - virtual ::Components::ConnectionDescriptions * - get_connections (const char * name - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName)); - - virtual ::Components::ReceptacleDescriptions * - get_all_receptacles (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual ::Components::ReceptacleDescriptions * - get_named_receptacles (const Components::NameList & names - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName)); - - // Operations for Events interface - virtual ::Components::EventConsumerBase_ptr - get_consumer (const char * sink_name - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName)); - - virtual ::Components::Cookie * - subscribe (const char * publisher_name, - Components::EventConsumerBase_ptr subscriber - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName, - Components::InvalidConnection, - Components::ExceededConnectionLimit)); - - virtual ::Components::EventConsumerBase_ptr - unsubscribe (const char * publisher_name, - Components::Cookie *ck - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName, - Components::InvalidConnection)); - - virtual void - connect_consumer (const char * emitter_name, - Components::EventConsumerBase_ptr consumer - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName, - Components::AlreadyConnected, - Components::InvalidConnection)); - - virtual ::Components::EventConsumerBase_ptr - disconnect_consumer (const char * source_name - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName, - Components::NoConnection)); - - virtual ::Components::ConsumerDescriptions * - get_all_consumers (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual ::Components::ConsumerDescriptions * - get_named_consumers (const Components::NameList & names - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName)); - - virtual ::Components::EmitterDescriptions * - get_all_emitters (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual ::Components::EmitterDescriptions * - get_named_emitters (const Components::NameList & names - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName)); - - virtual ::Components::PublisherDescriptions * - get_all_publishers (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual ::Components::PublisherDescriptions * - get_named_publishers (const Components::NameList & names - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidName)); - - // Operations for CCMObject interface - virtual ::CORBA::IRObject_ptr - get_component_def (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual ::Components::CCMHome_ptr - get_ccm_home (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual ::Components::PrimaryKeyBase * - get_primary_key (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::NoKeyAvailable)); - - virtual void - configuration_complete (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::InvalidConfiguration)); - - virtual void - remove (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::RemoveFailure)); - - virtual ::Components::ComponentPortDescription * - get_all_ports (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - // get_component implementation. - virtual CORBA::Object_ptr - _get_component (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - // CIAO specific operations. - - // Activate the object in the container_ - void - _ciao_activate (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - void - _ciao_passivate (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - protected: - // My Executor. - CCM_[component name]_var executor_; - - // My Run-time Context. - [component name]_Context *context_; - - // Managing container. - ::CIAO::Session_Container *container_; - - // Cached provided interfaces. -##foreach [facet name] with [facet type] in (list of all provided interfaces) generate: - [facet type]_var provide_[facet name]_; -##end foreach [facet name] with [facet type] - -##foreach [consumer name] with [eventtype] in (list of all consumers) generate: - [eventtype]Consumer_var consumes_[consumer name]_; -##end foreach [consumer name] with [eventtype] - - }; - - - ////////////////////////////////////////////////////////////////// - // Component Home Glue code implementation - - // Foreach component home - class [SERVANT]_Export [home name]_Servant : - public virtual POA_[home name] // full skeleton name here - { - public: - // Ctor. - [home name]_Servant (CCM_[home name]_ptr exe, - CIAO::Session_Container *c); - - // Dtor. - ~[home name]_Servant (void); - - // User defined and inherited operations -##foreach [operation] in (all explicit operations in [home basename] including its parents) - - // The operation decl here. - -## end foreach opeartion - - // Factory operations -##foreach [factory name] in (all factory operations in [home basename] including its parents) - // for factory operations inherit from parent home(s), they should return - // the corresponding component types their homes manage - virtual [component name]_ptr - [factory name] (.... ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::CreateFailure, - ....)); -##end foreach [factory name] - - // Finder operations -##foreach [finder name] in (all finder operations in [home basename] including its parents) - // for finder operations inherit from parent home(s), they should return - // the corresponding component types their homes manage - virtual [component name]_ptr - [finder name] (.... ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::FinderFailure, - ....)); -##end foreach [finder name] - -## if [home name] is a keyless home - - // Operations for KeylessHome interface - virtual ::Components::CCMObject_ptr - create_component (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::CreateFailure)); - -## else [home basename] is keyed home with [key type] - - // We do not support key'ed home at the moment but we might - // as well generate the mapping. - virtual [component name]_ptr create ([key type] *key - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::CreationFailure, - ::Components::DuplicateKeyValue, - ::Components::InvalidKey)); - - virtual [component name]_ptr - find_by_primary_key ([key type] *key - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::FinderFailure, - ::Components::UnknownKeyValue, - ::Components::InvalidKey)); - - virtual void remove ([key type] *key - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - ::Components::RemoveFailure, - ::Components::UnknownKeyValue, - ::Components::InvalidKey)); - - virtual [key type] * - get_primary_key ([component name]_ptr comp - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - -## endif (keyed or keyless home) - - // Operations for Implicit Home interface - virtual [component name]_ptr - create (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::CreateFailure)); - - // Operations for CCMHome interface - virtual ::CORBA::IRObject_ptr - get_component_def (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual ::CORBA::IRObject_ptr - get_home_def (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual void remove_component (Components::CCMObject_ptr comp - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - Components::RemoveFailure)); - - protected: - // Helper method for factory operations. - [component name]_ptr - _ciao_activate_component (CCM_[component name]_ptr exe - ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - void - _ciao_passivate_component ([component name]_ptr comp - ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - - // My Executor. - CCM_[home name]_var executor_; - - // My Container - CIAO::Session_Container *container_; - - // Components this home manages. - ACE_Hash_Map_Manager_Ex <PortableServer::ObjectId, - [component name]_Servant*, - TAO_ObjectId_Hash, - ACE_Equal_To<PortableServer::ObjectId>, - ACE_SYNCH_MUTEX> component_map_; - }; - -} - -extern "C" [SERVANT]_Export ::PortableServer::Servant -create[home name]_Servant (::Components::HomeExecutorBase_ptr p, - CIAO::Session_Container *c - ACE_ENV_ARG_DECL_WITH_DEFAULTS); - -#if defined (__ACE_INLINE__) -# include "[idl-name]_svnt.inl" -#endif /* __ACE_INLINE__ */ - - -#include /**/ "ace/post.h" -#endif /* CIAO_GLUE_SESSION_[idl-basename]_SVNT_H */ |