diff options
author | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2000-01-23 01:17:19 +0000 |
---|---|---|
committer | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2000-01-23 01:17:19 +0000 |
commit | 1a92f1af1b4a71f056145f58d5f2a00a4f9b40cb (patch) | |
tree | 866650fae33a065dc64f3855c6efe20cd0c12221 /TAO/orbsvcs/tests/Event | |
parent | 5904a72c68d9ad9e7fa77a53fa0574b04e11e33a (diff) | |
download | ATCD-1a92f1af1b4a71f056145f58d5f2a00a4f9b40cb.tar.gz |
ChangeLogTag:Sat Jan 22 17:04:14 2000 Carlos O'Ryan <coryan@uci.edu>
Diffstat (limited to 'TAO/orbsvcs/tests/Event')
-rw-r--r-- | TAO/orbsvcs/tests/Event/Basic/Atomic_Reconnect.cpp | 501 | ||||
-rw-r--r-- | TAO/orbsvcs/tests/Event/Basic/Atomic_Reconnect.dsp | 102 | ||||
-rw-r--r-- | TAO/orbsvcs/tests/Event/Basic/Atomic_Reconnect.h | 163 | ||||
-rw-r--r-- | TAO/orbsvcs/tests/Event/Basic/Basic.dsw | 12 | ||||
-rw-r--r-- | TAO/orbsvcs/tests/Event/Basic/Makefile | 354 | ||||
-rw-r--r-- | TAO/orbsvcs/tests/Event/Basic/mt.svc.conf (renamed from TAO/orbsvcs/tests/Event/Basic/mt_disconnect.conf) | 0 | ||||
-rwxr-xr-x | TAO/orbsvcs/tests/Event/Basic/run_test.pl | 14 | ||||
-rw-r--r-- | TAO/orbsvcs/tests/Event/Event.dsw | 15 |
8 files changed, 1158 insertions, 3 deletions
diff --git a/TAO/orbsvcs/tests/Event/Basic/Atomic_Reconnect.cpp b/TAO/orbsvcs/tests/Event/Basic/Atomic_Reconnect.cpp new file mode 100644 index 00000000000..29e4b11d232 --- /dev/null +++ b/TAO/orbsvcs/tests/Event/Basic/Atomic_Reconnect.cpp @@ -0,0 +1,501 @@ +// $Id$ + +#include "Atomic_Reconnect.h" + +#include "orbsvcs/Time_Utilities.h" +#include "orbsvcs/Event_Utilities.h" +#include "orbsvcs/Event/EC_Event_Channel.h" +#include "orbsvcs/Event/EC_Default_Factory.h" + +ACE_RCSID(EC_Tests, Atomic_Reconnect, "$Id$") + +const int event_type = 20; +const int event_source = 10; + +int +main (int argc, char* argv[]) +{ + TAO_EC_Default_Factory::init_svcs (); + + ACE_DECLARE_NEW_CORBA_ENV; + ACE_TRY + { + // ORB initialization boiler plate... + CORBA::ORB_var orb = + CORBA::ORB_init (argc, argv, "", ACE_TRY_ENV); + ACE_TRY_CHECK; + + CORBA::Object_var object = + orb->resolve_initial_references ("RootPOA", ACE_TRY_ENV); + ACE_TRY_CHECK; + PortableServer::POA_var poa = + PortableServer::POA::_narrow (object.in (), ACE_TRY_ENV); + ACE_TRY_CHECK; + PortableServer::POAManager_var poa_manager = + poa->the_POAManager (ACE_TRY_ENV); + ACE_TRY_CHECK; + poa_manager->activate (ACE_TRY_ENV); + ACE_TRY_CHECK; + + // **************************************************************** + + TAO_EC_Event_Channel_Attributes attributes (poa.in (), + poa.in ()); + attributes.consumer_reconnect = 1; + attributes.supplier_reconnect = 1; + + TAO_EC_Event_Channel ec_impl (attributes); + ec_impl.activate (ACE_TRY_ENV); + ACE_TRY_CHECK; + + RtecEventChannelAdmin::EventChannel_var event_channel = + ec_impl._this (ACE_TRY_ENV); + ACE_TRY_CHECK; + + + // **************************************************************** + + // Obtain the consumer admin.. + RtecEventChannelAdmin::ConsumerAdmin_var consumer_admin = + event_channel->for_consumers (ACE_TRY_ENV); + ACE_TRY_CHECK; + + // **************************************************************** + + const int milliseconds = 50; + + Supplier supplier0; + Supplier supplier1; + + supplier0.connect (event_channel.in (), + milliseconds, + event_source, + event_type, + event_source, + event_type, + ACE_TRY_ENV); + ACE_TRY_CHECK; + + Supplier second_supplier; + + supplier1.connect (event_channel.in (), + milliseconds, + event_source, + event_type + 1, + event_source, + event_type + 1, + ACE_TRY_ENV); + ACE_TRY_CHECK; + + // **************************************************************** + + Consumer consumer01 ("Consumer/010"); + // Create a consumer, intialize its RT_Info structures, and + // connnect to the event channel.... + + ACE_ConsumerQOS_Factory consumer_qos0; + consumer_qos0.start_disjunction_group (); + consumer_qos0.insert (event_source, event_type, 0); + + ACE_ConsumerQOS_Factory consumer_qos1; + consumer_qos1.start_disjunction_group (); + consumer_qos1.insert (event_source, event_type + 1, 0); + + ACE_ConsumerQOS_Factory consumer_qos01; + consumer_qos01.start_disjunction_group (); + consumer_qos01.insert (event_source, event_type, 0); + consumer_qos01.insert (event_source, event_type + 1, 0); + + consumer01.connect (consumer_admin.in (), + consumer_qos01.get_ConsumerQOS (), + ACE_TRY_ENV); + ACE_TRY_CHECK; + + Consumer consumer0 ("Consumer/0"); + // Create a consumer, intialize its RT_Info structures, and + // connnect to the event channel.... + + consumer0.connect (consumer_admin.in (), + consumer_qos0.get_ConsumerQOS (), + ACE_TRY_ENV); + ACE_TRY_CHECK; + + Consumer consumer1 ("Consumer/1"); + // Create a consumer, intialize its RT_Info structures, and + // connnect to the event channel.... + + consumer1.connect (consumer_admin.in (), + consumer_qos1.get_ConsumerQOS (), + ACE_TRY_ENV); + ACE_TRY_CHECK; + + // **************************************************************** + + RtecEventComm::EventSet event0 (1); + event0.length (1); + event0[0].header.type = event_type; + event0[0].header.source = event_source; + + RtecEventComm::EventSet event1 (1); + event1.length (1); + event1[0].header.type = event_type + 1; + event1[0].header.source = event_source; + + // **************************************************************** + + Task task0 (&supplier0, event0); + Task task1 (&supplier1, event1); + + task0.activate (); + task1.activate (); + + // **************************************************************** + + const int iterations = 1000; + + for (int i = 0; i != iterations; ++i) + { + ACE_Time_Value tv (0, 10000); + consumer0.connect (consumer_admin.in (), + consumer_qos0.get_ConsumerQOS (), + ACE_TRY_ENV); + ACE_TRY_CHECK; + consumer1.connect (consumer_admin.in (), + consumer_qos1.get_ConsumerQOS (), + ACE_TRY_ENV); + ACE_TRY_CHECK; + if (i % 2 == 0) + { + consumer01.connect (consumer_admin.in (), + consumer_qos0.get_ConsumerQOS (), + ACE_TRY_ENV); + ACE_TRY_CHECK; + } + else + { + consumer01.connect (consumer_admin.in (), + consumer_qos01.get_ConsumerQOS (), + ACE_TRY_ENV); + ACE_TRY_CHECK; + } + + ACE_OS::sleep (tv); + } + + task0.stop (); + task1.stop (); + + ACE_Thread_Manager::instance ()->wait (); + + + // **************************************************************** + + // Cleanup.. + + consumer01.disconnect (ACE_TRY_ENV); + ACE_TRY_CHECK; + consumer1.disconnect (ACE_TRY_ENV); + ACE_TRY_CHECK; + consumer0.disconnect (ACE_TRY_ENV); + ACE_TRY_CHECK; + + // **************************************************************** + + supplier1.disconnect (ACE_TRY_ENV); + ACE_TRY_CHECK; + supplier0.disconnect (ACE_TRY_ENV); + ACE_TRY_CHECK; + + // **************************************************************** + + event_channel->destroy (ACE_TRY_ENV); + ACE_TRY_CHECK; + + // **************************************************************** + + poa->destroy (1, 1, ACE_TRY_ENV); + ACE_TRY_CHECK; + + // **************************************************************** + + ACE_DEBUG ((LM_DEBUG, + "Supplier 0 pushed %d events\n", task0.push_count ())); + ACE_DEBUG ((LM_DEBUG, + "Supplier 1 pushed %d events\n", task1.push_count ())); + consumer0.dump_results (task0.push_count (), 5); + consumer1.dump_results (task1.push_count (), 5); + CORBA::ULong max = task0.push_count () + task1.push_count (); + if (consumer01.event0_count != task0.push_count () + || consumer01.event_count > max) + { + ACE_DEBUG ((LM_DEBUG, + "ERROR - %s unexpected number of events <%d,%d>\n", + "Consumer/01", + consumer01.event0_count, + consumer01.event_count)); + } + else + { + ACE_DEBUG ((LM_DEBUG, + "Consumer/01 number of events " + "<%d,%d> within margins\n", + consumer01.event0_count, + consumer01.event_count)); + } + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Service"); + return 1; + } + ACE_ENDTRY; + return 0; +} + +// **************************************************************** + +Task::Task (Supplier *s, + const RtecEventComm::EventSet &e) + : supplier_ (s), + event_ (e), + stop_flag_ (0), + push_count_ (0) +{ +} + +int +Task::svc () +{ + ACE_TRY_NEW_ENV + { + this->run (ACE_TRY_ENV); + } + ACE_CATCHANY + { + return -1; + } + ACE_ENDTRY; + return 0; +} + +void +Task::stop (void) +{ + ACE_GUARD (ACE_SYNCH_MUTEX, ace_mon, this->lock_); + this->stop_flag_ = 1; +} + +CORBA::ULong +Task::push_count (void) +{ + return this->push_count_; +} + +void +Task::run (CORBA::Environment &ACE_TRY_ENV) +{ + int stop = 0; + do { + this->supplier_->push (this->event_, ACE_TRY_ENV); + ACE_CHECK; + + // Sleep for a short time to avoid spinning... + ACE_OS::sleep (0); + + ACE_GUARD (ACE_SYNCH_MUTEX, ace_mon, this->lock_); + + this->push_count_++; + + stop = this->stop_flag_; + } while (stop == 0); +} + +// **************************************************************** + +Consumer::Consumer (const char* name) + : event_count (0), + event0_count (0), + name_ (name) +{ +} + +void +Consumer::connect (RtecEventChannelAdmin::ConsumerAdmin_ptr consumer_admin, + const RtecEventChannelAdmin::ConsumerQOS &qos, + CORBA::Environment &ACE_TRY_ENV) +{ + if (CORBA::is_nil (this->supplier_proxy_.in ())) + { + this->supplier_proxy_ = + consumer_admin->obtain_push_supplier (ACE_TRY_ENV); + ACE_CHECK; + } + + // The canonical protocol to connect to the EC + + RtecEventComm::PushConsumer_var consumer = + this->_this (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 = expected_count - event_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; + } + + ACE_GUARD (ACE_SYNCH_MUTEX, ace_mon, this->lock_); + this->event_count++; + if (events[0].header.type == event_type) + this->event0_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) + : 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; + + 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->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 &event, + CORBA::Environment &ACE_TRY_ENV) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + this->consumer_proxy_->push (event, ACE_TRY_ENV); +} + +void +Supplier::disconnect_push_consumer (CORBA::Environment &) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ +} + +void +Supplier::disconnect_push_supplier (CORBA::Environment &) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ +} + +// **************************************************************** + +#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) + +#elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) + +#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/tests/Event/Basic/Atomic_Reconnect.dsp b/TAO/orbsvcs/tests/Event/Basic/Atomic_Reconnect.dsp new file mode 100644 index 00000000000..dd6349530cf --- /dev/null +++ b/TAO/orbsvcs/tests/Event/Basic/Atomic_Reconnect.dsp @@ -0,0 +1,102 @@ +# Microsoft Developer Studio Project File - Name="Atomic_Reconnect" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=Atomic_Reconnect - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "Atomic_Reconnect.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Atomic_Reconnect.mak" CFG="Atomic_Reconnect - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Atomic_Reconnect - Win32 Release" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "Atomic_Reconnect - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "Atomic_Reconnect - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\lib" /I "..\..\.." /I "..\..\..\.." /I "..\..\..\..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 ECTest.lib orbsvcs.lib TAO.lib ace.lib /nologo /subsystem:console /machine:I386 /libpath:"..\lib" /libpath:"..\..\..\orbsvcs" /libpath:"..\..\..\..\tao" /libpath:"..\..\..\..\..\ace"
+
+!ELSEIF "$(CFG)" == "Atomic_Reconnect - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\lib" /I "..\..\.." /I "..\..\..\.." /I "..\..\..\..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 ECTestd.lib orbsvcsd.lib TAOd.lib aced.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\lib" /libpath:"..\..\..\orbsvcs" /libpath:"..\..\..\..\tao" /libpath:"..\..\..\..\..\ace"
+
+!ENDIF
+
+# Begin Target
+
+# Name "Atomic_Reconnect - Win32 Release"
+# Name "Atomic_Reconnect - Win32 Debug"
+# Begin Group "Header Files"
+
+# PROP Default_Filter ".h"
+# Begin Source File
+
+SOURCE=.\Atomic_Reconnect.h
+# End Source File
+# End Group
+# Begin Group "Source Files"
+
+# PROP Default_Filter ".cpp"
+# Begin Source File
+
+SOURCE=.\Atomic_Reconnect.cpp
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/TAO/orbsvcs/tests/Event/Basic/Atomic_Reconnect.h b/TAO/orbsvcs/tests/Event/Basic/Atomic_Reconnect.h new file mode 100644 index 00000000000..9502d9cfdcd --- /dev/null +++ b/TAO/orbsvcs/tests/Event/Basic/Atomic_Reconnect.h @@ -0,0 +1,163 @@ +/* -*- C++ -*- */ +// $Id$ +// +// ============================================================================ +// +// = LIBRARY +// ORBSVCS Real-time Event Channel tests +// +// = FILENAME +// Atomic_Reconnect.h +// +// = AUTHOR +// Carlos O'Ryan (coryan@cs.wustl.edu) +// +// ============================================================================ + +#ifndef EC_ATOMIC_RECONNECT_H +#define EC_ATOMIC_RECONNECT_H + +#include "orbsvcs/Channel_Clients.h" +#include "orbsvcs/RtecEventChannelAdminS.h" +#include "ace/Task.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class Consumer : public POA_RtecEventComm::PushConsumer +{ + // = TITLE + // Simple consumer object + // + // = DESCRIPTION + // +public: + Consumer (const char* name); + // Constructor + + void connect (RtecEventChannelAdmin::ConsumerAdmin_ptr consumer_admin, + const RtecEventChannelAdmin::ConsumerQOS &qos, + CORBA::Environment &ACE_TRY_ENV); + void disconnect (CORBA::Environment &ACE_TRY_ENV); + // Simple connect/disconnect methods.. + + void dump_results (int expected_count, + int tolerance); + // Print out an error message if the event count is too far from the + // expected count. + + // = The RtecEventComm::PushConsumer methods + + virtual void push (const RtecEventComm::EventSet& events, + CORBA::Environment &_env) + ACE_THROW_SPEC ((CORBA::SystemException)); + virtual void disconnect_push_consumer (CORBA::Environment &) + ACE_THROW_SPEC ((CORBA::SystemException)); + // The skeleton methods. + + CORBA::ULong event_count; + // Keep track of the number of events received. + + CORBA::ULong event0_count; + // Number of events of type "0" received. + +private: + RtecEventChannelAdmin::ProxyPushSupplier_var supplier_proxy_; + // The proxy + + const char* name_; + // The name + + ACE_SYNCH_MUTEX lock_; + // Synchronize access to the counter +}; + +class Supplier : public POA_RtecEventComm::PushSupplier +{ + // = TITLE + // Simple supplier object + // + // = DESCRIPTION + // This class is a supplier of events. + // It simply register for two event typesone event type + // The class is just a helper to simplify common tasks in EC + // tests, such as subscribing for a range of events, disconnecting + // from the EC, informing the driver of shutdown messages, etc. + // + // There are several ways to connect and disconnect this class, + // and it is up to the driver program to use the right one. + // +public: + Supplier (void); + // Constructor + + // = The RtecEventComm::PushSupplier methods + + void connect (RtecEventChannelAdmin::EventChannel_ptr ec, + int milliseconds, + int published_source, + int published_type, + int event_source, + int event_type, + CORBA::Environment &ACE_TRY_ENV); + void disconnect (CORBA::Environment &ACE_TRY_ENV); + // Simple connect/disconnect methods.. + + void push (const RtecEventComm::EventSet& events, + CORBA::Environment &_env) + ACE_THROW_SPEC ((CORBA::SystemException)); + void disconnect_push_consumer (CORBA::Environment &) + ACE_THROW_SPEC ((CORBA::SystemException)); + // The Consumer side methods. + + virtual void disconnect_push_supplier (CORBA::Environment &) + ACE_THROW_SPEC ((CORBA::SystemException)); + // The skeleton methods. + +private: + RtecEventChannelAdmin::ProxyPushConsumer_var consumer_proxy_; + // Our proxy + + int event_source_; + // The event source + + int event_type_; + // The event type +}; + +// **************************************************************** + +class Task : public ACE_Task_Base +{ +public: + Task (Supplier *supplier, + const RtecEventComm::EventSet &event); + // Create the task... + + // = Check the ACE_Task_Base documentation. + int svc (void); + + void stop (void); + CORBA::ULong push_count (void); + + void run (CORBA::Environment &ACE_TRY_ENV); + // Run a single iteration of the test + +private: + Supplier *supplier_; + // The supplier we are turning into an active object + + RtecEventComm::EventSet event_; + // The event we push through the supplier + + int stop_flag_; + // Set to 1 when the test must stop + + CORBA::ULong push_count_; + // Count the number of push() calls + + ACE_SYNCH_MUTEX lock_; +}; + +#endif /* EC_ATOMIC_RECONNECT_H */ diff --git a/TAO/orbsvcs/tests/Event/Basic/Basic.dsw b/TAO/orbsvcs/tests/Event/Basic/Basic.dsw index 03992bcdbee..5f0e6b3a891 100644 --- a/TAO/orbsvcs/tests/Event/Basic/Basic.dsw +++ b/TAO/orbsvcs/tests/Event/Basic/Basic.dsw @@ -123,6 +123,18 @@ Package=<4> ###############################################################################
+Project: "Atomic_Reconnect"=.\Atomic_Reconnect.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
Global:
Package=<5>
diff --git a/TAO/orbsvcs/tests/Event/Basic/Makefile b/TAO/orbsvcs/tests/Event/Basic/Makefile index aa18fbebe9a..5bc87b037ea 100644 --- a/TAO/orbsvcs/tests/Event/Basic/Makefile +++ b/TAO/orbsvcs/tests/Event/Basic/Makefile @@ -21,7 +21,8 @@ BIN2 = Reconnect \ Wildcard \ Negation \ Disconnect \ - MT_Disconnect + MT_Disconnect \ + Atomic_Reconnect #### If the orbsvcs library wasn't built with all components, don't #### try to build certain tests. @@ -3099,6 +3100,127 @@ endif $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Default_Factory.i .obj/MT_Disconnect.o .obj/MT_Disconnect.so .shobj/MT_Disconnect.o .shobj/MT_Disconnect.so: MT_Disconnect.cpp MT_Disconnect.h \ + $(ACE_ROOT)/ace/Task.h \ + $(ACE_ROOT)/ace/Service_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.h \ + $(ACE_ROOT)/ace/ACE.h \ + $(ACE_ROOT)/ace/OS.h \ + $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/Min_Max.h \ + $(ACE_ROOT)/ace/streams.h \ + $(ACE_ROOT)/ace/Basic_Types.h \ + $(ACE_ROOT)/ace/Basic_Types.i \ + $(ACE_ROOT)/ace/Trace.h \ + $(ACE_ROOT)/ace/OS.i \ + $(ACE_ROOT)/ace/Log_Msg.h \ + $(ACE_ROOT)/ace/Log_Record.h \ + $(ACE_ROOT)/ace/Log_Priority.h \ + $(ACE_ROOT)/ace/Log_Record.i \ + $(ACE_ROOT)/ace/ACE.i \ + $(ACE_ROOT)/ace/Shared_Object.i \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.i \ + $(ACE_ROOT)/ace/Service_Object.i \ + $(ACE_ROOT)/ace/Thread_Manager.h \ + $(ACE_ROOT)/ace/Thread.h \ + $(ACE_ROOT)/ace/Thread.i \ + $(ACE_ROOT)/ace/Synch.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ + $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ + $(ACE_ROOT)/ace/Synch.i \ + $(ACE_ROOT)/ace/Synch_T.h \ + $(ACE_ROOT)/ace/Synch_T.i \ + $(ACE_ROOT)/ace/Atomic_Op.i \ + $(ACE_ROOT)/ace/Synch_T.cpp \ + $(ACE_ROOT)/ace/Containers.h \ + $(ACE_ROOT)/ace/Malloc_Base.h \ + $(ACE_ROOT)/ace/Containers.i \ + $(ACE_ROOT)/ace/Containers_T.h \ + $(ACE_ROOT)/ace/Containers_T.i \ + $(ACE_ROOT)/ace/Containers_T.cpp \ + $(ACE_ROOT)/ace/Malloc.h \ + $(ACE_ROOT)/ace/Malloc.i \ + $(ACE_ROOT)/ace/Malloc_T.h \ + $(ACE_ROOT)/ace/Free_List.h \ + $(ACE_ROOT)/ace/Free_List.i \ + $(ACE_ROOT)/ace/Free_List.cpp \ + $(ACE_ROOT)/ace/Malloc_T.i \ + $(ACE_ROOT)/ace/Malloc_T.cpp \ + $(ACE_ROOT)/ace/Memory_Pool.h \ + $(ACE_ROOT)/ace/Signal.h \ + $(ACE_ROOT)/ace/Signal.i \ + $(ACE_ROOT)/ace/Mem_Map.h \ + $(ACE_ROOT)/ace/Mem_Map.i \ + $(ACE_ROOT)/ace/Memory_Pool.i \ + $(ACE_ROOT)/ace/Singleton.h \ + $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(ACE_ROOT)/ace/Object_Manager.h \ + $(ACE_ROOT)/ace/Object_Manager.i \ + $(ACE_ROOT)/ace/Managed_Object.h \ + $(ACE_ROOT)/ace/Managed_Object.i \ + $(ACE_ROOT)/ace/Managed_Object.cpp \ + $(ACE_ROOT)/ace/Thread_Manager.i \ + $(ACE_ROOT)/ace/Task.i \ + $(ACE_ROOT)/ace/Task_T.h \ + $(ACE_ROOT)/ace/Message_Queue.h \ + $(ACE_ROOT)/ace/Message_Block.h \ + $(ACE_ROOT)/ace/Message_Block.i \ + $(ACE_ROOT)/ace/Message_Block_T.h \ + $(ACE_ROOT)/ace/Message_Block_T.i \ + $(ACE_ROOT)/ace/Message_Block_T.cpp \ + $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ + $(ACE_ROOT)/ace/Message_Queue_T.h \ + $(ACE_ROOT)/ace/Message_Queue_T.i \ + $(ACE_ROOT)/ace/Message_Queue_T.cpp \ + $(ACE_ROOT)/ace/Strategies.h \ + $(ACE_ROOT)/ace/Strategies_T.h \ + $(ACE_ROOT)/ace/Service_Config.h \ + $(ACE_ROOT)/ace/SString.h \ + $(ACE_ROOT)/ace/SString.i \ + $(ACE_ROOT)/ace/Service_Config.i \ + $(ACE_ROOT)/ace/Reactor.h \ + $(ACE_ROOT)/ace/Handle_Set.h \ + $(ACE_ROOT)/ace/Handle_Set.i \ + $(ACE_ROOT)/ace/Timer_Queue.h \ + $(ACE_ROOT)/ace/Timer_Queue_T.h \ + $(ACE_ROOT)/ace/Timer_Queue_T.i \ + $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ + $(ACE_ROOT)/ace/Reactor.i \ + $(ACE_ROOT)/ace/Reactor_Impl.h \ + $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ + $(ACE_ROOT)/ace/Synch_Options.h \ + $(ACE_ROOT)/ace/Synch_Options.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Functor.h \ + $(ACE_ROOT)/ace/Functor.i \ + $(ACE_ROOT)/ace/Functor_T.h \ + $(ACE_ROOT)/ace/Functor_T.i \ + $(ACE_ROOT)/ace/Functor_T.cpp \ + $(ACE_ROOT)/ace/Hash_Map_Manager.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Strategies_T.i \ + $(ACE_ROOT)/ace/Strategies_T.cpp \ + $(ACE_ROOT)/ace/Service_Repository.h \ + $(ACE_ROOT)/ace/Service_Types.h \ + $(ACE_ROOT)/ace/Service_Types.i \ + $(ACE_ROOT)/ace/Service_Repository.i \ + $(ACE_ROOT)/ace/WFMO_Reactor.h \ + $(ACE_ROOT)/ace/WFMO_Reactor.i \ + $(ACE_ROOT)/ace/Strategies.i \ + $(ACE_ROOT)/ace/Message_Queue.i \ + $(ACE_ROOT)/ace/Task_T.i \ + $(ACE_ROOT)/ace/Task_T.cpp \ + $(ACE_ROOT)/ace/Module.h \ + $(ACE_ROOT)/ace/Module.i \ + $(ACE_ROOT)/ace/Module.cpp \ + $(ACE_ROOT)/ace/Stream_Modules.h \ + $(ACE_ROOT)/ace/Stream_Modules.i \ + $(ACE_ROOT)/ace/Stream_Modules.cpp \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS.h \ @@ -3108,6 +3230,222 @@ endif $(TAO_ROOT)/tao/CDR.h \ $(TAO_ROOT)/tao/corbafwd.h \ $(ACE_ROOT)/ace/CDR_Stream.h \ + $(ACE_ROOT)/ace/CDR_Stream.i \ + $(TAO_ROOT)/tao/try_macros.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(TAO_ROOT)/tao/corbafwd.i \ + $(TAO_ROOT)/tao/Typecode.h \ + $(TAO_ROOT)/tao/Exception.h \ + $(TAO_ROOT)/tao/Exception.i \ + $(TAO_ROOT)/tao/Typecode.i \ + $(TAO_ROOT)/tao/CDR.i \ + $(TAO_ROOT)/tao/Environment.h \ + $(TAO_ROOT)/tao/Environment.i \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/Any.i \ + $(TAO_ROOT)/tao/TimeBaseC.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.h \ + $(TAO_ROOT)/tao/TimeBaseS_T.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.cpp \ + $(TAO_ROOT)/tao/TimeBaseS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseC.h \ + $(TAO_ROOT)/tao/corba.h \ + $(TAO_ROOT)/tao/ORB.h \ + $(TAO_ROOT)/tao/IOR_LookupTable.h \ + $(TAO_ROOT)/tao/Services.h \ + $(TAO_ROOT)/tao/Sequence.h \ + $(TAO_ROOT)/tao/Managed_Types.h \ + $(TAO_ROOT)/tao/Managed_Types.i \ + $(TAO_ROOT)/tao/Sequence.i \ + $(TAO_ROOT)/tao/Sequence_T.h \ + $(TAO_ROOT)/tao/Sequence_T.i \ + $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Services.i \ + $(TAO_ROOT)/tao/IORManipulation.h \ + $(TAO_ROOT)/tao/IORS.h \ + $(TAO_ROOT)/tao/IORC.h \ + $(TAO_ROOT)/tao/IORC.i \ + $(TAO_ROOT)/tao/Servant_Base.h \ + $(TAO_ROOT)/tao/POAC.h \ + $(TAO_ROOT)/tao/PolicyC.h \ + $(TAO_ROOT)/tao/CurrentC.h \ + $(TAO_ROOT)/tao/CurrentC.i \ + $(TAO_ROOT)/tao/PolicyC.i \ + $(TAO_ROOT)/tao/POAC.i \ + $(TAO_ROOT)/tao/Servant_Base.i \ + $(TAO_ROOT)/tao/IORS.i \ + $(TAO_ROOT)/tao/Interceptor.h \ + $(TAO_ROOT)/tao/InterceptorS.h \ + $(TAO_ROOT)/tao/InterceptorC.h \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/InterceptorC.i \ + $(TAO_ROOT)/tao/Interceptor.i \ + $(TAO_ROOT)/tao/ORB.i \ + $(TAO_ROOT)/tao/NVList.h \ + $(TAO_ROOT)/tao/NVList.i \ + $(TAO_ROOT)/tao/Principal.h \ + $(TAO_ROOT)/tao/Principal.i \ + $(TAO_ROOT)/tao/Request.h \ + $(TAO_ROOT)/tao/Context.h \ + $(TAO_ROOT)/tao/Context.i \ + $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/PollableC.h \ + $(TAO_ROOT)/tao/MessagingC.i \ + $(TAO_ROOT)/tao/Request.i \ + $(TAO_ROOT)/tao/Server_Request.h \ + $(TAO_ROOT)/tao/Object_KeyC.h \ + $(TAO_ROOT)/tao/Object_KeyC.i \ + $(TAO_ROOT)/tao/GIOP.h \ + $(TAO_ROOT)/tao/GIOP.i \ + $(TAO_ROOT)/tao/Server_Request.i \ + $(TAO_ROOT)/tao/Marshal.h \ + $(TAO_ROOT)/tao/Marshal.i \ + $(TAO_ROOT)/tao/singletons.h \ + $(TAO_ROOT)/tao/POA.h \ + $(TAO_ROOT)/tao/Object_Adapter.h \ + $(TAO_ROOT)/tao/Key_Adapters.h \ + $(ACE_ROOT)/ace/Map.h \ + $(ACE_ROOT)/ace/Map.i \ + $(ACE_ROOT)/ace/Map_T.h \ + $(ACE_ROOT)/ace/Pair.h \ + $(ACE_ROOT)/ace/Pair.i \ + $(ACE_ROOT)/ace/Pair_T.h \ + $(ACE_ROOT)/ace/Pair_T.i \ + $(ACE_ROOT)/ace/Pair_T.cpp \ + $(ACE_ROOT)/ace/Map_Manager.h \ + $(ACE_ROOT)/ace/Map_Manager.i \ + $(ACE_ROOT)/ace/Map_Manager.cpp \ + $(ACE_ROOT)/ace/Active_Map_Manager.h \ + $(ACE_ROOT)/ace/Active_Map_Manager.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Map_T.i \ + $(ACE_ROOT)/ace/Map_T.cpp \ + $(TAO_ROOT)/tao/Key_Adapters.i \ + $(TAO_ROOT)/tao/Server_Strategy_Factory.h \ + $(TAO_ROOT)/tao/poa_macros.h \ + $(TAO_ROOT)/tao/POAS.h \ + $(TAO_ROOT)/tao/POA_CORBA.h \ + $(TAO_ROOT)/tao/DynAnyC.h \ + $(TAO_ROOT)/tao/DynAnyC.i \ + $(TAO_ROOT)/tao/DomainC.h \ + $(TAO_ROOT)/tao/DomainC.i \ + $(TAO_ROOT)/tao/POAS.i \ + $(TAO_ROOT)/tao/Active_Object_Map.h \ + $(TAO_ROOT)/tao/Active_Object_Map.i \ + $(TAO_ROOT)/tao/Object_Adapter.i \ + $(TAO_ROOT)/tao/POAManager.h \ + $(TAO_ROOT)/tao/POAManager.i \ + $(TAO_ROOT)/tao/ImplRepoC.h \ + $(TAO_ROOT)/tao/Operation_Table.h \ + $(TAO_ROOT)/tao/Stub.h \ + $(TAO_ROOT)/tao/Pluggable.h \ + $(TAO_ROOT)/tao/Pluggable.i \ + $(TAO_ROOT)/tao/MProfile.h \ + $(TAO_ROOT)/tao/Profile.h \ + $(TAO_ROOT)/tao/Tagged_Components.h \ + $(TAO_ROOT)/tao/CONV_FRAMEC.h \ + $(TAO_ROOT)/tao/CONV_FRAMEC.i \ + $(TAO_ROOT)/tao/Tagged_Components.i \ + $(TAO_ROOT)/tao/Profile.i \ + $(TAO_ROOT)/tao/MProfile.i \ + $(TAO_ROOT)/tao/Stub.i \ + $(TAO_ROOT)/tao/ORB_Core.h \ + $(TAO_ROOT)/tao/Policy_Manager.h \ + $(TAO_ROOT)/tao/Policy_Manager.i \ + $(TAO_ROOT)/tao/Resource_Factory.h \ + $(TAO_ROOT)/tao/Protocol_Factory.h \ + $(TAO_ROOT)/tao/params.h \ + $(TAO_ROOT)/tao/params.i \ + $(TAO_ROOT)/tao/ORB_Core.i \ + $(ACE_ROOT)/ace/Dynamic_Service.h \ + $(ACE_ROOT)/ace/Dynamic_Service.cpp \ + $(TAO_ROOT)/tao/Invocation.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.i \ + $(TAO_ROOT)/tao/TAOC.h \ + $(TAO_ROOT)/tao/TAOC.i \ + $(TAO_ROOT)/tao/Invocation.i \ + $(TAO_ROOT)/tao/ImplRepoC.i \ + $(TAO_ROOT)/tao/POA.i \ + $(TAO_ROOT)/tao/debug.h \ + $(TAO_ROOT)/tao/Client_Strategy_Factory.h \ + $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \ + $(TAO_ROOT)/tao/DynAny_i.h \ + $(TAO_ROOT)/tao/Union.h \ + $(TAO_ROOT)/tao/ValueBase.h \ + $(TAO_ROOT)/tao/ValueBase.i \ + $(TAO_ROOT)/tao/ValueFactory.h \ + $(TAO_ROOT)/tao/ValueFactory.i \ + $(TAO_ROOT)/tao/ObjectIDList.h \ + $(TAO_ROOT)/tao/ObjectIDList.i \ + $(TAO_ROOT)/tao/WrongTransactionC.h \ + $(TAO_ROOT)/tao/InterfaceC.h \ + $(TAO_ROOT)/tao/BoundsC.h \ + $(TAO_ROOT)/tao/BoundsC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/orbsvcs_export.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Time_Utilities.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Time_Utilities.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Event_Utilities.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Event_Service_Constants.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Event_Utilities.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Event_Channel.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Factory.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Factory.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Defaults.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Event_Channel.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Default_Factory.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Default_Factory.i + +.obj/Atomic_Reconnect.o .obj/Atomic_Reconnect.so .shobj/Atomic_Reconnect.o .shobj/Atomic_Reconnect.so: Atomic_Reconnect.cpp Atomic_Reconnect.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Channel_Clients.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Channel_Clients_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS.h \ + $(TAO_ROOT)/tao/TimeBaseS.h \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/Any.h \ + $(TAO_ROOT)/tao/CDR.h \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Stream.h \ $(ACE_ROOT)/ace/Message_Block.h \ $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ @@ -3397,6 +3735,9 @@ endif $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.cpp \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Channel_Clients_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Channel_Clients_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerC.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerC.i \ @@ -3410,6 +3751,17 @@ endif $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.cpp \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.i \ + $(ACE_ROOT)/ace/Task.h \ + $(ACE_ROOT)/ace/Task.i \ + $(ACE_ROOT)/ace/Task_T.h \ + $(ACE_ROOT)/ace/Task_T.i \ + $(ACE_ROOT)/ace/Task_T.cpp \ + $(ACE_ROOT)/ace/Module.h \ + $(ACE_ROOT)/ace/Module.i \ + $(ACE_ROOT)/ace/Module.cpp \ + $(ACE_ROOT)/ace/Stream_Modules.h \ + $(ACE_ROOT)/ace/Stream_Modules.i \ + $(ACE_ROOT)/ace/Stream_Modules.cpp \ $(TAO_ROOT)/orbsvcs/orbsvcs/Time_Utilities.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Time_Utilities.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event_Utilities.h \ diff --git a/TAO/orbsvcs/tests/Event/Basic/mt_disconnect.conf b/TAO/orbsvcs/tests/Event/Basic/mt.svc.conf index a0fec53e3f8..a0fec53e3f8 100644 --- a/TAO/orbsvcs/tests/Event/Basic/mt_disconnect.conf +++ b/TAO/orbsvcs/tests/Event/Basic/mt.svc.conf diff --git a/TAO/orbsvcs/tests/Event/Basic/run_test.pl b/TAO/orbsvcs/tests/Event/Basic/run_test.pl index 9aa1e088beb..11b67b021c6 100755 --- a/TAO/orbsvcs/tests/Event/Basic/run_test.pl +++ b/TAO/orbsvcs/tests/Event/Basic/run_test.pl @@ -91,8 +91,18 @@ if ($T->TimedWait (60) == -1) { } print STDERR "\n\nMT Disconnects test\n"; -$T = Process::Create ($prefix . "MT_Disconnect".$EXE_EXT); -if ($T->TimedWait (60) == -1) { +$T = Process::Create ($prefix . "MT_Disconnect".$EXE_EXT, + " -ORBSvcConf mt.svc.conf"); +if ($T->TimedWait (120) == -1) { + print STDERR "ERROR: Test timedout\n"; + $status = 1; + $T->Kill (); $T->TimedWait (1); +} + +print STDERR "\n\nAtomic Reconnection test\n"; +$T = Process::Create ($prefix . "Atomic_Reconnect".$EXE_EXT, + " -ORBSvcConf mt.svc.conf"); +if ($T->TimedWait (120) == -1) { print STDERR "ERROR: Test timedout\n"; $status = 1; $T->Kill (); $T->TimedWait (1); diff --git a/TAO/orbsvcs/tests/Event/Event.dsw b/TAO/orbsvcs/tests/Event/Event.dsw index 1ec9d065330..069a92e41bb 100644 --- a/TAO/orbsvcs/tests/Event/Event.dsw +++ b/TAO/orbsvcs/tests/Event/Event.dsw @@ -165,6 +165,21 @@ Package=<4> ###############################################################################
+Project: "Atomic_Reconnect"=.\Basic\Atomic_Reconnect.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name ECTest
+ End Project Dependency
+}}}
+
+###############################################################################
+
Global:
Package=<5>
|