summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/tests/Notify/Structured_Multi_Filter/Notify_Push_Supplier.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/tests/Notify/Structured_Multi_Filter/Notify_Push_Supplier.cpp')
-rw-r--r--TAO/orbsvcs/tests/Notify/Structured_Multi_Filter/Notify_Push_Supplier.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/TAO/orbsvcs/tests/Notify/Structured_Multi_Filter/Notify_Push_Supplier.cpp b/TAO/orbsvcs/tests/Notify/Structured_Multi_Filter/Notify_Push_Supplier.cpp
new file mode 100644
index 00000000000..352ef42df08
--- /dev/null
+++ b/TAO/orbsvcs/tests/Notify/Structured_Multi_Filter/Notify_Push_Supplier.cpp
@@ -0,0 +1,58 @@
+// $Id$
+#include "Notify_Push_Supplier.h"
+
+void
+Notify_Push_Supplier::_connect (
+ CosNotifyChannelAdmin::SupplierAdmin_ptr supplier_admin,
+ CosNotifyChannelAdmin::EventChannel_ptr notify_channel,
+ bool useFilter
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ CosNotifyComm::StructuredPushSupplier_var objref =
+ this->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ CosNotifyChannelAdmin::ProxyConsumer_var proxyconsumer =
+ supplier_admin->obtain_notification_push_consumer (
+ CosNotifyChannelAdmin::STRUCTURED_EVENT,
+ proxy_id_
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ if (useFilter)
+ {
+ CosNotifyFilter::FilterFactory_var ffact =
+ notify_channel->default_filter_factory (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ CosNotifyFilter::Filter_var filter =
+ ffact->create_filter ("TCL" ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ ACE_ASSERT(! CORBA::is_nil (filter.in ()));
+
+ CosNotifyFilter::ConstraintExpSeq constraint_list (1);
+ constraint_list.length (1);
+
+ constraint_list[0].event_types.length (0);
+ constraint_list[0].constraint_expr = CORBA::string_dup ("group != 0");
+
+ filter->add_constraints (constraint_list ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ proxyconsumer->add_filter (filter.in ());
+ }
+
+ this->proxy_ =
+ CosNotifyChannelAdmin::StructuredProxyPushConsumer::_narrow (
+ proxyconsumer.in () ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ this->proxy_->connect_structured_push_supplier (objref.in () ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ // give ownership to POA
+ this->_remove_ref (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+}