summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Notify/ConsumerAdmin.cpp
diff options
context:
space:
mode:
authorpradeep <pradeep@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-02-27 14:17:59 +0000
committerpradeep <pradeep@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-02-27 14:17:59 +0000
commit3b1973e66d29b9a317e836e49ff40bddb89aaf31 (patch)
tree30aa3c1bf9298eb8060936b6f4aaeb5c1f904c65 /TAO/orbsvcs/orbsvcs/Notify/ConsumerAdmin.cpp
parent733e2e952b6edba9082e8d34c8b058cfd16fb336 (diff)
downloadATCD-3b1973e66d29b9a317e836e49ff40bddb89aaf31.tar.gz
ChangeLogTag: Thu Feb 27 09:09:44 2003 Pradeep Gore <pradeep@oomworks.com>
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Notify/ConsumerAdmin.cpp')
-rw-r--r--TAO/orbsvcs/orbsvcs/Notify/ConsumerAdmin.cpp125
1 files changed, 67 insertions, 58 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Notify/ConsumerAdmin.cpp b/TAO/orbsvcs/orbsvcs/Notify/ConsumerAdmin.cpp
index dea48b705b0..02aa8cceee6 100644
--- a/TAO/orbsvcs/orbsvcs/Notify/ConsumerAdmin.cpp
+++ b/TAO/orbsvcs/orbsvcs/Notify/ConsumerAdmin.cpp
@@ -8,18 +8,26 @@
ACE_RCSID(RT_Notify, TAO_NS_ConsumerAdmin, "$Id$")
+#include "ace/Auto_Ptr.h"
#include "orbsvcs/ESF/ESF_Proxy_Collection.h"
-#include "Builder.h"
#include "Subscription_Change_Worker.h"
#include "Proxy.h"
-#include "Admin.h"
#include "EventChannel.h"
-#include "EventChannelFactory.h"
-#include "Notify_Service.h"
#include "Properties.h"
+#include "Factory.h"
+#include "Builder.h"
+#include "Find_Worker_T.h"
+#include "Seq_Worker_T.h"
+
+typedef TAO_NS_Find_Worker_T<TAO_NS_Proxy
+ , CosNotifyChannelAdmin::ProxySupplier
+ , CosNotifyChannelAdmin::ProxySupplier_ptr
+ , CosNotifyChannelAdmin::ProxyNotFound>
+TAO_NS_ProxySupplier_Find_Worker;
+
+typedef TAO_NS_Seq_Worker_T<TAO_NS_Proxy> TAO_NS_Proxy_Seq_Worker;
TAO_NS_ConsumerAdmin::TAO_NS_ConsumerAdmin (void)
-:TAO_NS_Admin (TAO_NS_Admin::CONSUMER_ADMIN)
{
}
@@ -27,10 +35,16 @@ TAO_NS_ConsumerAdmin::~TAO_NS_ConsumerAdmin ()
{
}
-PortableServer::Servant
-TAO_NS_ConsumerAdmin::servant (void)
+void
+TAO_NS_ConsumerAdmin::init (TAO_NS_EventChannel *ec ACE_ENV_ARG_DECL)
{
- return this;
+ TAO_NS_Admin::init (ec ACE_ENV_ARG_PARAMETER);
+
+ const CosNotification::QoSProperties &default_ca_qos =
+ TAO_NS_PROPERTIES::instance ()->default_consumer_admin_qos_properties ();
+
+ this->set_qos (default_ca_qos ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
}
void
@@ -58,10 +72,16 @@ TAO_NS_ConsumerAdmin::destroy (ACE_ENV_SINGLE_ARG_DECL)
CORBA::SystemException
))
{
- this->inherited::destroy (this ACE_ENV_ARG_PARAMETER);
+ if (this->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER) == 1)
+ return;
+
+ ACE_CHECK;
+
+ this->ec_->remove (this ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
}
-::CosNotifyChannelAdmin::ProxySupplier_ptr
+CosNotifyChannelAdmin::ProxySupplier_ptr
TAO_NS_ConsumerAdmin::obtain_notification_push_supplier (CosNotifyChannelAdmin::ClientType ctype,
CosNotifyChannelAdmin::ProxyID_out proxy_id
ACE_ENV_ARG_DECL
@@ -71,9 +91,19 @@ TAO_NS_ConsumerAdmin::obtain_notification_push_supplier (CosNotifyChannelAdmin::
, CosNotifyChannelAdmin::AdminLimitExceeded
))
{
- return TAO_NS_PROPERTIES::instance()->builder ()->build_notification_push_supplier (this,
- ctype,
- proxy_id ACE_ENV_ARG_PARAMETER);
+ return TAO_NS_PROPERTIES::instance()->builder()->build_proxy (this
+ , ctype
+ , proxy_id
+ ACE_ENV_ARG_PARAMETER);
+}
+
+CosEventChannelAdmin::ProxyPushSupplier_ptr
+TAO_NS_ConsumerAdmin::obtain_push_supplier (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ return TAO_NS_PROPERTIES::instance()->builder()->build_proxy (this ACE_ENV_ARG_PARAMETER);
}
CosNotifyChannelAdmin::AdminID
@@ -91,10 +121,7 @@ TAO_NS_ConsumerAdmin::MyChannel (ACE_ENV_SINGLE_ARG_DECL)
CORBA::SystemException
))
{
- CORBA::Object_var object = this->parent_->ref (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_CHECK_RETURN (CosNotifyChannelAdmin::EventChannel::_nil ());
-
- return CosNotifyChannelAdmin::EventChannel::_narrow (object.in () ACE_ENV_ARG_PARAMETER);
+ return this->ec_->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
}
::CosNotifyChannelAdmin::InterFilterGroupOperator
@@ -112,25 +139,9 @@ TAO_NS_ConsumerAdmin::push_suppliers (ACE_ENV_SINGLE_ARG_DECL)
CORBA::SystemException
))
{
- CosNotifyChannelAdmin::ProxyIDSeq* seq_ptr;
-
- ACE_NEW_THROW_EX (seq_ptr,
- CosNotifyChannelAdmin::ProxyIDSeq (),
- CORBA::NO_MEMORY ());
+ TAO_NS_Proxy_Seq_Worker seq_worker;
- CosNotifyChannelAdmin::ProxyIDSeq_var seq (seq_ptr);
-
- seq->length (this->proxy_id_list_.size ());
-
- TAO_NS_EventChannelFactory::TAO_NS_Object_Id_Seq::CONST_ITERATOR iter (this->proxy_id_list_);
-
- TAO_NS_Object_Id* object_id;
-
- CORBA::ULong i = 0;
- for (iter.first (); iter.next (object_id); iter.advance (), ++i)
- seq[i] = *object_id;
-
- return seq._retn ();
+ return seq_worker.create (*this->proxy_container_ ACE_ENV_ARG_PARAMETER);
}
CosNotifyChannelAdmin::ProxySupplier_ptr
@@ -140,27 +151,9 @@ TAO_NS_ConsumerAdmin::get_proxy_supplier (CosNotifyChannelAdmin::ProxyID proxy_i
, CosNotifyChannelAdmin::ProxyNotFound
))
{
- TAO_NS_Object* ns_object = this->find (proxy_id ACE_ENV_ARG_PARAMETER);
- ACE_CHECK_RETURN (CosNotifyChannelAdmin::ProxySupplier::_nil ());
-
- if (ns_object != 0)
- {
- CORBA::Object_var object = ns_object->ref (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_CHECK_RETURN (CosNotifyChannelAdmin::ProxySupplier::_nil ());
-
- return CosNotifyChannelAdmin::ProxySupplier::_narrow (object.in () ACE_ENV_ARG_PARAMETER);
- }
- else
- ACE_THROW_RETURN (CosNotifyChannelAdmin::ProxyNotFound (), CosNotifyChannelAdmin::ProxySupplier::_nil ());
-}
+ TAO_NS_ProxySupplier_Find_Worker find_worker;
-CosEventChannelAdmin::ProxyPushSupplier_ptr
-TAO_NS_ConsumerAdmin::obtain_push_supplier (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((
- CORBA::SystemException
- ))
-{
- return TAO_NS_PROPERTIES::instance()->builder ()->build_push_supplier (this ACE_ENV_ARG_PARAMETER);
+ return find_worker.resolve (proxy_id, *this->proxy_container_ ACE_ENV_ARG_PARAMETER);
}
void TAO_NS_ConsumerAdmin::set_qos (const CosNotification::QoSProperties & qos ACE_ENV_ARG_DECL)
@@ -201,11 +194,11 @@ TAO_NS_ConsumerAdmin::subscription_change (const CosNotification::EventTypeSeq &
ACE_CHECK;
this->subscribed_types_.init (seq_added, seq_removed);
- }
- TAO_NS_Subscription_Change_Worker worker (added, removed);
+ TAO_NS_Subscription_Change_Worker worker (added, removed);
- this->collection_->for_each (&worker ACE_ENV_ARG_PARAMETER);
+ this->proxy_container_->collection()->for_each (&worker ACE_ENV_ARG_PARAMETER);
+ }
}
CosNotifyFilter::FilterID
@@ -338,3 +331,19 @@ TAO_NS_ConsumerAdmin::obtain_pull_supplier (ACE_ENV_SINGLE_ARG_DECL)
{
ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), CosEventChannelAdmin::ProxyPullSupplier::_nil ());
}
+
+#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
+
+template class TAO_NS_Find_Worker_T<TAO_NS_Proxy
+ , CosNotifyChannelAdmin::ProxySupplier
+ , CosNotifyChannelAdmin::ProxySupplier_ptr
+ , CosNotifyChannelAdmin::ProxyNotFound>;
+
+#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
+
+#pragma instantiate TAO_NS_Find_Worker_T<TAO_NS_Proxy
+ , CosNotifyChannelAdmin::ProxySupplier
+ , CosNotifyChannelAdmin::ProxySupplier_ptr
+ , CosNotifyChannelAdmin::ProxyNotFound>
+
+#endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */