summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/tests/Event/Basic/Wildcard.cpp
diff options
context:
space:
mode:
authorcoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2000-02-01 03:06:20 +0000
committercoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2000-02-01 03:06:20 +0000
commite94c231549926d96476c40950ddbefcf7b0d4414 (patch)
treeff708b507402fce12ea4d801fb87443990f58266 /TAO/orbsvcs/tests/Event/Basic/Wildcard.cpp
parentcc9a32b7c31abdf66763d95654f41d94d274c055 (diff)
downloadATCD-e94c231549926d96476c40950ddbefcf7b0d4414.tar.gz
ChangeLogTag:Mon Jan 31 19:02:34 2000 Carlos O'Ryan <coryan@uci.edu>
Diffstat (limited to 'TAO/orbsvcs/tests/Event/Basic/Wildcard.cpp')
-rw-r--r--TAO/orbsvcs/tests/Event/Basic/Wildcard.cpp312
1 files changed, 53 insertions, 259 deletions
diff --git a/TAO/orbsvcs/tests/Event/Basic/Wildcard.cpp b/TAO/orbsvcs/tests/Event/Basic/Wildcard.cpp
index 707257855c7..bb6be227d0a 100644
--- a/TAO/orbsvcs/tests/Event/Basic/Wildcard.cpp
+++ b/TAO/orbsvcs/tests/Event/Basic/Wildcard.cpp
@@ -1,7 +1,7 @@
// $Id$
-#include "Wildcard.h"
-
+#include "Counting_Consumer.h"
+#include "Counting_Supplier.h"
#include "orbsvcs/Time_Utilities.h"
#include "orbsvcs/Event_Utilities.h"
#include "orbsvcs/Event/EC_Event_Channel.h"
@@ -9,240 +9,6 @@
ACE_RCSID(EC_Tests, Wildcard, "$Id$")
-#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
-template class ACE_PushConsumer_Adapter<Supplier>;
-#elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
-#pragma instantiate ACE_PushConsumer_Adapter<Supplier>
-#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
-
-Consumer::Consumer (const char* name)
- : event_count (0),
- name_ (name)
-{
-}
-
-void
-Consumer::connect (RtecEventChannelAdmin::ConsumerAdmin_ptr consumer_admin,
- const RtecEventChannelAdmin::ConsumerQOS &qos,
- CORBA::Environment &ACE_TRY_ENV)
-{
- // The canonical protocol to connect to the EC
-
- RtecEventComm::PushConsumer_var consumer =
- this->_this (ACE_TRY_ENV);
- ACE_CHECK;
-
- this->supplier_proxy_ =
- consumer_admin->obtain_push_supplier (ACE_TRY_ENV);
- ACE_CHECK;
-
- this->supplier_proxy_->connect_push_consumer (consumer.in (),
- qos,
- ACE_TRY_ENV);
- ACE_CHECK;
-}
-
-void
-Consumer::disconnect (CORBA::Environment &ACE_TRY_ENV)
-{
- this->supplier_proxy_->disconnect_push_supplier (ACE_TRY_ENV);
- ACE_CHECK;
-
- PortableServer::POA_var consumer_poa =
- this->_default_POA (ACE_TRY_ENV);
- ACE_CHECK;
- PortableServer::ObjectId_var consumer_id =
- consumer_poa->servant_to_id (this, ACE_TRY_ENV);
- ACE_CHECK;
- consumer_poa->deactivate_object (consumer_id.in (), ACE_TRY_ENV);
- ACE_CHECK;
-}
-
-void
-Consumer::dump_results (int expected_count, int tolerance)
-{
- int diff = this->event_count - expected_count;
- if (diff > tolerance || diff < -tolerance)
- {
- ACE_DEBUG ((LM_DEBUG,
- "ERROR - %s unexpected number of events <%d>\n",
- this->name_,
- this->event_count));
- }
- else
- {
- ACE_DEBUG ((LM_DEBUG,
- "%s - number of events <%d> within margins\n",
- this->name_,
- this->event_count));
- }
-}
-
-void
-Consumer::push (const RtecEventComm::EventSet& events,
- CORBA::Environment &)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- if (events.length () == 0)
- {
- ACE_DEBUG ((LM_DEBUG,
- "%s (%P|%t) no events\n", this->name_));
- return;
- }
-
- this->event_count ++;
-#if 0
- if (this->event_count % 10 == 0)
- {
- ACE_DEBUG ((LM_DEBUG,
- "%s (%P|%t): %d events received\n",
- this->name_,
- this->event_count));
- }
-#endif /* 0 */
-}
-
-void
-Consumer::disconnect_push_consumer (CORBA::Environment &)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
-}
-
-Supplier::Supplier (void)
- : consumer_adapter_ (this),
- event_source_ (-1),
- event_type_ (ACE_ES_EVENT_UNDEFINED)
-{
-}
-
-void
-Supplier::connect (RtecEventChannelAdmin::EventChannel_ptr event_channel,
- int milliseconds,
- int published_source,
- int published_type,
- int event_source,
- int event_type,
- CORBA::Environment &ACE_TRY_ENV)
-{
- this->event_source_ = event_source;
- this->event_type_ = event_type;
-
- // The canonical protocol to connect to the EC
- RtecEventChannelAdmin::ConsumerAdmin_var consumer_admin =
- event_channel->for_consumers (ACE_TRY_ENV);
- ACE_CHECK;
-
- RtecEventComm::PushConsumer_var consumer =
- this->consumer_adapter_._this (ACE_TRY_ENV);
- ACE_CHECK;
-
- this->supplier_proxy_ =
- consumer_admin->obtain_push_supplier (ACE_TRY_ENV);
- ACE_CHECK;
-
- // Let's say that the execution time for event 2 is 1
- // milliseconds...
- ACE_Time_Value tv (0, milliseconds * 1000);
- TimeBase::TimeT time;
- ORBSVCS_Time::Time_Value_to_TimeT (time, tv);
-
- ACE_ConsumerQOS_Factory consumer_qos;
- consumer_qos.start_disjunction_group ();
- consumer_qos.insert_time (ACE_ES_EVENT_INTERVAL_TIMEOUT,
- time,
- 0);
-
- this->supplier_proxy_->connect_push_consumer (consumer.in (),
- consumer_qos.get_ConsumerQOS (),
- ACE_TRY_ENV);
- ACE_CHECK;
-
- RtecEventChannelAdmin::SupplierAdmin_var supplier_admin =
- event_channel->for_suppliers (ACE_TRY_ENV);
- ACE_CHECK;
-
- RtecEventComm::PushSupplier_var supplier =
- this->_this (ACE_TRY_ENV);
- ACE_CHECK;
-
- this->consumer_proxy_ =
- supplier_admin->obtain_push_consumer (ACE_TRY_ENV);
- ACE_CHECK;
-
- ACE_SupplierQOS_Factory supplier_qos;
- supplier_qos.insert (published_source,
- published_type,
- 0, 1);
-
- this->consumer_proxy_->connect_push_supplier (supplier.in (),
- supplier_qos.get_SupplierQOS (),
- ACE_TRY_ENV);
- ACE_CHECK;
-}
-
-void
-Supplier::disconnect (CORBA::Environment &ACE_TRY_ENV)
-{
- this->supplier_proxy_->disconnect_push_supplier (ACE_TRY_ENV);
- ACE_CHECK;
-
- PortableServer::POA_var consumer_poa =
- this->consumer_adapter_._default_POA (ACE_TRY_ENV);
- ACE_CHECK;
- PortableServer::ObjectId_var consumer_id =
- consumer_poa->servant_to_id (&this->consumer_adapter_, ACE_TRY_ENV);
- ACE_CHECK;
- consumer_poa->deactivate_object (consumer_id.in (), ACE_TRY_ENV);
- ACE_CHECK;
-
- this->consumer_proxy_->disconnect_push_consumer (ACE_TRY_ENV);
- ACE_CHECK;
-
- PortableServer::POA_var supplier_poa =
- this->_default_POA (ACE_TRY_ENV);
- ACE_CHECK;
- PortableServer::ObjectId_var supplier_id =
- supplier_poa->servant_to_id (this, ACE_TRY_ENV);
- ACE_CHECK;
- supplier_poa->deactivate_object (supplier_id.in (), ACE_TRY_ENV);
- ACE_CHECK;
-}
-
-void
-Supplier::push (const RtecEventComm::EventSet&,
- CORBA::Environment &ACE_TRY_ENV)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- RtecEventComm::EventSet event (1);
- event.length (1);
- event[0].header.source = this->event_source_;
- event[0].header.type = this->event_type_;
-
- this->consumer_proxy_->push (event, ACE_TRY_ENV);
-
-#if 0
- static int event_count = 0;
- event_count++;
- if (event_count % 10 == 0)
- {
- ACE_DEBUG ((LM_DEBUG,
- "Supplier (%P|%t): %d events sent\n",
- event_count));
- }
-#endif /* 0 */
-}
-
-void
-Supplier::disconnect_push_consumer (CORBA::Environment &)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
-}
-
-void
-Supplier::disconnect_push_supplier (CORBA::Environment &)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
-}
int
main (int argc, char* argv[])
{
@@ -272,7 +38,7 @@ main (int argc, char* argv[])
TAO_EC_Event_Channel_Attributes attributes (poa.in (),
poa.in ());
-
+
TAO_EC_Event_Channel ec_impl (attributes);
ec_impl.activate (ACE_TRY_ENV);
ACE_TRY_CHECK;
@@ -283,22 +49,30 @@ main (int argc, char* argv[])
// ****************************************************************
-
+
// Obtain the consumer admin..
RtecEventChannelAdmin::ConsumerAdmin_var consumer_admin =
event_channel->for_consumers (ACE_TRY_ENV);
ACE_TRY_CHECK;
+ // Obtain the supplier admin..
+ RtecEventChannelAdmin::SupplierAdmin_var supplier_admin =
+ event_channel->for_suppliers (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
// ****************************************************************
const int event_type = 20;
const int event_source = 10;
const int milliseconds = 50;
- Supplier supplier;
+ EC_Counting_Supplier supplier;
- supplier.connect (event_channel.in (),
- milliseconds,
+ supplier.activate (consumer_admin.in (),
+ milliseconds,
+ ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ supplier.connect (supplier_admin.in (),
event_source,
event_type,
event_source,
@@ -308,10 +82,13 @@ main (int argc, char* argv[])
// ****************************************************************
- Supplier other_supplier;
+ EC_Counting_Supplier other_supplier;
- other_supplier.connect (event_channel.in (),
- milliseconds,
+ other_supplier.activate (consumer_admin.in (),
+ milliseconds,
+ ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ other_supplier.connect (supplier_admin.in (),
event_source + 1,
event_type + 1,
event_source + 1,
@@ -321,10 +98,13 @@ main (int argc, char* argv[])
// ****************************************************************
- Supplier any_source_supplier;
+ EC_Counting_Supplier any_source_supplier;
- any_source_supplier.connect (event_channel.in (),
- milliseconds,
+ any_source_supplier.activate (consumer_admin.in (),
+ milliseconds,
+ ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ any_source_supplier.connect (supplier_admin.in (),
0,
event_type,
event_source,
@@ -334,10 +114,13 @@ main (int argc, char* argv[])
// ****************************************************************
- Supplier any_type_supplier;
+ EC_Counting_Supplier any_type_supplier;
- any_type_supplier.connect (event_channel.in (),
- 50,
+ any_type_supplier.activate (consumer_admin.in (),
+ milliseconds,
+ ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ any_type_supplier.connect (supplier_admin.in (),
event_source,
0,
event_source,
@@ -347,10 +130,13 @@ main (int argc, char* argv[])
// ****************************************************************
- Supplier wildcard_supplier;
+ EC_Counting_Supplier wildcard_supplier;
- wildcard_supplier.connect (event_channel.in (),
- 50,
+ wildcard_supplier.activate (consumer_admin.in (),
+ milliseconds,
+ ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ wildcard_supplier.connect (supplier_admin.in (),
0,
0,
event_source,
@@ -360,7 +146,7 @@ main (int argc, char* argv[])
// ****************************************************************
- Consumer regular_consumer ("Consumer/regular");
+ EC_Counting_Consumer regular_consumer ("Consumer/regular");
// Create a consumer, intialize its RT_Info structures, and
// connnect to the event channel....
@@ -378,7 +164,7 @@ main (int argc, char* argv[])
// ****************************************************************
- Consumer any_type_consumer ("Consumer/any_type");
+ EC_Counting_Consumer any_type_consumer ("Consumer/any_type");
// Create a consumer, intialize its RT_Info structures, and
// connnect to the event channel....
@@ -396,7 +182,7 @@ main (int argc, char* argv[])
// ****************************************************************
- Consumer any_source_consumer ("Consumer/any_source");
+ EC_Counting_Consumer any_source_consumer ("Consumer/any_source");
// Create a consumer, intialize its RT_Info structures, and
// connnect to the event channel....
@@ -414,7 +200,7 @@ main (int argc, char* argv[])
// ****************************************************************
- Consumer wildcard_consumer ("Consumer/wildcard");
+ EC_Counting_Consumer wildcard_consumer ("Consumer/wildcard");
// Create a consumer, intialize its RT_Info structures, and
// connnect to the event channel....
@@ -433,7 +219,7 @@ main (int argc, char* argv[])
// ****************************************************************
ACE_Time_Value tv (5, 0);
- // Wait for events, using work_pending()/perform_work() may help
+ // Wait for events, using work_pending()/perform_work() may help
// or using another thread, this example is too simple for that.
orb->run (tv);
@@ -451,18 +237,26 @@ main (int argc, char* argv[])
regular_consumer.disconnect (ACE_TRY_ENV);
ACE_TRY_CHECK;
+ wildcard_supplier.deactivate (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
wildcard_supplier.disconnect (ACE_TRY_ENV);
ACE_TRY_CHECK;
- any_type_supplier.disconnect (ACE_TRY_ENV);
+ any_type_supplier.deactivate (ACE_TRY_ENV);
ACE_TRY_CHECK;
+ any_source_supplier.deactivate (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
any_source_supplier.disconnect (ACE_TRY_ENV);
ACE_TRY_CHECK;
+ other_supplier.deactivate (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
other_supplier.disconnect (ACE_TRY_ENV);
ACE_TRY_CHECK;
+ supplier.deactivate (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
supplier.disconnect (ACE_TRY_ENV);
ACE_TRY_CHECK;