diff options
author | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2000-02-01 03:06:20 +0000 |
---|---|---|
committer | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2000-02-01 03:06:20 +0000 |
commit | e94c231549926d96476c40950ddbefcf7b0d4414 (patch) | |
tree | ff708b507402fce12ea4d801fb87443990f58266 /TAO/orbsvcs/tests/Event/Basic/Wildcard.cpp | |
parent | cc9a32b7c31abdf66763d95654f41d94d274c055 (diff) | |
download | ATCD-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.cpp | 312 |
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; |