summaryrefslogtreecommitdiff
path: root/TAO/CIAO/DAnCE/ciao
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/CIAO/DAnCE/ciao')
-rw-r--r--TAO/CIAO/DAnCE/ciao/Container_Base.cpp8
-rw-r--r--TAO/CIAO/DAnCE/ciao/Container_Base.h4
-rw-r--r--TAO/CIAO/DAnCE/ciao/Servant_Activator.cpp39
-rw-r--r--TAO/CIAO/DAnCE/ciao/Servant_Activator.h4
-rw-r--r--TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp23
-rw-r--r--TAO/CIAO/DAnCE/ciao/Servant_Impl_T.h4
-rw-r--r--TAO/CIAO/DAnCE/ciao/Swapping_Container.cpp16
-rw-r--r--TAO/CIAO/DAnCE/ciao/Swapping_Container.h6
8 files changed, 99 insertions, 5 deletions
diff --git a/TAO/CIAO/DAnCE/ciao/Container_Base.cpp b/TAO/CIAO/DAnCE/ciao/Container_Base.cpp
index f9d737b548e..cdd2d5b9e89 100644
--- a/TAO/CIAO/DAnCE/ciao/Container_Base.cpp
+++ b/TAO/CIAO/DAnCE/ciao/Container_Base.cpp
@@ -422,6 +422,14 @@ namespace CIAO
}
void
+ Session_Container::deactivate_facet (PortableServer::ObjectId &oid
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
+ }
+
+ void
Session_Container::delete_servant_map
(PortableServer::ObjectId &
ACE_ENV_ARG_DECL)
diff --git a/TAO/CIAO/DAnCE/ciao/Container_Base.h b/TAO/CIAO/DAnCE/ciao/Container_Base.h
index 2385b0a0a61..2ee12e2d46c 100644
--- a/TAO/CIAO/DAnCE/ciao/Container_Base.h
+++ b/TAO/CIAO/DAnCE/ciao/Container_Base.h
@@ -246,6 +246,10 @@ namespace CIAO
virtual void delete_servant_map (PortableServer::ObjectId &oid
ACE_ENV_ARG_DECL);
+ virtual void deactivate_facet (PortableServer::ObjectId &oid
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
virtual CORBA::Object_ptr get_home_objref (PortableServer::Servant p
ACE_ENV_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException));
diff --git a/TAO/CIAO/DAnCE/ciao/Servant_Activator.cpp b/TAO/CIAO/DAnCE/ciao/Servant_Activator.cpp
index 03899555bfd..cdd1c8d18b0 100644
--- a/TAO/CIAO/DAnCE/ciao/Servant_Activator.cpp
+++ b/TAO/CIAO/DAnCE/ciao/Servant_Activator.cpp
@@ -36,6 +36,33 @@ namespace CIAO
}
}
+ bool
+ Servant_Activator::update_port_activator (
+ const PortableServer::ObjectId &oid
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ CORBA::String_var str =
+ PortableServer::ObjectId_to_string (oid);
+ {
+ ACE_GUARD_RETURN (TAO_SYNCH_MUTEX,
+ guard,
+ this->mutex_,
+ 0);
+ const unsigned int sz = this->slot_index_;
+ for (unsigned int t = 0; t != sz; ++t)
+ {
+ Port_Activator *&tmp = this->pa_[t];
+ if (ACE_OS::strcmp (tmp->name (), str.in ()) == 0)
+ {
+ delete tmp;
+ --this->slot_index_;
+ }
+ }
+ }
+ return true;
+ }
+
PortableServer::Servant
Servant_Activator::incarnate (const PortableServer::ObjectId &oid,
PortableServer::POA_ptr
@@ -78,11 +105,13 @@ namespace CIAO
}
if (ACE_OS::strcmp (tmp->name (),
str.in ()) == 0)
- // We should try avoiding making outbound calls with the
- // lock held. Oh well, let us get some sense of sanity in
- // CIAO to do think about these.
- return this->pa_[t]->activate (oid
- ACE_ENV_ARG_PARAMETER);
+ {
+ // We should try avoiding making outbound calls with the
+ // lock held. Oh well, let us get some sense of sanity in
+ // CIAO to do think about these.
+ return this->pa_[t]->activate (oid
+ ACE_ENV_ARG_PARAMETER);
+ }
}
}
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
diff --git a/TAO/CIAO/DAnCE/ciao/Servant_Activator.h b/TAO/CIAO/DAnCE/ciao/Servant_Activator.h
index a9f75028a67..d7242ae791c 100644
--- a/TAO/CIAO/DAnCE/ciao/Servant_Activator.h
+++ b/TAO/CIAO/DAnCE/ciao/Servant_Activator.h
@@ -55,6 +55,10 @@ namespace CIAO
virtual ~Servant_Activator (void);
+ bool update_port_activator (const PortableServer::ObjectId &oid
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
/// Template methods overridden to get callbacks.
/**
* If you would like to know the details of the following two
diff --git a/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp b/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp
index 2277645ae55..7aee4159153 100644
--- a/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp
+++ b/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp
@@ -161,6 +161,29 @@ namespace CIAO
typename EXEC_VAR,
typename CONTEXT>
void
+ Servant_Impl<BASE_SKEL, EXEC, EXEC_VAR, CONTEXT>::activate_component (
+ ACE_ENV_SINGLE_ARG_DECL
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ if (this->is_activated () == 0)
+ {
+ this->ciao_preactivate (
+ ACE_ENV_SINGLE_ARG_PARAMETER);
+
+ this->ciao_activate (
+ ACE_ENV_SINGLE_ARG_PARAMETER);
+
+ this->ciao_postactivate (
+ ACE_ENV_SINGLE_ARG_PARAMETER);
+ }
+ }
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename EXEC_VAR,
+ typename CONTEXT>
+ void
Servant_Impl<BASE_SKEL, EXEC, EXEC_VAR, CONTEXT>::ciao_preactivate (
ACE_ENV_SINGLE_ARG_DECL
)
diff --git a/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.h b/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.h
index 246bcdbef35..e507fe8d93f 100644
--- a/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.h
+++ b/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.h
@@ -95,6 +95,10 @@ namespace CIAO
is_activated (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException));
+ void
+ activate_component (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
protected:
CORBA::Boolean activated_;
diff --git a/TAO/CIAO/DAnCE/ciao/Swapping_Container.cpp b/TAO/CIAO/DAnCE/ciao/Swapping_Container.cpp
index 087e269815b..18c4f4ed71c 100644
--- a/TAO/CIAO/DAnCE/ciao/Swapping_Container.cpp
+++ b/TAO/CIAO/DAnCE/ciao/Swapping_Container.cpp
@@ -32,6 +32,12 @@ namespace CIAO
return this->home_servant_poa_.in ();
}
+ PortableServer::POA_ptr
+ Swapping_Container::the_facet_cons_POA (void) const
+ {
+ return this->facet_cons_poa_.in ();
+ }
+
CORBA::Object_ptr
Swapping_Container::get_home_objref (PortableServer::Servant p
ACE_ENV_ARG_DECL)
@@ -41,6 +47,16 @@ namespace CIAO
ACE_ENV_ARG_PARAMETER);
}
+ void
+ Swapping_Container::deactivate_facet (PortableServer::ObjectId &oid
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ this->the_facet_cons_POA ()->deactivate_object (oid
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+
int
Swapping_Container::init (const char *name,
const CORBA::PolicyList *more_policies
diff --git a/TAO/CIAO/DAnCE/ciao/Swapping_Container.h b/TAO/CIAO/DAnCE/ciao/Swapping_Container.h
index 3372d356b3e..7f822143845 100644
--- a/TAO/CIAO/DAnCE/ciao/Swapping_Container.h
+++ b/TAO/CIAO/DAnCE/ciao/Swapping_Container.h
@@ -74,8 +74,14 @@ namespace CIAO
virtual void delete_servant_map (PortableServer::ObjectId &oid
ACE_ENV_ARG_DECL);
+ virtual void deactivate_facet (PortableServer::ObjectId &oid
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
PortableServer::POA_ptr the_home_servant_POA (void) const;
+ PortableServer::POA_ptr the_facet_cons_POA (void) const;
+
private:
/// Create POA for the component.