summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjai <jai@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-11-10 16:30:09 +0000
committerjai <jai@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-11-10 16:30:09 +0000
commit7331661ab9143ac7b3937b227a21460c5acdef8d (patch)
tree079ceae60983e7a7a5fe61515a8e20f526aa5933
parent216c8f1349fea6a4f143e91b38d3b493945044ac (diff)
downloadATCD-7331661ab9143ac7b3937b227a21460c5acdef8d.tar.gz
*** empty log message ***
-rw-r--r--TAO/CIAO/DAnCE/ciao/Dynamic_Component_Activator.cpp42
-rw-r--r--TAO/CIAO/DAnCE/ciao/Dynamic_Component_Activator.h96
-rw-r--r--TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_Base.h52
-rw-r--r--TAO/CIAO/DAnCE/ciao/Swapping_Container.cpp129
-rw-r--r--TAO/CIAO/DAnCE/ciao/Swapping_Container.h90
-rw-r--r--TAO/CIAO/DAnCE/ciao/Swapping_Container.inl10
-rw-r--r--TAO/CIAO/DAnCE/ciao/Swapping_Servant_Impl_Base.cpp44
-rw-r--r--TAO/CIAO/DAnCE/ciao/Swapping_Servant_Impl_Base.h65
-rw-r--r--TAO/CIAO/DAnCE/ciao/Swapping_Servant_Impl_T.cpp252
-rw-r--r--TAO/CIAO/DAnCE/ciao/Swapping_Servant_Impl_T.h119
-rw-r--r--TAO/CIAO/examples/Hello/Sender/New_Sender_svnt.cpp352
-rw-r--r--TAO/CIAO/examples/Hello/Sender/New_Sender_svnt.h273
12 files changed, 1524 insertions, 0 deletions
diff --git a/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Activator.cpp b/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Activator.cpp
new file mode 100644
index 00000000000..4229a199d47
--- /dev/null
+++ b/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Activator.cpp
@@ -0,0 +1,42 @@
+#include "Dynamic_Component_Activator.h"
+#include "CIAO_common.h"
+#include "ace/Log_Msg.h"
+#include "ace/OS_NS_string.h"
+
+ACE_RCSID (ciao,
+ Dynamic_Component_Activator,
+ "$Id$")
+
+namespace CIAO
+{
+ Dynamic_Component_Activator::Dynamic_Component_Activator (CORBA::ORB_ptr o)
+ : orb_ (CORBA::ORB::_duplicate (o))
+ {
+ }
+
+ Dynamic_Component_Activator::~Dynamic_Component_Activator (void)
+ {
+ }
+
+ PortableServer::Servant
+ Dynamic_Component_Activator::incarnate (const PortableServer::ObjectId &oid,
+ PortableServer::POA_ptr
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::ForwardRequest))
+ {
+ }
+
+ void
+ Dynamic_Component_Activator::etherealize (const PortableServer::ObjectId &,
+ PortableServer::POA_ptr ,
+ PortableServer::Servant ,
+ CORBA::Boolean ,
+ CORBA::Boolean
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ /// Need to investigate what needs to be handled here..
+ }
+
+}
diff --git a/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Activator.h b/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Activator.h
new file mode 100644
index 00000000000..e2a67d78eb5
--- /dev/null
+++ b/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Activator.h
@@ -0,0 +1,96 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Dynamic_Component_Activator.h
+ *
+ * $Id$
+ *
+ * @authors Jaiganesh Balasubramanian <jai@dre.vanderbilt.edu>
+ * Balachandran Natarajan <bala@dre.vanderbilt.edu>
+ */
+//=============================================================================
+
+#ifndef CIAO_DYNAMIC_SWAPPING_ACTIVATOR_H
+#define CIAO_DYNAMIC_SWAPPING_ACTIVATOR_H
+#include /**/ "ace/pre.h"
+
+#include "ace/Array_Base.h"
+#include "ciao/CIAO_Server_Export.h"
+#include "ciao/Dynamic_Component_Servant_Base.h"
+#include "tao/PortableServer/Key_Adapters.h"
+#include "ace/Hash_Map_Manager_T.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/PortableServer/PortableServer.h"
+#include "tao/LocalObject.h"
+
+#if defined(_MSC_VER)
+#pragma warning(push)
+#pragma warning(disable:4250)
+#endif /* _MSC_VER */
+
+namespace CIAO
+{
+ /**
+ * @class Dynamic_Component_Activator
+ *
+ * @brief Activator that is registered with the POA for facet and
+ * consumer servants.
+ *
+ */
+ class CIAO_SERVER_Export Dynamic_Component_Activator
+ : public virtual PortableServer::ServantActivator
+ , public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Dynamic_Component_Activator (CORBA::ORB_ptr o);
+
+ virtual ~Dynamic_Component_Activator (void);
+
+ /// Template methods overridden to get callbacks.
+ /**
+ * If you would like to know the details of the following two
+ * methods, please PortableServer documentation. This is probably
+ * not the place to document what these mean.
+ */
+ PortableServer::Servant incarnate (
+ const PortableServer::ObjectId &oid,
+ PortableServer::POA_ptr poa
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::ForwardRequest));
+
+ void etherealize (const PortableServer::ObjectId &oid,
+ PortableServer::POA_ptr adapter,
+ PortableServer::Servant servant,
+ CORBA::Boolean cleanup_in_progress,
+ CORBA::Boolean remaining_activations
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ private:
+ /// Pointer to our ORB
+ CORBA::ORB_var orb_;
+
+ /// Mutex that synchronizes access to the array.
+ ACE_SYNCH_MUTEX mutex_;
+
+ ACE_Hash_Map_Manager_Ex<PortableServer::ObjectId,
+ Dynamic_Component_Servant_Base *,
+ TAO_ObjectId_Hash,
+ ACE_Equal_To<PortableServer::ObjectId>,
+ ACE_SYNCH_MUTEX>
+ servant_map_;
+ };
+}
+
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif /* _MSC_VER */
+
+#include /**/ "ace/post.h"
+#endif /*CIAO_DYNAMIC_SWAPPING_ACTIVATOR_H*/
diff --git a/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_Base.h b/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_Base.h
new file mode 100644
index 00000000000..7831fd3a0d0
--- /dev/null
+++ b/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_Base.h
@@ -0,0 +1,52 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Dynamic_Component_Servant_Base.h
+ *
+ * $Id$
+ *
+ */
+//=============================================================================
+
+
+#ifndef CIAO_DYNAMIC_COMPONENT_SERVANT_BASE_H
+#define CIAO_DYNAMIC_COMPONENT_SERVANT_BASE_H
+
+#include /**/ "ace/pre.h"
+
+#include "CCM_ComponentS.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/PortableServer/PortableServer.h"
+#include "CIAO_Server_Export.h"
+
+namespace CIAO
+{
+ class CIAO_SERVER_Export Dynamic_Component_Servant_Base
+ {
+ public:
+ explicit Dynamic_Component_Servant_Base (void);
+
+ virtual ~Dynamic_Component_Servant_Base (void);
+
+ virtual PortableServer::Servant create (void) = 0;
+
+ };
+
+ template<typename COMP_SERVANT>
+ class Dynamic_Component_Servant : public Dynamic_Component_Servant_Base
+ {
+ public:
+ PortableServer::Servant create (void)
+ {
+ return new COMP_SERVANT;
+ }
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_DYNAMIC_COMPONENT_SERVANT_BASE_H */
diff --git a/TAO/CIAO/DAnCE/ciao/Swapping_Container.cpp b/TAO/CIAO/DAnCE/ciao/Swapping_Container.cpp
new file mode 100644
index 00000000000..bf8787ccca2
--- /dev/null
+++ b/TAO/CIAO/DAnCE/ciao/Swapping_Container.cpp
@@ -0,0 +1,129 @@
+// $Id$
+
+#include "Container_Base.h"
+#include "Swapping_Container.h"
+#include "ace/DLL.h"
+#include "tao/Utils/PolicyList_Destroyer.h"
+#include "ace/OS_NS_stdio.h"
+#include "Dynamic_Component_Activator.h"
+
+#if !defined (__ACE_INLINE__)
+# include "Swapping_Container.inl"
+#endif /* __ACE_INLINE__ */
+
+namespace CIAO
+{
+
+ ACE_Atomic_Op <ACE_SYNCH_MUTEX, long>
+ Swapping_Container::serial_number_ (0);
+
+ Swapping_Container::Swapping_Container (CORBA::ORB_ptr o)
+ : Container (o),
+ number_ (0)
+ {
+ }
+
+ Swapping_Container::~Swapping_Container ()
+ {
+ }
+
+ int
+ Swapping_Container::init (const char *name,
+ const CORBA::PolicyList *more_policies
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ char buffer[MAXPATHLEN];
+
+ if (name == 0)
+ {
+ this->number_ = ++Swapping_Container::serial_number_;
+ ACE_OS::sprintf (buffer, "CIAO::Swapping_Container-%ld",
+ this->number_);
+ name = buffer;
+ }
+
+ CORBA::Object_var poa_object =
+ this->orb_->resolve_initial_references("RootPOA"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (-1);
+
+ if (CORBA::is_nil (poa_object.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the POA.\n"),
+ -1);
+
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (poa_object.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (-1);
+
+ this->create_component_POA (name,
+ more_policies,
+ root_poa.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (-1);
+
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (-1);
+
+ poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (-1);
+
+ return 0;
+ }
+
+ void
+ Swapping_Container::create_component_POA (const char *name,
+ const CORBA::PolicyList *p,
+ PortableServer::POA_ptr root
+ ACE_ENV_ARG_DECL)
+ {
+ CORBA::PolicyList policies (0);
+
+ if (p != 0)
+ policies = *p;
+
+ PortableServer::POAManager_var poa_manager =
+ root->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ CORBA::ULong policy_length = policies.length ();
+ policies.length (policy_length + 1);
+
+ policies[policy_length] =
+ root->create_id_assignment_policy (PortableServer::USER_ID
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ policies.length (policy_length + 1);
+ policies[policy_length] =
+ root->create_request_processing_policy (PortableServer::USE_SERVANT_MANAGER
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ // Servant Retention Policy
+ policies.length (policy_length + 1);
+ policies[policy_length] =
+ root->create_servant_retention_policy (PortableServer::RETAIN
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ this->component_poa_ =
+ root->create_POA (name,
+ poa_manager.in (),
+ policies
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ ACE_NEW_THROW_EX (this->dsa_,
+ Dynamic_Component_Activator (this->orb_.in ()),
+ CORBA::NO_MEMORY ());
+
+ this->component_poa_->set_servant_manager (
+ this->dsa_
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+}
diff --git a/TAO/CIAO/DAnCE/ciao/Swapping_Container.h b/TAO/CIAO/DAnCE/ciao/Swapping_Container.h
new file mode 100644
index 00000000000..cd44386da70
--- /dev/null
+++ b/TAO/CIAO/DAnCE/ciao/Swapping_Container.h
@@ -0,0 +1,90 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Swapping_Container.h
+ *
+ * $Id$
+ *
+ * Header file for CIAO's Dynamic Swapping container implementations
+ *
+ * @author Jaiganesh Balasubramanian <jai@dre.vanderbilt.edu>
+ * Balachandran Natarajan <bala@dre.vanderbilt.edu>
+ */
+//=============================================================================
+
+
+#ifndef CIAO_SWAPPING_CONTAINER_H
+#define CIAO_SWAPPING_CONTAINER_H
+#include /**/ "ace/pre.h"
+
+#include "tao/ORB.h"
+#include "tao/PortableServer/PortableServer.h"
+#include "tao/PortableServer/Servant_Base.h"
+#include "ciao/CCM_ContainerC.h"
+#include "ciao/Container_Base.h"
+#include "ciao/Deployment_CoreC.h"
+#include "ciao/Dynamic_Component_Activator.h"
+#include "ciao/CIAO_Server_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace CIAO
+{
+ class CIAO_SERVER_Export Swapping_Container : public Session_Container
+ {
+ public:
+
+ Swapping_Container (CORBA::ORB_ptr o);
+
+ virtual ~Swapping_Container (void);
+
+ /// Initialize the container with a name.
+ virtual int init (const char *name = 0,
+ const CORBA::PolicyList *more_policies = 0
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ private:
+
+ /// Create POA for the component.
+ void create_component_POA (const char *name,
+ const CORBA::PolicyList *p,
+ PortableServer::POA_ptr root
+ ACE_ENV_ARG_DECL);
+ protected:
+ long number_;
+
+ static ACE_Atomic_Op <ACE_SYNCH_MUTEX, long> serial_number_;
+
+ Dynamic_Component_Activator *dsa_;
+
+ };
+}
+
+// Macro for registration of an OBV factory in the generated
+// servant class. Similar to the macro for TAO in
+// tao/ValueType/ValueFactory.h but here we take advantage of
+// the fact that we have access to the current ORB indirectly
+// through the context and container.
+#define CIAO_REGISTER_OBV_FACTORY(FACTORY, VALUETYPE) \
+ { \
+ CORBA::ValueFactory factory = new FACTORY; \
+ CORBA::ORB_ptr orb = \
+ this->context_->_ciao_the_Container ()->the_ORB (); \
+ CORBA::ValueFactory prev_factory = \
+ orb->register_value_factory ( \
+ VALUETYPE::_tao_obv_static_repository_id (), \
+ factory); \
+ CORBA::remove_ref (prev_factory); \
+ CORBA::add_ref (factory); \
+ }
+
+#if defined (__ACE_INLINE__)
+# include "Swapping_Container.inl"
+#endif /* __ACE_INLINE__ */
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_SWAPPING_CONTAINER_H */
diff --git a/TAO/CIAO/DAnCE/ciao/Swapping_Container.inl b/TAO/CIAO/DAnCE/ciao/Swapping_Container.inl
new file mode 100644
index 00000000000..b2c00a33346
--- /dev/null
+++ b/TAO/CIAO/DAnCE/ciao/Swapping_Container.inl
@@ -0,0 +1,10 @@
+// $Id$
+
+ACE_INLINE CORBA::Object_ptr
+CIAO::Swapping_Container::get_objref (PortableServer::Servant p
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->the_POA ()->servant_to_reference (p
+ ACE_ENV_ARG_PARAMETER);
+}
diff --git a/TAO/CIAO/DAnCE/ciao/Swapping_Servant_Impl_Base.cpp b/TAO/CIAO/DAnCE/ciao/Swapping_Servant_Impl_Base.cpp
new file mode 100644
index 00000000000..762cba8b7c3
--- /dev/null
+++ b/TAO/CIAO/DAnCE/ciao/Swapping_Servant_Impl_Base.cpp
@@ -0,0 +1,44 @@
+// $Id$
+
+#include "Swapping_Servant_Impl_Base.h"
+
+namespace CIAO
+{
+ Swapping_Servant_Impl_Base::Swapping_Servant_Impl_Base (void)
+ {
+ ACE_ASSERT (0);
+ }
+
+ Swapping_Servant_Impl_Base::Swapping_Servant_Impl_Base
+ (Swapping_Container * c)
+ : container_ (c)
+ {
+ }
+
+ Swapping_Servant_Impl_Base::~Swapping_Servant_Impl_Base (void)
+ {
+ }
+
+ // Operations for CCMHome interface.
+
+ CORBA::IRObject_ptr
+ Swapping_Servant_Impl_Base::get_component_def (
+ ACE_ENV_SINGLE_ARG_DECL
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (),
+ CORBA::IRObject::_nil ());
+ }
+
+ CORBA::IRObject_ptr
+ Swapping_Servant_Impl_Base::get_home_def (
+ ACE_ENV_SINGLE_ARG_DECL
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (),
+ CORBA::IRObject::_nil ());
+ }
+
+}
diff --git a/TAO/CIAO/DAnCE/ciao/Swapping_Servant_Impl_Base.h b/TAO/CIAO/DAnCE/ciao/Swapping_Servant_Impl_Base.h
new file mode 100644
index 00000000000..31b989d86ba
--- /dev/null
+++ b/TAO/CIAO/DAnCE/ciao/Swapping_Servant_Impl_Base.h
@@ -0,0 +1,65 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Swapping_Servant_Impl_Base.h
+ *
+ * $Id$
+ *
+ */
+//=============================================================================
+
+
+#ifndef CIAO_SWAPPING_SERVANT_IMPL_BASE_H
+#define CIAO_SWAPPING_SERVANT_IMPL_BASE_H
+
+#include /**/ "ace/pre.h"
+
+#include "CCM_ComponentS.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "CIAO_Server_Export.h"
+
+namespace CIAO
+{
+ class Swapping_Container;
+
+ /**
+ * @class Swapping_Servant_Impl_Base
+ *
+ * @brief Non-template base class for Home_Servant_Impl.
+ *
+ * Holds the non-template parts of its child class
+ * Home_Servant_Impl.
+ */
+ class CIAO_SERVER_Export Swapping_Servant_Impl_Base
+ : public virtual POA_Components::CCMHome
+ {
+ public:
+ explicit Swapping_Servant_Impl_Base (void);
+
+ Swapping_Servant_Impl_Base (Swapping_Container * c);
+
+ virtual ~Swapping_Servant_Impl_Base (void);
+
+ // 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));
+
+ protected:
+ Swapping_Container *container_;
+ };
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_SWAPPING_SERVANT_IMPL_BASE_H */
diff --git a/TAO/CIAO/DAnCE/ciao/Swapping_Servant_Impl_T.cpp b/TAO/CIAO/DAnCE/ciao/Swapping_Servant_Impl_T.cpp
new file mode 100644
index 00000000000..5b281bc29f4
--- /dev/null
+++ b/TAO/CIAO/DAnCE/ciao/Swapping_Servant_Impl_T.cpp
@@ -0,0 +1,252 @@
+// $Id$
+
+#ifndef CIAO_SWAPPING_SERVANT_IMPL_T_C
+#define CIAO_SWAPPING_SERVANT_IMPL_T_C
+
+#include "Swapping_Servant_Impl_T.h"
+
+namespace CIAO
+{
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename EXEC_VAR,
+ typename COMP,
+ typename COMP_VAR,
+ typename COMP_EXEC,
+ typename COMP_EXEC_VAR,
+ typename COMP_SVNT>
+ Swapping_Servant_Impl<BASE_SKEL,
+ EXEC,
+ EXEC_VAR,
+ COMP,
+ COMP_VAR,
+ COMP_EXEC,
+ COMP_EXEC_VAR,
+ COMP_SVNT>::Swapping_Servant_Impl (
+ EXEC * exe,
+ SWapping_Container * c
+ )
+ : Swapping_Servant_Impl_Base (c),
+ executor_ (EXEC::_duplicate (exe))
+ {
+ }
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename EXEC_VAR,
+ typename COMP,
+ typename COMP_VAR,
+ typename COMP_EXEC,
+ typename COMP_EXEC_VAR,
+ typename COMP_SVNT>
+ Swapping_Servant_Impl<BASE_SKEL,
+ EXEC,
+ EXEC_VAR,
+ COMP,
+ COMP_VAR,
+ COMP_EXEC,
+ COMP_EXEC_VAR,
+ COMP_SVNT>::~Swapping_Servant_Impl (void)
+ {
+ }
+
+ // Operations for CCMHome interface.
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename EXEC_VAR,
+ typename COMP,
+ typename COMP_VAR,
+ typename COMP_EXEC,
+ typename COMP_EXEC_VAR,
+ typename COMP_SVNT>
+ void
+ Swapping_Servant_Impl<BASE_SKEL,
+ EXEC,
+ EXEC_VAR,
+ COMP,
+ COMP_VAR,
+ COMP_EXEC,
+ COMP_EXEC_VAR,
+ COMP_SVNT>::remove_component (
+ ::Components::CCMObject_ptr comp
+ ACE_ENV_ARG_DECL
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::RemoveFailure))
+ {
+ COMP_VAR _ciao_comp = COMP::_narrow (comp
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ if (CORBA::is_nil (_ciao_comp.in ()))
+ {
+ ACE_THROW (CORBA::INTERNAL ());
+ }
+
+ _ciao_comp->remove (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ this->_ciao_passivate_component (_ciao_comp.in ()
+ ACE_ENV_ARG_PARAMETER);
+ }
+
+ // Operations for keyless home interface.
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename EXEC_VAR,
+ typename COMP,
+ typename COMP_VAR,
+ typename COMP_EXEC,
+ typename COMP_EXEC_VAR,
+ typename COMP_SVNT>
+ Components::CCMObject_ptr
+ Swapping_Servant_Impl<BASE_SKEL,
+ EXEC,
+ EXEC_VAR,
+ COMP,
+ COMP_VAR,
+ COMP_EXEC,
+ COMP_EXEC_VAR,
+ COMP_SVNT>::create_component (
+ ACE_ENV_SINGLE_ARG_DECL
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CreateFailure))
+ {
+ return this->create (ACE_ENV_SINGLE_ARG_PARAMETER);
+ }
+
+ // Operations for implicit home interface.
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename EXEC_VAR,
+ typename COMP,
+ typename COMP_VAR,
+ typename COMP_EXEC,
+ typename COMP_EXEC_VAR,
+ typename COMP_SVNT>
+ COMP *
+ Swapping_Servant_Impl<BASE_SKEL,
+ EXEC,
+ EXEC_VAR,
+ COMP,
+ COMP_VAR,
+ COMP_EXEC,
+ COMP_EXEC_VAR,
+ COMP_SVNT>::create (
+ ACE_ENV_SINGLE_ARG_DECL
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CreateFailure))
+ {
+ if (this->executor_.in () == 0)
+ {
+ ACE_THROW_RETURN (CORBA::INTERNAL (),
+ COMP::_nil ());
+ }
+
+ ::Components::EnterpriseComponent_var _ciao_ec =
+ this->executor_->create (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (COMP::_nil ());
+
+ COMP_EXEC_VAR _ciao_comp =
+ COMP_EXEC::_narrow (_ciao_ec.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (COMP::_nil ());
+
+ return this->_ciao_activate_component (_ciao_comp.in ()
+ ACE_ENV_ARG_PARAMETER);
+ }
+
+ // CIAO-specific operations.
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename EXEC_VAR,
+ typename COMP,
+ typename COMP_VAR,
+ typename COMP_EXEC,
+ typename COMP_EXEC_VAR,
+ typename COMP_SVNT>
+ COMP *
+ Swapping_Servant_Impl<BASE_SKEL,
+ EXEC,
+ EXEC_VAR,
+ COMP,
+ COMP_VAR,
+ COMP_EXEC,
+ COMP_EXEC_VAR,
+ COMP_SVNT>::_ciao_activate_component (
+ COMP_EXEC *exe
+ ACE_ENV_ARG_DECL
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ const char* obj_id = "composition_name_home_name";
+ const char* repo_id = "repo_id";
+
+ PortableServer::ObjectId_var oid =
+ PortableServer::string_to_ObjectId (obj_id);
+
+ CORBA::Object_var objref = this->container_->generate_reference
+ (obj_id, repo_id,
+ Container::Component
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (CORBA::Object::_nil ());
+
+ COMP_VAR ho = COMP::_narrow (objref.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (COMP::_nil ());
+
+ if (this->component_map_.bind (oid.in (), svt) == 0)
+ {
+ safe._retn ();
+ }
+
+ return ho._retn ();
+ }
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename EXEC_VAR,
+ typename COMP,
+ typename COMP_VAR,
+ typename COMP_EXEC,
+ typename COMP_EXEC_VAR,
+ typename COMP_SVNT>
+ void
+ Swapping_Servant_Impl<BASE_SKEL,
+ EXEC,
+ EXEC_VAR,
+ COMP,
+ COMP_VAR,
+ COMP_EXEC,
+ COMP_EXEC_VAR,
+ COMP_SVNT>::_ciao_passivate_component (
+ COMP *comp
+ ACE_ENV_ARG_DECL
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ PortableServer::ObjectId_var oid;
+ this->container_->uninstall_component (comp,
+ oid.out ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ COMP_SVNT *servant = 0;
+
+ if (this->component_map_.unbind (oid.in (), servant) == 0)
+ {
+ PortableServer::ServantBase_var safe (servant);
+
+ servant->_ciao_passivate (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+ }
+}
+
+#endif /* CIAO_SWAPPING_SERVANT_IMPL_T_C */
diff --git a/TAO/CIAO/DAnCE/ciao/Swapping_Servant_Impl_T.h b/TAO/CIAO/DAnCE/ciao/Swapping_Servant_Impl_T.h
new file mode 100644
index 00000000000..a7d936468c8
--- /dev/null
+++ b/TAO/CIAO/DAnCE/ciao/Swapping_Servant_Impl_T.h
@@ -0,0 +1,119 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Swapping_Servant_Impl_T.h
+ *
+ * $Id$
+ *
+ * This file contains the declaration of a mixin base class for
+ * the generated home servant class.
+ *
+ */
+//=============================================================================
+
+
+#ifndef CIAO_SWAPPING_SERVANT_IMPL_T_H
+#define CIAO_SWAPPING_SERVANT_IMPL_T_H
+
+#include /**/ "ace/pre.h"
+
+#include "Swapping_Servant_Impl_Base.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/PortableServer/Key_Adapters.h"
+#include "ace/Hash_Map_Manager_T.h"
+
+namespace CIAO
+{
+ class Swapping_Container;
+
+ /**
+ * @class Swapping_Servant_Impl
+ *
+ * @brief Mixin base class for generated home servant.
+ *
+ * This class implements operations
+ * common to all generated home servants.
+ */
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename EXEC_VAR,
+ typename COMP,
+ typename COMP_VAR,
+ typename COMP_EXEC,
+ typename COMP_EXEC_VAR,
+ typename COMP_SVNT>
+ class Swapping_Servant_Impl
+ : public virtual BASE_SKEL,
+ public virtual Swapping_Servant_Impl_Base,
+ public virtual PortableServer::RefCountServantBase
+ {
+ public:
+ Swapping_Servant_Impl (EXEC * exe,
+ Swapping_Container * c);
+
+ virtual ~Swapping_Servant_Impl (void);
+
+ // Operations for CCMHome interface.
+
+ virtual void
+ remove_component (Components::CCMObject_ptr comp
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::RemoveFailure));
+
+ // Operations for keyless home interface.
+
+ virtual ::Components::CCMObject_ptr
+ create_component (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CreateFailure));
+
+ // Operations for implicit home interface.
+
+ virtual COMP *
+ create (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CreateFailure));
+
+ protected:
+ // CIAO-specific operations.
+
+ COMP *
+ _ciao_activate_component (COMP_EXEC *exe
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ void
+ _ciao_passivate_component (COMP *comp
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ protected:
+ EXEC_VAR executor_;
+
+ ACE_Hash_Map_Manager_Ex<PortableServer::ObjectId,
+ COMP_SVNT *,
+ TAO_ObjectId_Hash,
+ ACE_Equal_To<PortableServer::ObjectId>,
+ ACE_SYNCH_MUTEX>
+ component_map_;
+ };
+}
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "Swapping_Servant_Impl_T.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
+#pragma implementation ("Swapping_Servant_Impl_T.cpp")
+#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_SWAPPING_SERVANT_IMPL_T_H */
+
diff --git a/TAO/CIAO/examples/Hello/Sender/New_Sender_svnt.cpp b/TAO/CIAO/examples/Hello/Sender/New_Sender_svnt.cpp
new file mode 100644
index 00000000000..aa2c2b8081c
--- /dev/null
+++ b/TAO/CIAO/examples/Hello/Sender/New_Sender_svnt.cpp
@@ -0,0 +1,352 @@
+// $Id$
+//
+// **** Code generated by the ****
+// **** Component Integrated ACE ORB (CIAO) CIDL Compiler ****
+// CIAO has been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// CIDL Compiler has been developed by:
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about CIAO is available at:
+// http://www.dre.vanderbilt.edu/CIAO
+
+#include "Sender_svnt.h"
+#include "Cookies.h"
+#include "ciao/Servant_Activator.h"
+#include "ciao/Port_Activator_T.h"
+
+namespace Sender_Impl
+{
+ namespace CIAO_GLUE_Hello
+ {
+ Sender_Context::Sender_Context (
+ ::Components::CCMHome_ptr home,
+ ::CIAO::Swapping_Container *c,
+ Sender_Servant *sv)
+ : Context_Impl_Base (home, c),
+ ctx_svnt_base (home, c, sv)
+ {
+ }
+
+ Sender_Context::~Sender_Context (void)
+ {
+ }
+
+ // Operations for Sender receptacles and event sources,
+ // defined in ::Hello::CCM_Sender_Context.
+
+ // CIAO-specific.
+
+ Sender_Context *
+ Sender_Context::_narrow (
+ ::Components::SessionContext_ptr p
+ ACE_ENV_ARG_DECL_NOT_USED)
+ {
+ return dynamic_cast<Sender_Context *> (p);
+ }
+ }
+
+ namespace CIAO_GLUE_Hello
+ {
+ Sender_Servant::Sender_Servant (
+ ::Hello::CCM_Sender_ptr exe,
+ ::Components::CCMHome_ptr h,
+ ::CIAO::Swapping_Container *c)
+ : Servant_Impl_Base (c),
+ comp_svnt_base (exe, c)
+ {
+ this->context_ = new Sender_Context (h, c, this);
+
+ ACE_TRY_NEW_ENV
+ {
+ ::Components::SessionComponent_var scom =
+ ::Components::SessionComponent::_narrow (
+ exe
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ if (! ::CORBA::is_nil (scom.in ()))
+ {
+ scom->set_session_context (
+ this->context_
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+
+ this->populate_port_tables (
+ ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+
+ ACE_CATCHANY
+ {
+ }
+
+ ACE_ENDTRY;
+ }
+
+ Sender_Servant::~Sender_Servant (void)
+ {
+ }
+
+ void
+ Sender_Servant::set_attributes (
+ const ::Components::ConfigValues &descr
+ ACE_ENV_ARG_DECL_NOT_USED)
+ {
+ for (CORBA::ULong i = 0;
+ i < descr.length ();
+ ++i)
+ {
+ const char *descr_name = descr[i]->name ();
+ ::CORBA::Any &descr_value = descr[i]->value ();
+
+ if (ACE_OS::strcmp (descr_name, "local_message") == 0)
+ {
+ const char * _ciao_extract_val = 0;
+ descr_value >>= _ciao_extract_val;
+ this->local_message (_ciao_extract_val);
+ continue;
+ }
+
+ ACE_UNUSED_ARG (descr_name);
+ ACE_UNUSED_ARG (descr_value);
+ }
+ }
+
+ ::Components::Cookie *
+ Sender_Servant::connect (
+ const char *name,
+ ::CORBA::Object_ptr connection
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::InvalidName,
+ ::Components::InvalidConnection,
+ ::Components::AlreadyConnected,
+ ::Components::ExceededConnectionLimit))
+ {
+ // If the component has no receptacles, this will be unused.
+ ACE_UNUSED_ARG (connection);
+
+ if (name == 0)
+ {
+ ACE_THROW_RETURN (::Components::InvalidName (), 0);
+ }
+
+ ACE_THROW_RETURN (::Components::InvalidName (), 0);
+ }
+
+ CORBA::Object_ptr
+ Sender_Servant::disconnect (
+ const char *name,
+ ::Components::Cookie * ck
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::InvalidName,
+ ::Components::InvalidConnection,
+ ::Components::CookieRequired,
+ ::Components::NoConnection))
+ {
+ if (name == 0)
+ {
+ ACE_THROW_RETURN (
+ ::Components::InvalidName (),
+ ::CORBA::Object::_nil ());
+ }
+
+ ACE_THROW_RETURN (
+ ::Components::InvalidName (),
+ ::CORBA::Object::_nil ());
+
+ ACE_UNUSED_ARG (ck);
+ }
+
+ void
+ Sender_Servant::connect_consumer (
+ const char * emitter_name,
+ ::Components::EventConsumerBase_ptr consumer
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::InvalidName,
+ ::Components::AlreadyConnected,
+ ::Components::InvalidConnection))
+ {
+ if (emitter_name == 0)
+ {
+ ACE_THROW (::CORBA::BAD_PARAM ());
+ }
+
+ ACE_UNUSED_ARG (consumer);
+ ACE_THROW (::Components::InvalidName ());
+ }
+
+ ::Components::Cookie *
+ Sender_Servant::subscribe (
+ const char *publisher_name,
+ ::Components::EventConsumerBase_ptr subscribe
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::InvalidName,
+ ::Components::InvalidConnection,
+ ::Components::ExceededConnectionLimit))
+ {
+ // Just in case there are no if blocks
+ ACE_UNUSED_ARG (subscribe);
+
+ if (publisher_name == 0)
+ {
+ ACE_THROW_RETURN (::Components::InvalidName (), 0);
+ }
+
+ ACE_THROW_RETURN (::Components::InvalidName (), 0);
+ }
+
+ ::Components::EventConsumerBase_ptr
+ Sender_Servant::unsubscribe (
+ const char *publisher_name,
+ ::Components::Cookie *ck
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::InvalidName,
+ ::Components::InvalidConnection))
+ {
+ // Just in case there are no if blocks
+ ACE_UNUSED_ARG (ck);
+
+ if (publisher_name == 0)
+ {
+ ACE_THROW_RETURN (
+ ::Components::InvalidName (),
+ ::Components::EventConsumerBase::_nil ());
+ }
+
+ ACE_THROW_RETURN (
+ ::Components::InvalidName (),
+ ::Components::EventConsumerBase::_nil ());
+ }
+
+ CORBA::Object_ptr
+ Sender_Servant::get_facet_executor (const char *name
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException))
+ {
+ if (name == 0)
+ {
+ ACE_THROW_RETURN (
+ ::CORBA::BAD_PARAM (),
+ ::CORBA::Object::_nil ());
+ }
+
+ return CORBA::Object::_nil ();
+ }
+
+ // Supported operations.
+
+ void
+ Sender_Servant::start (
+ ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ this->executor_->start (
+ ACE_ENV_SINGLE_ARG_PARAMETER);
+ }
+
+ // Component attribute operations.
+
+ char *
+ Sender_Servant::local_message (
+ ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return this->executor_->local_message (
+ ACE_ENV_SINGLE_ARG_PARAMETER);
+ }
+
+ void
+ Sender_Servant::local_message (
+ const char * local_message
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ this->executor_->local_message (
+ local_message
+ ACE_ENV_ARG_PARAMETER);
+ }
+
+ // Private method to populate the port tables.
+ void
+ Sender_Servant::populate_port_tables (
+ ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ::CORBA::Object_var obj_var;
+ ::Components::EventConsumerBase_var ecb_var;
+ }
+ }
+
+ namespace CIAO_GLUE_Hello
+ {
+ SenderHome_Servant::SenderHome_Servant (
+ ::Hello::CCM_SenderHome_ptr exe,
+ ::CIAO::Swapping_Container *c)
+ : Swapping_Servant_Impl_Base (c),
+ home_svnt_base (exe, c)
+ {
+ }
+
+ SenderHome_Servant::~SenderHome_Servant (void)
+ {
+ }
+
+ // Home operations.
+
+ // Home supported interface operations.
+
+ // Home factory and finder operations.
+
+ // Home attribute operations.
+ }
+
+ extern "C" SENDER_SVNT_Export ::PortableServer::Servant
+ createSenderHome_Servant (
+ ::Components::HomeExecutorBase_ptr p,
+ CIAO::Swapping_Container *c
+ ACE_ENV_ARG_DECL)
+ {
+ if (p == 0)
+ {
+ return 0;
+ }
+
+ ::Hello::CCM_SenderHome_var x =
+ ::Hello::CCM_SenderHome::_narrow (
+ p
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ if (::CORBA::is_nil (x.in ()))
+ {
+ return 0;
+ }
+
+ return new
+ CIAO_GLUE_Hello::SenderHome_Servant (
+ x.in (),
+ c);
+ }
+}
+
diff --git a/TAO/CIAO/examples/Hello/Sender/New_Sender_svnt.h b/TAO/CIAO/examples/Hello/Sender/New_Sender_svnt.h
new file mode 100644
index 00000000000..2b836472b87
--- /dev/null
+++ b/TAO/CIAO/examples/Hello/Sender/New_Sender_svnt.h
@@ -0,0 +1,273 @@
+// $Id$
+//
+// **** Code generated by the ****
+// **** Component Integrated ACE ORB (CIAO) CIDL Compiler ****
+// CIAO has been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// CIDL Compiler has been developed by:
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about CIAO is available at:
+// http://www.dre.vanderbilt.edu/CIAO
+
+#ifndef CIAO_GLUE_SESSION_SENDER_SVNT_H
+#define CIAO_GLUE_SESSION_SENDER_SVNT_H
+
+#include /**/ "ace/pre.h"
+
+#include "SenderEC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ciao/Container_Base.h"
+#include "ciao/Swapping_Container.h"
+#include "ciao/Servant_Impl_T.h"
+#include "ciao/Context_Impl_T.h"
+#include "ciao/Home_Servant_Impl_T.h"
+#include "ciao/Swapping_Servant_Impl_T.h"
+#include "ace/Active_Map_Manager_T.h"
+
+#include "SenderS.h"
+
+namespace Sender_Impl
+{
+ namespace CIAO_GLUE_Hello
+ {
+ class Sender_Servant;
+
+ class SENDER_SVNT_Export Sender_Context
+ : public virtual CIAO::Context_Impl<
+ ::Hello::CCM_Sender_Context,
+ Sender_Servant,
+ ::Hello::Sender,
+ ::Hello::Sender_var
+ >
+ {
+ public:
+ // We will allow the servant glue code we generate to access our state.
+ friend class Sender_Servant;
+
+ /// Hack for VC6.
+ typedef CIAO::Context_Impl<
+ ::Hello::CCM_Sender_Context,
+ Sender_Servant,
+ ::Hello::Sender,
+ ::Hello::Sender_var
+ > ctx_svnt_base;
+
+ Sender_Context (
+ ::Components::CCMHome_ptr home,
+ ::CIAO::Swapping_Container *c,
+ Sender_Servant *sv);
+
+ virtual ~Sender_Context (void);
+
+ // Operations for Sender receptacles and event sources,
+ // defined in ::Hello::CCM_Sender_Context.
+
+ // CIAO-specific.
+
+ static Sender_Context *
+ _narrow (
+ ::Components::SessionContext_ptr p
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ protected:
+ // Methods that manage this component's connections and consumers.
+
+ protected:
+ };
+ }
+
+ namespace CIAO_GLUE_Hello
+ {
+ class SENDER_SVNT_Export Sender_Servant
+ : public virtual CIAO::Servant_Impl<
+ POA_Hello::Sender,
+ ::Hello::CCM_Sender,
+ ::Hello::CCM_Sender_var,
+ Sender_Context
+ >
+ {
+ public:
+ /// Hack for VC6.
+ typedef CIAO::Servant_Impl<
+ POA_Hello::Sender,
+ ::Hello::CCM_Sender,
+ ::Hello::CCM_Sender_var,
+ Sender_Context
+ > comp_svnt_base;
+
+ Sender_Servant (
+ ::Hello::CCM_Sender_ptr executor,
+ ::Components::CCMHome_ptr home,
+ ::CIAO::Swapping_Container *c);
+
+ virtual ~Sender_Servant (void);
+
+ virtual void
+ set_attributes (
+ const ::Components::ConfigValues &descr
+ ACE_ENV_ARG_DECL);
+
+ // Supported operations.
+
+ virtual void
+ start (
+ ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ // Public port operations.
+
+ // Component attribute operations.
+
+ virtual char *
+ local_message (
+ ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void
+ local_message (
+ const char *
+ 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));
+
+ // Operations for Events interface.
+
+ 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));
+
+ // CIAO specific operations on the servant
+ CORBA::Object_ptr
+ get_facet_executor (const char *name
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException));
+
+ private:
+
+ private:
+
+ void
+ populate_port_tables (
+ ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ };
+ }
+
+ namespace CIAO_GLUE_Hello
+ {
+ class SENDER_SVNT_Export SenderHome_Servant
+ : public virtual CIAO::Swapping_Servant_Impl<
+ POA_Hello::SenderHome,
+ ::Hello::CCM_SenderHome,
+ ::Hello::CCM_SenderHome_var,
+ ::Hello::Sender,
+ ::Hello::Sender_var,
+ ::Hello::CCM_Sender,
+ ::Hello::CCM_Sender_var,
+ Sender_Servant
+ >
+ {
+ public:
+ /// Hack for VC6.
+ typedef CIAO::Swapping_Servant_Impl<
+ POA_Hello::SenderHome,
+ ::Hello::CCM_SenderHome,
+ ::Hello::CCM_SenderHome_var,
+ ::Hello::Sender,
+ ::Hello::Sender_var,
+ ::Hello::CCM_Sender,
+ ::Hello::CCM_Sender_var,
+ Sender_Servant
+ > home_svnt_base;
+
+ SenderHome_Servant (
+ ::Hello::CCM_SenderHome_ptr exe,
+ ::CIAO::Swapping_Container *c);
+
+ virtual ~SenderHome_Servant (void);
+
+ // Home operations.
+
+ // Home factory and finder operations.
+
+ // Attribute operations.
+ };
+
+ extern "C" SENDER_SVNT_Export ::PortableServer::Servant
+ createSenderHome_Servant (
+ ::Components::HomeExecutorBase_ptr p,
+ CIAO::Swapping_Container *c
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+ }
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_GLUE_SESSION_SENDER_SVNT_H */
+