diff options
author | nobody <nobody@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-10-15 16:46:05 +0000 |
---|---|---|
committer | nobody <nobody@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-10-15 16:46:05 +0000 |
commit | 75cd0a04895e7809fddf92406fe1bd39e954f8cd (patch) | |
tree | f835245e9110ae7bd7d15e0156e256522572b961 | |
parent | 320160ab6e19cfcc52967af30e33eb8890f64685 (diff) | |
download | ATCD-merge_101503.tar.gz |
This commit was manufactured by cvs2svn to create tag 'merge_101503'.merge_101503
420 files changed, 13601 insertions, 17914 deletions
diff --git a/ACE-INSTALL.html b/ACE-INSTALL.html index 4136498c2ec..ae9d95c4985 100644 --- a/ACE-INSTALL.html +++ b/ACE-INSTALL.html @@ -179,8 +179,7 @@ supported by the DOC group, Riverace, or OCI. <P> We've also added some support for <A HREF="#mingw">GNU g++ with MinGW</A>, - <A HREF="#borland">Borland C++ 5.5, Borland C++ Builder 4.0/5.0/6.0 - and Borland C++ BuilderX</A>, and IBM's VisualAge C++ compiler. + Borland C++ Builder 4.0 and later, and IBM's VisualAge C++ compiler. Since we don't have these compilers we rely on the ACE+TAO users community to maintain these ports. Therefore, please send email to the ACE mailing list if you run into problems. <P> @@ -1207,14 +1206,14 @@ with Borland C++ Builder. <P> <P><hr align=left width="50%"><P> <H4><A NAME="borland">Building and Installing ACE on Win32 with Borland -C++</A></H4> +C++Builder</A></H4> If you are building for a machine without a network card, you may want to check <A HREF="#win32nonic">here</A> first. <P> <OL> <LI>Uncompress the ACE distribution into a directory, where it will - create an +create an ACE_wrappers directory containing the source. The ACE_wrappers directory will be referred to as ACE_ROOT in the following steps -- so ACE_ROOT\ace would be C:\ACE_wrappers\ace if you uncompressed into the @@ -1241,7 +1240,7 @@ to check <A HREF="#win32nonic">here</A> first. <P> <BR> <CODE>set ACE_ROOT=C:\ACE_wrappers</CODE><BR> <BR> - <LI>Set the BCBVER environment vairable to the main version of your Borland C++ compiler. + <LI>Set the BCBVER environment vairable to the main version of your BCB compiler. Currently 4, 5, and 6 are supported. For example:<BR> <BR> <CODE>set BCBVER=5</CODE><BR> @@ -1271,12 +1270,6 @@ variables Set the environment variable below to build a version of ACE that is build against the VCL-compatible run-time library. This can only be used with BCB version 4<BR> <CODE>set PASCAL=1</CODE><BR> <BR> - Set the environment variable below to build a version of ACE using the - C++BuilderX preview compiler. This compiler isn't supported at this moment - but by setting this environment variable the new compiler is used and - you can expirement with this compiler.<BR> - <CODE>set CBX=1</CODE><BR> - <BR> You can then start the build with the command <BR><CODE>make -f Makefile.bor</CODE><BR> <BR> @@ -1308,10 +1301,9 @@ pascal). To build VCL compatible libraries try make -f Makefile.bor </CODE></PRE></BLOCKQUOTE> <P> -The Borland C++ Builder 4.0/5.0/6.0 port has been done by <A -HREF="mailto:jody@atdesk.com">Jody Hagins</A>, <A -HREF="mailto:chris@kohlhoff.com">Christopher Kohlhoff</A> and <A -HREF="mailto:jwillemsen@remedy.nl">Johnny Willemsen</A>. <P> +The Borland C++ Builder 4.0/5.0 port has been done by <A +HREF="mailto:jody@atdesk.com">Jody Hagins</A> and <A +HREF="mailto:chris@kohlhoff.com">Christopher Kohlhoff</A>. <P> <B>ACE TESTS</B><P> @@ -1321,9 +1313,10 @@ Makefile.bor file, that is:<P> make -f Makefile.bor </CODE></BLOCKQUOTE><P> -Once you build all the tests, you can run the perl script:<P> +Once you build all the tests, you can run a perl script:<P> <BLOCKQUOTE><CODE>run_test.pl -ExeSubDir -Dynamic\Release</CODE></BLOCKQUOTE><P> in the +Dynamic\Release</CODE></BLOCKQUOTE><P> or the the batch file:<P> +<BLOCKQUOTE><CODE>run_tests.bat bor</CODE></BLOCKQUOTE><P> in the <code>tests</code> directory to try all the tests. You need to make sure the ACE bin directory (in this case ACE_ROOT\bin\Dynamic\Release) is on the path before you try to run the tests.<p> @@ -1453,7 +1446,8 @@ The tests are located in ACE_ROOT\tests. There is also a workspace in that directory to build all the tests (tests.dsw)<P> Once you build all the tests (Batch Build works well for this), you -can run perl script <code>run_test.pl</code> in the +can run perl script <code>run_test.pl</code> or the the batch file <a +href="tests/run_tests.bat"><code>run_tests.bat</code></a> in the <code>tests</code> directory to try all the tests.<p> <A NAME="win32nonic"> diff --git a/ChangeLog b/ChangeLog index 519de2ab1ff..9f2195ddbfc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,233 +1,28 @@ -Wed Oct 15 13:22:32 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl> - - * include/makeinclude/platform_linux_borland.GNU: - Also set versioned_so to 0 in this file. - -Wed Oct 15 13:16:12 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl> - - * include/makeinclude/platform_mingw32.GNU: - * include/makeinclude/platform_cygwin32.GNU: - Instead of setting SONAME and SOVERSION to empty, set - versioned_so to 0 to indicate that versioned dll's should - be used because cygwin and mingw have problem with this. - This makes Cygwin/MinGW working again. - -Wed Oct 15 08:45:20 EDT 2003 Kevin Bryank <bryank@cs.uri.edu> - - * bin/MakeProjectCreator/config/rtcosscheduling.mpb: - Adding base project for using the RTC 1.0 Scheduling Service - -Wed Oct 15 10:40:12 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl> - - * ace/Select_Reactor_Base.cpp: - Fixed unused argument warning when ACE_HAS_REACTOR_NOTIFICATION_QUEUE - is defined - -Tue Oct 14 21:54:07 2003 Nanbor Wang <nanbor@.cs.wustl.edu> - - * Makefile (CIAO_CORE_DIRS): Added Kokyu to the list of base - library for CIAO. Although CIAO doesn't depend on Kokyu, it is - needed to allow the compilation in orbsvcs/orbsvcs/ to run to - completion. - -Tue Oct 14 23:21:00 UTC 2003 Don Hinton <dhinton@dresystems.com> - - * ace/OS.h: - Removed following method declarations that were not implemented - or used: times(), cond_timedwait_i(), alarm_i(), ualarm_i(), - sleep_i(), nanosleep_i(), select_i(), poll_i(), sema_wait_i(), - sigtimedwait_i(), gettimeofday_i(). - - * ace/Process.h: - Fixed typo and added #include of Global_Macros.h. - -Tue Oct 14 17:13:46 2003 Douglas C. Schmidt <schmidt@ace.cs.wustl.edu> - - * ace/Process.h: Put the ACE_Process copy constructor and - assignment operator in the private part of the class to disallow - copying. Thanks to Adam Fanello <yahoo@fanello.net> for - reporting this. - - * ace/OS.cpp: Added patches to support PHARLAP. Thanks - to Ira Burton <imburton@micron.com> for supplying these. - -Tue Oct 14 13:54:19 2003 Steve Huston <shuston@riverace.com> - Picked up from ACE 5.3: - Wed Jun 11 17:18:39 2003 Steve Huston <shuston@riverace.com> - - * include/makeinclude/wrapper_macros.GNU: Make SOVERSION - user-settable if versioned_so is enabled. Thanks to Craig L. - Ching <cching@mqsoftware.com> for this idea. - Also moved the versioned_so and SOVERSION setup to after - platform_macros.GNU is included so that users can set this stuff - up in their platform_macros.GNU file. The ACE_MAJOR_VERSION, - etc. variables are still set up before platform_macros.GNU, though, - in case platform_macros.GNU wants to use them. - -Tue Oct 14 10:45:32 2003 Nanbor Wang <nanbor@.cs.wustl.edu> - - * Makefile: Added a new CIAO_Core target for building all CIAO - core libraries and tools, including everything they need. - Thanks to Gautam for suggesting this. - -Tue Oct 14 03:43:47 2003 Venkita Subramonian <venkita@cs.wustl.edu> - - * Kokyu/DSRT_Direct_Dispatcher_Impl_T.cpp: Added this-> - qualification to instance variables in base class to fix - compile warnings in HPUX build. - - * Kokyu/Default_Dispatcher_Impl.cpp: - * Kokyu/DSRT_CV_Dispatcher_Impl_T.cpp: - * Kokyu/Dispatcher_Task.cpp: - * Kokyu/Dispatcher_Task.h: - * Kokyu/Kokyu.h: - * Kokyu/Kokyu_defs.i: Removed/added comments - -Tue Oct 14 05:50:43 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl> - - * tests/Reactor_Notification_Queue_Test.cpp: - Fixed compile error in MSVC6 WChar build - -Mon Oct 13 17:52:31 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> - - * tests/Reactor_Notification_Queue_Test.cpp: Fixed a warning in - g++ builds. - -Tue Oct 14 05:27:03 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> - - * tests/Reactor_Notification_Queue_Test.dsp: Added this time for - real. - -Mon Oct 13 15:25:41 2003 Venkita Subramonian <venkita@cs.wustl.edu> - - * bin/MakeProjectCreator/config/kokyu_dsrt_schedulers.mpb: - Added include path to the Kokyu_dsrt_schedulers directory. - -Mon Oct 13 08:51:29 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> - - * ace/ace_wchar.inl: Reverted the change to BUG 1605 that was - applied. The MSDN documentation doesn't suggest a 1 instead of a - -1. Reopening BUG 1605. - -Mon Oct 13 12:39:33 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl> - - * tests/Makefile.tests: - Fixed typo in Reactor_Notification_Queue_Test - -Mon Oct 13 08:36:43 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl> - - * Kokyu/Kokyu_dsrt.h: - * Kokyu/DSRT_CV_Dispatcher_Impl_T.h: - Fixed fuzz pre/post error. - - * tests/Reactor_Notification_Queue_Test.cpp: - Fixed fuzz file mismatch error. - -Mon Oct 13 06:34:12 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl> - - * bin/mpc.pl: - * bin/MakeProjectCreator/templates/cbxexe.mpt: - * bin/MakeProjectCreator/templates/cbxdll.mpt: - * bin/MakeProjectCreator/templates/cbx.mpd: - * bin/MakeProjectCreator/modules/CbxProjectCreator.pm: - Added first version of cbx generator. This generated project files - for the new C++BuilderX development environment. This just sets some - of the options and adds all files to the project. - -Sun Oct 12 21:07:04 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> - - * tests/Makefile.tests: - * tests/Tests.bor: - * tests/run_test.lst: - * tests/tests.mpc: Regular exercise for building and running the - test on all the platforms. - -Sun Oct 12 19:03:31 2003 Venkita Subramonian <venkita@cs.wustl.edu> - - * Kokyu/Dispatcher_Task.cpp: Changed the Null lock in the - allocator to Mutex lock. - -Sun Oct 12 17:20:40 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> - - * ace/Select_Reactor_Base.cpp: Fix for [BUG 1268]. Please refer to - bugzilla database at - - http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=1268 - - for more details on the source of the problem and the solution - for the same. Thanks to Carlos O'Ryan for providing patches. - - * tests/Reactor_Notification_Queue_Test.cpp: - * tests/Reactor_Notification_Queue_Test.dsp: - * tests/tests.dsw: New test that stresses the feature of sending - notify messages to the reactor. Thanks to Carlos O'Ryan for - providing the test. - -Sun Oct 12 14:08:38 2003 Venkita Subramonian <venkita@cs.wustl.edu> - - * bin/MakeProjectCreator/config/kokyu_dsrt_schedulers.mpb: - * bin/MakeProjectCreator/config/kokyu_dsrt_scheduler_client.mpb: - * bin/MakeProjectCreator/config/kokyu_dsrt_scheduler_server.mpb: - Added MPC base project files for Kokyu DSRT schedulers. - -Sun Oct 12 11:48:02 2003 Venkita Subramonian <venkita@cs.wustl.edu> - - * Kokyu/Kokyu.html: - * Kokyu/kokyu1.jpg: - * Kokyu/kokyu2.jpg: - * Kokyu/KokyuEC.jpg: Added some initial documentation on Kokyu. - -Sun Oct 12 17:34:12 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl> - - * ACE-INSTALL.html: - Removed mentioning of tests/run_tests.bat, it has been removed - some time ago and the perl script run_tests.pl is the only one - to use. Updated documentation for Borland support. CBuilderX is - now supported, but not the new preview compiler that is shipped - with CBuilderX. - -Sun Oct 12 08:42:32 2003 Venkita Subramonian <venkita@cs.wustl.edu> - - * Kokyu/tests/DSRT_MIF/MIF.cpp: - * Kokyu/tests/DSRT_MIF/Makefile: - * Kokyu/tests/FIFO/test.cpp: - * Kokyu/tests/FIFO/README: - * Kokyu/tests/EDF/README: - * Kokyu/tests/EDF/test.cpp: Added more output info - statements. Added README for the examples. - -Sat Oct 11 23:48:21 2003 Ossama Othman <ossama@dre.vanderbilt.edu> - - * bin/tao_other_tests.lst: - - Enabled TAO load balancer infrastructure controlled membership - and CPU load monitor tests. - Sat Oct 11 21:51:52 2003 Venkita Subramonian <venkita@cs.wustl.edu> * Kokyu/Kokyu_defs.{h,i,cpp}: * Kokyu/Default_Dispatcher_Impl.cpp: Fixed some minor bugs related to setting the dispatcher with the correct sched policy. - + * Kokyu/tests/FIFO/test.cpp: Added some output print statements to - print error messages on dispatcher failure. + print error messages on dispatcher failure. Sat Oct 11 17:39:09 2003 Venkita Subramonian <venkita@cs.wustl.edu> - * Kokyu/Dispatcher_Task.i: - * Kokyu/Dispatcher_Task.h: - * Kokyu/DSRT_Direct_Dispatcher_Impl_T.cpp: - * Kokyu/DSRT_CV_Dispatcher_Impl_T.cpp: + * Kokyu/Dispatcher_Task.i: + * Kokyu/Dispatcher_Task.h: + * Kokyu/DSRT_Direct_Dispatcher_Impl_T.cpp: + * Kokyu/DSRT_CV_Dispatcher_Impl_T.cpp: Add this-> qualification when referencing instance variables in base class to get rid of compiler warnings in HPUX build. - + * ace/ace_wchar.inl: Fix for BUG 1605. Thanks to Dmitry Botcharnikov <dimab@garant.ru> and Stephan Bettermann <sbetterm@erggroup.com> for reporting the problem and suggesting - a solution. Please see + a solution. Please see - http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=1605 + http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=1605 for a description of the problem. @@ -239,20 +34,20 @@ Sat Oct 11 11:01:05 2003 Venkita Subramonian <venkita@cs.wustl.edu> Fri Oct 10 22:56:35 2003 Venkita Subramonian <venkita@cs.wustl.edu> - * Kokyu/Kokyu_defs.{h,i,cpp}: - * Kokyu/Dispatcher_Task.{i,h,cpp}: - * Kokyu/Dispatcher_Impl.h: - * Kokyu/Default_Dispatcher_Impl.cpp: - + * Kokyu/Kokyu_defs.{h,i,cpp}: + * Kokyu/Dispatcher_Task.{i,h,cpp}: + * Kokyu/Dispatcher_Impl.h: + * Kokyu/Default_Dispatcher_Impl.cpp: + Added allocator, sched scope, sched policy, reordering queue attributes to the Dispatcher_Attributes class. This will make the dispatcher more configurable. - - * Kokyu/tests/FIFO/test.cpp: - * Kokyu/tests/EDF/test.cpp: - + + * Kokyu/tests/FIFO/test.cpp: + * Kokyu/tests/EDF/test.cpp: + Added command line options to specify the sched policy. - + Fri Oct 10 19:52:26 UTC 2003 Don Hinton <dhinton@dresystems.com> * ace/OS.{h,i}: @@ -369,6 +164,7 @@ Tue Oct 07 06:07:12 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl> * bin/MakeProjectCreator/templates/bor.mpd: Generate NAME, else nothing happens when building with Borland. + Fri Oct 03 22:41:20 2003 Chris Cleeland <cleeland@ociweb.com> * ACE version 5.3.4 released. @@ -409,6 +205,7 @@ Thu Oct 2 07:33:07 2003 Venkita Subramonian <venkita@cs.wustl.edu> * Kokyu/tests/FIFO/test.cpp: Added shutdown of the dispatcher at the end. + Wed Oct 1 10:59:35 2003 Chad Elliott <elliott_c@ociweb.com> * apps/gperf/src/gperf.mpc: @@ -693,6 +490,7 @@ Tue Sep 16 11:49:19 2003 Chad Elliott <elliott_c@ociweb.com> Tue Sep 16 11:55:18 2003 Gautam H. Thaker <gthaker@atl.lmco.com> + * performance-tests/SCTP/SOCK_SEQPACK_srv.cpp: fix compiler warning due to unintialized pointer @@ -711,6 +509,7 @@ Tue Sep 16 11:55:18 2003 Gautam H. Thaker <gthaker@atl.lmco.com> Changes to support changed LKSCTP API support from 2.6.test.4 kernel an onward. + Tue Sep 16 10:28:02 2003 Chad Elliott <elliott_c@ociweb.com> * bin/MakeProjectCreator/modules/ProjectCreator.pm: diff --git a/Kokyu/DSRT_CV_Dispatcher_Impl_T.cpp b/Kokyu/DSRT_CV_Dispatcher_Impl_T.cpp index a5d28115fac..737ec3e105b 100644 --- a/Kokyu/DSRT_CV_Dispatcher_Impl_T.cpp +++ b/Kokyu/DSRT_CV_Dispatcher_Impl_T.cpp @@ -73,9 +73,9 @@ schedule_i (Guid_t id, const DSRT_QoSDescriptor& qos) this->blocked_prio_, this->sched_policy_) == -1) { - ACE_ERROR_RETURN ((LM_ERROR, + ACE_ERROR ((LM_ERROR, ACE_TEXT ("%p\n"), - ACE_TEXT ("thr_setprio failed")), -1); + ACE_TEXT ("thr_setprio failed"))); } ACE_NEW_RETURN (item, diff --git a/Kokyu/DSRT_CV_Dispatcher_Impl_T.h b/Kokyu/DSRT_CV_Dispatcher_Impl_T.h index 305afb55ccc..0cf7045d247 100644 --- a/Kokyu/DSRT_CV_Dispatcher_Impl_T.h +++ b/Kokyu/DSRT_CV_Dispatcher_Impl_T.h @@ -10,7 +10,7 @@ #ifndef DSRT_CV_DISPATCHER_IMPL_T_H #define DSRT_CV_DISPATCHER_IMPL_T_H -#include /**/ "ace/pre.h" +#include "ace/pre.h" #include "ace/Task.h" #include "ace/Copy_Disabled.h" @@ -36,7 +36,7 @@ namespace Kokyu typedef typename DSRT_Scheduler_Traits::QoSDescriptor_t DSRT_QoSDescriptor; - DSRT_CV_Dispatcher_Impl (ACE_Sched_Params::Policy sched_policy, + DSRT_CV_Dispatcher_Impl (ACE_Sched_Params::Policy sched_policy, int sched_scope); int init_i (const DSRT_ConfigInfo&); @@ -82,5 +82,5 @@ namespace Kokyu #pragma implementation ("DSRT_CV_Dispatcher_Impl_T.cpp") #endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ -#include /**/ "ace/post.h" +#include "ace/post.h" #endif /* DSRT_DIRECT_DISPATCHER_IMPL_T_H */ diff --git a/Kokyu/DSRT_Direct_Dispatcher_Impl_T.cpp b/Kokyu/DSRT_Direct_Dispatcher_Impl_T.cpp index 20f61222b11..2d3c996a23d 100644 --- a/Kokyu/DSRT_Direct_Dispatcher_Impl_T.cpp +++ b/Kokyu/DSRT_Direct_Dispatcher_Impl_T.cpp @@ -188,7 +188,7 @@ template <class DSRT_Scheduler_Traits> int DSRT_Direct_Dispatcher_Impl<DSRT_Scheduler_Traits>:: schedule_i (Guid_t id, const DSRT_QoSDescriptor& qos) { - ACE_GUARD_RETURN (ACE_SYNCH_RECURSIVE_MUTEX, guard, this->synch_lock_, -1); + ACE_GUARD_RETURN (ACE_SYNCH_RECURSIVE_MUTEX, guard, synch_lock_, -1); #ifdef KOKYU_DSRT_LOGGING ACE_DEBUG ((LM_DEBUG, @@ -216,9 +216,9 @@ schedule_i (Guid_t id, const DSRT_QoSDescriptor& qos) this->blocked_prio_, this->sched_policy_) == -1) { - ACE_ERROR_RETURN ((LM_ERROR, + ACE_ERROR ((LM_ERROR, ACE_TEXT ("%p\n"), - ACE_TEXT ("thr_setprio failed")), -1); + ACE_TEXT ("thr_setprio failed"))); } #ifdef KOKYU_DSRT_LOGGING diff --git a/Kokyu/Default_Dispatcher_Impl.cpp b/Kokyu/Default_Dispatcher_Impl.cpp index 9403b46a892..3b7dbcafa4c 100644 --- a/Kokyu/Default_Dispatcher_Impl.cpp +++ b/Kokyu/Default_Dispatcher_Impl.cpp @@ -127,10 +127,8 @@ Default_Dispatcher_Impl::dispatch_i (const Dispatch_Command* cmd, Dispatcher_Task* task = find_task_with_preemption_prio (qos_info.preemption_priority_); - //@@VS - We should insert this into the lowest prio queue. - //How do we know that the last queue is the lowest prio queue. if (task == 0) - task = tasks_[ntasks_-1].get (); + task = tasks_[0].get (); return task->enqueue (cmd, qos_info); } @@ -138,9 +136,6 @@ Default_Dispatcher_Impl::dispatch_i (const Dispatch_Command* cmd, int Default_Dispatcher_Impl::shutdown_i () { - //This needs to be revisited based on mode transition and - //consistent cut through the queues - //post shutdown command to all tasks int i; diff --git a/Kokyu/Dispatcher_Task.cpp b/Kokyu/Dispatcher_Task.cpp index 8002d3a581d..3b4b509c7a3 100644 --- a/Kokyu/Dispatcher_Task.cpp +++ b/Kokyu/Dispatcher_Task.cpp @@ -12,7 +12,6 @@ ACE_RCSID(Kokyu, Dispatcher_Task, "$Id$") namespace -//anonymous namespace - use this to avoid polluting the global namespace { const int ALLOC_POOL_CHUNKS = 200; } @@ -20,7 +19,7 @@ namespace namespace Kokyu { -typedef ACE_Cached_Allocator<Dispatch_Queue_Item, ACE_SYNCH_MUTEX> +typedef ACE_Cached_Allocator<Dispatch_Queue_Item, ACE_SYNCH_NULL_MUTEX> Dispatch_Queue_Item_Allocator; int @@ -191,17 +190,18 @@ void Dispatch_Queue_Item::init_i (const QoSDescriptor& qos_info) template class ACE_Locked_Data_Block<ACE_Lock_Adapter<ACE_SYNCH_MUTEX> >; template class ACE_Lock_Adapter<ACE_Thread_Mutex>; -template class ACE_Cached_Allocator<Kokyu::Dispatch_Queue_Item, ACE_SYNCH_MUTEX>; +template class ACE_Cached_Allocator<Kokyu::Dispatch_Queue_Item, ACE_SYNCH_NULL_MUTEX>; template class ACE_Free_List<ACE_Cached_Mem_Pool_Node<Kokyu::Dispatch_Queue_Item> >; -template class ACE_Locked_Free_List<ACE_Cached_Mem_Pool_Node<Kokyu::Dispatch_Queue_Item>, ACE_SYNCH_MUTEX>; +template class ACE_Locked_Free_List<ACE_Cached_Mem_Pool_Node<Kokyu::Dispatch_Queue_Item>, + ACE_SYNCH_NULL_MUTEX>; template class ACE_Cached_Mem_Pool_Node<Kokyu::Dispatch_Queue_Item>; #elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) #pragma instantiate ACE_Locked_Data_Block<ACE_Lock_Adapter<ACE_SYNCH_MUTEX> > #pragma instantiate ACE_Lock_Adapter<ACE_Thread_Mutex> #pragma instantiate ACE_Free_List<ACE_Cached_Mem_Pool_Node<Kokyu::Dispatch_Queue_Item> > -#pragma instantiate ACE_Cached_Allocator<Kokyu::Dispatch_Queue_Item, ACE_SYNCH_MUTEX> -#pragma instantiate ACE_Locked_Free_List<ACE_Cached_Mem_Pool_Node<Kokyu::Dispatch_Queue_Item, ACE_SYNCH_MUTEX> +#pragma instantiate ACE_Cached_Allocator<Kokyu::Dispatch_Queue_Item, ACE_SYNCH_NULL_MUTEX> +#pragma instantiate ACE_Locked_Free_List<ACE_Cached_Mem_Pool_Node<Kokyu::Dispatch_Queue_Item, ACE_SYNCH_NULL_MUTEX> #pragma instantiate ACE_Cached_Mem_Pool_Node<Kokyu::Dispatch_Queue_Item> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/Kokyu/Dispatcher_Task.h b/Kokyu/Dispatcher_Task.h index 0bb91313f47..09be9974140 100644 --- a/Kokyu/Dispatcher_Task.h +++ b/Kokyu/Dispatcher_Task.h @@ -83,6 +83,7 @@ private: private: ConfigInfo curr_config_info_; + /// An per-task allocator ACE_Allocator *allocator_; int own_allocator_; diff --git a/Kokyu/Kokyu.h b/Kokyu/Kokyu.h index b2e041bed8c..c5a47ff90b6 100644 --- a/Kokyu/Kokyu.h +++ b/Kokyu/Kokyu.h @@ -32,14 +32,6 @@ //around. #include "Dispatcher_Impl.h" -//################################################################# -//Beware that this interface will be subject to change in the future -//since this is the very initial release. We will be working on -//trying to merge the DSRT and EC mechanisms in the future. If you -//are a user of this interface, kindly let us know so that we can -//coordinate with you when we refactor this interface. -//################################################################## - namespace Kokyu { //class Dispatcher_Impl; diff --git a/Kokyu/Kokyu.html b/Kokyu/Kokyu.html deleted file mode 100644 index 55c8016cd1c..00000000000 --- a/Kokyu/Kokyu.html +++ /dev/null @@ -1,416 +0,0 @@ -<!-- $Id$ --> -<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <meta name="Author" content="Venkita Subramonian"> - <meta name="GENERATOR" content="Mozilla/4.79 [en] (Windows NT 5.0; U) [Netscape]"> - <title>Kokyu</title> -</head> -<body> - -<center> -<h2> -<b><font size=+2>Kokyu - A middleware framework for flexible scheduling -and dispatching</font></b></h2></center> -<a href="#Introduction">Introduction</a> -<br><a href="#SchedFramework">Strategized Scheduling framework</a> -<br><a href="#FlexDispatch">Flexible Dispatching Framework</a> -<br><a href="#KokyuEC">Use of Kokyu within the TAO Real-time Event Channel(RTEC)</a> -<br><a href="#ConfigKokyuEC">Configuration of RTEC to use Kokyu dispatching</a> -<br><a href="#KokyuDSRTCORBA">Use of Kokyu within the Dynamic Scheduling -Real-time CORBA (DSRTCORBA) schedulers</a> -<br><a href="#newDSRTSched">How to write a new DSRT scheduler using Kokyu</a> -<br><a href="#DSRTCORBAvsRTEC">Kokyu DSRTCORBA vs Kokyu RTEC</a> -<br><a href="#Status">Current status</a> -<br><a href="#Future">Future work</a> -<br><a href="#Papers">Papers on Kokyu</a> -<br> -<h3> -<a NAME="Introduction"></a>Introduction</h3> -Kokyu is a portable middleware scheduling framework designed to provide -flexible scheduling and dispatching services within the context of higher-level -middleware. Kokyu currently provides real-time scheduling and dispatching -services for TAO’s real-time CORBA Event Service, which mediates supplier-consumer -relationships between application operations. Kokyu consists primarily -of two cooperating infrastructure segments, illustrated in Figure 1: -<center> -<p><img SRC="kokyu1.jpg" height=285 width=489> -<br><b>Figure 1: Kokyu Scheduling and Dispatching Infrastructure</b></center> - -<ol> -<li> -A pluggable scheduling infrastructure with efficient support for adaptive -execution of diverse static, dynamic, and hybrid static/dynamic scheduling -heuristics.</li> - -<li> -A flexible dispatching infrastructure that allows composition of primitive -operating system and middleware mechanisms to enforce arbitrary scheduling -heuristics.</li> -</ol> -The scheduler is responsible for specifying how operation dispatch requests -are ordered, by assigning priority levels and rates to tasks, and producing -a configuration specification for the dispatching mechanism. The dispatcher -is responsible for enforcing the ordering of operation dispatches using -different threads, requests queues, and timers configured according to -the scheduler’s specification. The combined framework provides an implicit -projection of scheduling heuristics into appropriate dispatching infrastructure -configurations, so that the scheduling and dispatching infrastructure segments -can be optimized both separately and in combination. -<h3> -<a NAME="SchedFramework"></a>Strategized Scheduling framework</h3> -The Kokyu scheduling framework is designed to support a variety of scheduling -heuristics including RMS, EDF, MLF, and MUF. In addition, this framework -provides a common environment to compare systematically both existing and -new scheduling strategies. This flexibility is achieved in the Kokyu framework -via the Strategy pattern, which allows parts of the sequence of steps in -an algorithm to be replaced, thus providing interchangeable variations -within a consistent algorithmic framework. The Kokyu scheduling framework -uses the Strategy pattern to encapsulate a family of scheduling algorithms -within a fixed CORBA IDL interface, thereby enabling different strategies -to be configured independently from applications that use them. -<h3> -<a NAME="FlexDispatch"></a>Flexible Dispatching Framework</h3> -The right side of Figure 1 shows the essential features of Kokyu’s flexible -task dispatching infrastructure. Key features of the dispatching infrastructure -that are essential to performing our optimizations are as follows: -<p><b>Dispatching queues:</b> Each task is assigned by our strategized -Kokyu scheduling framework to a specific dispatching queue, each -of which has an associated queue number, a queueing discipline, and a unique -operating-system-specific priority for its single associated dispatching -thread. -<p><b>Dispatching threads:</b> Operating-system thread priorities decrease -as the queue number increases, so that the 0th queue is served by the highest -priority thread. Each dispatching thread removes the task from the head -of its queue and runs its entry point function to completion before retrieving -the next task to dispatch. Adapters can be applied to operations to intercept -and possibly short-circuit the entry-point upcall. In general, however, -the outermost operation entry point must complete on each dispatch. -<p><b>Queueing disciplines: </b>Dispatching thread priorities determine -which queue is active at any given time: the highest priority queue with -a task to dispatch is always active, preempting tasks in lower priority -queues. In addition, each queue may have a distinct discipline for determining -which of its enqueued tasks has the highest eligibility, and must ensure -the highest is at the head of the queue at the point when one is to be -dequeued. We consider three disciplines: -<ul> -<li> -Static – Tasks are ordered by a static subpriority value – results in FIFO -ordering if all static subpriorities are made the same; static queues at -different priority levels can be used to implement an RMS scheduling strategy.</li> - -<li> -Deadline – Tasks are ordered by time to deadline; a single deadline queue -can be used to implement the earliest deadline first (EDF) scheduling strategy.</li> - -<li> -Laxity – Tasks are ordered by slack time, or laxity – the time to deadline -minus the execution time; a single laxity queue can be used to implement -the minimum laxity first (MLF) scheduling strategy; laxity queues at different -priority levels can be used to implement the maximum urgency first (MUF) -scheduling strategy.</li> -</ul> -Any discipline for which a maximal eligibility may be selected can be employed -to manage a given dispatching queue in this approach. Scheduling strategies -can be constructed from one or more queues of each discipline alone, or -combinations of queues with different disciplines can be used. Figure 2 -illustrates the general queueing mechanism used by the dispatching modules -in the Kokyu dispatching framework. -<center> -<p><img SRC="kokyu2.jpg" height=176 width=779> -<p><b>Figure 2: Example Queueing Mechanism in a Kokyu Dispatching Module</b></center> - -<p>In addition, this figure shows how the output information provided by -the Kokyu scheduling framework is used to configure and operate a dispatching -module. During system initialization, each dispatching module obtains the -thread priority and dispatching type for each of its queues, typically -from the scheduling service’s output interface. Next, each queue is assigned -a unique dispatching priority number, a unique thread priority, and an -enumerated dispatching type. Finally, each dispatching module has an ordered -queue of pending dispatches per dispatching priority. To preserve QoS guarantees, -operations are inserted into the appropriate dispatching queue according -to their assigned dispatching priority. Operations within a dispatching -queue are ordered by their assigned dispatching subpriority. To minimize -priority inversions, operations are dispatched from the queue with the -highest thread priority, preempting any operation executing in a lower -priority thread. To minimize preemption overhead, there is no preemption -within a given priority queue. The following three values are defined for -the dispatching type: -<ul> -<li> -<b>STATIC DISPATCHING</b>: This type specifies a queue that only considers -the static portion of an operation’s dispatching subpriority.</li> - -<li> -<b>DEADLINE DISPATCHING</b>: This type specifies a queue that considers -the dynamic and static portions of an operation’s dispatching subpriority, -and updates the dynamic portion according to the time remaining until the -operation’s deadline.</li> - -<li> -<b>LAXITY DISPATCHING</b>: This type specifies a queue that considers the -dynamic and static portions of an operation’s dispatching subpriority, -and updates the dynamic portion according to the operation’s laxity.</li> -</ul> - -<h3> -<a NAME="KokyuEC"></a>Use of Kokyu within the TAO Real-time Event Channel(RTEC)</h3> -Figure 3 shows the sequence of operations that take place in the Kokyu -based dispatching module in the TAO RTEC. The client application registers -all relevant operations with the scheduler along with their real-time requirements. -This is done through the concept of an <font face="Courier New,Courier">RT_Info -</font>(see -TAO/orbsvcs/orbsvcs/RtecScheduler.idl) structure which is a structure that -contains the execution time, criticality, period, etc of an operation. -The client then calls <font face="Courier New,Courier">compute_schedule</font> -method on the scheduler. The scheduler creates a dependency graphs of all -operations and partitions operations into equivalence classes based on -the scheduling parameters supplied. The scheduler can be configured to -have any scheduling policy which determines the equivalence class partitioning -(queues) and possibly a partial ordering of operations within an equivalence -class (ordering within a queue). Once this is done, the scheduler has the -configuration information for the Kokyu dispatcher like the number of dispatch -queues, priorities for the threads processing each queue, etc. -<p>When the client calls <font face="Courier New,Courier">activate</font> -on the event channel, the EC inturn activates the Kokyu based EC dispatching -module. The EC dispatching module queries the dispatch configuration from -the scheduler and uses that to create the Kokyu dispatcher with the appropriate -number of lanes and threads. When an event is pushed into the EC, the EC -pushes the event to the appropriate consumers, who are subscribed to that -event. For each consumer, the EC queries the scheduler for the RT_Info -of that consumer. It then hands over the event to the Kokyu based dispatching -module. The dispatching module then enqueues the event into the appropriate -queue for processing by the thread watching that queue. -<center> -<p><img SRC="KokyuEC.jpg" height=784 width=716> -<p><b>Figure 3: Kokyu based dispatching module within TAO RTEC</b></center> - -<h3> -<a NAME="ConfigKokyuEC"></a>Configuration of RTEC to use Kokyu dispatching</h3> -<b>Static configuration</b>: In the <b>svc.conf</b> file, make sure you -have the following configuration for Kokyu dispatching. You can combine -this with other -ECxxx options. -<p><font face="Courier New,Courier">static EC_Factory "-ECdispatching kokyu -SCHED_FIFO -ECscheduling kokyu -ECfiltering kokyu"</font> -<p>To run the threads in the real-time FIFO class, use SCHED_FIFO. You -could use SCHED_RR and SCHED_OTHER also. -<br>The default is SCHED_FIFO. -<p>In your program, call -<p><font face="Courier New,Courier">TAO_EC_Kokyu_Factory::init_svcs ();</font> -<p>to statically create the EC Kokyu dispatching and other Kokyu related -modules. -<p><b>Dynamic configuration</b>: In the <b>svc.conf</b> file, make sure -you have the following configuration for Kokyu dispatching. You can combine -this with other -ECxxx options. -<p><font face="Courier New,Courier">dynamic EC_Factory Service_Object * -TAO_RTKokyuEvent:_make_TAO_EC_Kokyu_Factory() "-ECdispatching kokyu -ECscheduling -kokyu -ECfiltering kokyu"</font> -<h3> -<a NAME="KokyuDSRTCORBA"></a>Use of Kokyu within the Dynamic Scheduling -Real-time CORBA (DSRTCORBA) schedulers</h3> -An initial implementation of mechanisms to support DSRTCORBA schedulers -have been released. DSRTCORBA uses the concept of distributed threads, -which traverse multiple end systems giving the application the illusion -of a single logical thread executing an end-to-end task. The distributed -thread carries with it the scheduling parameters like importance, deadline, -etc so that it can get scheduled by a local scheduler on each endsystem. -The Kokyu DSRT dispatching framework is used as an enforcing mechanism. -<p>The DSRT schedulers are available in the directory $TAO_ROOT/examples/Kokyu_dsrt_schedulers. -They use the Kokyu DSRT -<br>dispatching classes present in $ACE_ROOT/Kokyu. These act as wrappers/adapters -around the Kokyu DSRT dispatcher. The Kokyu DSRT dispatcher is responsible -for scheduling threads which ask the dispatcher to schedule themselves. -Currently there are two implementations for the Kokyu DSRT dispatcher. -One uses a condition-variable based approach for scheduling threads and -the other manipulates priorities of threads and relies on the OS scheduler -for dispatching the threads appropriately. -<h4> -CV-based approach:</h4> -In this approach, it is assumed that the threads "yield" on a regular basis -to the scheduler by calling <tt>update_scheduling_segment</tt>. Only one -thread is running at any point in time. All the other threads are blocked -on a condition variable. When the currently running thread yields, it will -cause the condition variable to be signalled. All the eligible threads -are stored in a scheduler queue (rbtree), the most eligible thread determined -by the scheduling discipline. This approach has the drawback that it requires -a cooperative threading model, where threads yield voluntarily on a regular -basis. The application threads are responsible for doing this voluntary -yielding. -<h4> -OS-based approach:</h4> -This approach relies on the OS scheduler to do the actual thread dispatching. -The Kokyu DSRT dispatcher manipulates the priorities of the threads. The -scheduler maintains a queue (rbtree) of threads. The scheduler also has -an executive thread, which runs at the maximum available priority. This -thread runs in a continuous loop until the dispatcher is shut down. The -executive thread is responsible for selecting the most eligible thread -from the scheduler queue and bump up its priority if necessary while bumping -down the priority of the currently running thread, if it is not the most -eligible. There are four priority levels required for this mechanism to -work, listed in descending order of priorities. For example, a thread running -at <i>Active</i> priority will preempt a -<br>thread running at <i>Inactive</i> priority level. -<ol> -<li> -Executive priority - priority at which the scheduler executive thread runs.</li> - -<li> -Blocked priority - this is the priority to which threads about to block -on remote calls will be bumped up to.</li> - -<li> -Active priority - this is the priority to which the most eligible thread -is set to.</li> - -<li> -Inactive priority - this is the priority to which all threads except the -most eligible thread is set to.</li> -</ol> -As soon as a thread asks to be scheduled, a wrapper object is created and -inserted into the queue. This object carries the qos (sched params) associated -with that thread. A condition variable is signalled to inform the executive -thread that the queue is "dirty". The scheduler thread picks up the most -eligble one and sets its priority to <i>active</i> and sets the currently -running thread priority to -<br><i>inactive</i>. -<p>The drawback to this approach is that it relies on the OS scheduler -to dispatch the threads. Also, with the current implementation, there is -only one thread running at active priority and others are all at <i>inactive</i> -level. This will create undesirable effects with multi-processor systems, -which could select any one of the <i>inactive</i> level threads and this -could cause priority inversions. -<h3> -<a NAME="newDSRTSched"></a>How to write a new DSRT scheduler using Kokyu</h3> -One can use one of the schedulers as a starting point. The variation points -are -<ol> -<li> -The scheduler parameters that need to be propagated along with the service -context.</li> - -<li> -The QoS comparison function, that determines which thread is more eligible.</li> -</ol> -To aid (1), we have created a Svc_Ctxt_DSRT_QoS idl interface (see ./Kokyu_qos.pidl). -This interface currently has the necessary things to be propagated for -FP, MIF and MUF schedulers. This can be altered if necessary to accomodate -new sched params. The idea here is to let the IDL compiler generate the -marshalling code (including Any operators) so that these parameters can -be shipped across in the service context in an encapsulated CDR. -<p>To create customized QoS comparator functions, we used the idea of C++ -traits to let the user define customized comparator functions. For example, -the MIF scheduler uses the following traits class. -<p><tt> struct MIF_Scheduler_Traits</tt> -<br><tt> {</tt> -<br><tt> typedef RTScheduling::Current::IdType Guid_t;</tt> -<p><tt> struct _QoSDescriptor_t</tt> -<br><tt> {</tt> -<br><tt> typedef long Importance_t;</tt> -<br><tt> Importance_t importance_;</tt> -<br><tt> };</tt> -<p><tt> typedef _QoSDescriptor_t QoSDescriptor_t;</tt> -<p><tt> typedef Kokyu::MIF_Comparator<QoSDescriptor_t> -QoSComparator_t;</tt> -<p><tt> class _Guid_Hash</tt> -<br><tt> {</tt> -<br><tt> public:</tt> -<br><tt> u_long operator () (const Guid_t& -id)</tt> -<br><tt> {</tt> -<br><tt> return ACE::hash_pjw -((const char *) id.get_buffer (),</tt> -<br><tt> -id.length ());</tt> -<br><tt> }</tt> -<br><tt> };</tt> -<p><tt> typedef _Guid_Hash Guid_Hash;</tt> -<br><tt> };</tt> -<p>The idea of traits makes the Kokyu dispatcher more flexible in terms -of creating new schedulers. For example, the Kokyu classes do not care -about what concrete type Guid is. It could be an OctetSequence for some -applications, whereas it could be an int for some others. The exact type -is defined by the application (in this case, the MIF scheduler) using the -traits class. In the above traits class the Guid's type is defined to be -an octet sequence (indirectly). The Kokyu dispatcher expects the following -typedef's to -<br>be present in the traits class: -<p><tt>Guid_t - </tt>Type of GUID. -<br><tt>QoSDescriptor_t - </tt>aggregate for scheduler parameters -<br><tt>QoSComparator_t - </tt>used by the scheduler queue to determine -most eligible item -<br><tt>Guid_Hash - </tt>used by the internal hash map in the scheduler -to hash the guid. -<p>It is also expected that the following operator be defined for comparing -QoS parameters. This comparator function will be used by the scheduler -queue to determine the most eligible item in the queue. -<p><tt>QoSComparator_t::operator ()(const QoSDescriptor_t& qos1,</tt> -<br><tt> -const QoSDescriptor_t& qos2)</tt> -<h3> -<a NAME="DSRTCORBAvsRTEC"></a>Kokyu DSRTCORBA vs Kokyu RTEC</h3> -Currently we have separate interfaces for DSRTCORBA and RTEC dispatching -mechanisms. Once we get more use cases and experience, there is a possibility -of these getting merged in the future. The RTEC related dispatching interface -is in <tt>Kokyu::Dispatcher (Kokyu.h)</tt> and DSRTCORBA related dispatching -interface is in <tt>Kokyu::DSRT_Dispatcher (Kokyu_dsrt.h)</tt> -<h3> -<a NAME="Status"></a>Current status</h3> -Kokyu dispatching framework is available as a separate module under <tt><font size=+1>ACE_wrappers/Kokyu</font></tt> -as part of the <a href="http://deuce.doc.wustl.edu/Download.html">ACE/TAO -distribution</a>. Note that this module is not dependent on TAO, though -it is built on top of ACE. The TAO Event Channel uses the Strategy and -Service Configurator patterns to use configurable dispatching modules. -A Kokyu based EC dispatching module is available in the <tt><font size=+1>TAO/orbsvcs/orbsvcs/RTKokyuEvent</font></tt> -module. This module acts as an adapter between the Kokyu dispatcher and -the RTEC. -<p>Kokyu scheduling framework is available under the TAO source tree (<tt><font size=+1>TAO/orbsvcs/orbsvcs/Sched</font></tt>). -<p>An example using the RTEC Kokyu dispatching module is available under -<tt><font size=+1>TAO/orbsvcs/examples/RtEC/Kokyu</font></tt>. -<h3> -<a NAME="Future"></a>Future work</h3> - -<ol> -<li> -Currently there is no support for timers in the Kokyu dispatching module. -We plan to do this in the near future.</li> - -<li> -It looks like there is a general structure to the different schedulers. -May be this can be abstracted using templates or some similar mechanism.</li> - -<li> -Thread sched policy and sched scope are currently being passed explicitly -from the application to the scheduler. This can be changed later to get -this information from the ORB. This requires the usage of RTORB and the -actual values can be set using svc.conf parameters for RT_ORB_Loader.</li> - -<br> -<li> -See whether the approaches could be extended to multiprocessor systems.</li> -</ol> - -<h3> -<a NAME="Papers"></a>Papers on Kokyu</h3> - -<ol> -<li> -Christopher D. Gill, <a href="http://www.cse.wustl.edu/~cdgill/PDF/cdgill_dissertation.pdf">Dissertation:Flexible -Scheduling in Middleware for Distributed Rate-Based Real-Time Applications</a></li> - -<li> -Christopher D. Gill, David L. Levine, and Douglas C. Schmidt <a href="http://www.cse.wustl.edu/~cdgill/PDF/dynamic.pdf">The -Design and Performance of a Real-Time CORBA Scheduling Service</a>, Real-Time -Systems: the International Journal of Time-Critical Computing Systems, -special issue on Real-Time Middleware, guest editor Wei Zhao, March 2001, -Vol. 20 No. 2</li> - -<li> -Christopher D. Gill, Douglas C. Schmidt, and Ron Cytron, <a href="http://www.cs.wustl.edu/~schmidt/PDF/embedded_sched.pdf">Multi-Paradigm -Scheduling for Distributed Real-Time Embedded Computing</a>, IEEE Proceedings -Special Issue on Modeling and Design of Embedded Systems, Volume 91, Number -1, January 2003.</li> -</ol> - -</body> -</html> diff --git a/Kokyu/KokyuEC.jpg b/Kokyu/KokyuEC.jpg Binary files differdeleted file mode 100644 index 8be16ef04c3..00000000000 --- a/Kokyu/KokyuEC.jpg +++ /dev/null diff --git a/Kokyu/Kokyu_defs.i b/Kokyu/Kokyu_defs.i index 50b780ab2c7..a10283c0d7b 100644 --- a/Kokyu/Kokyu_defs.i +++ b/Kokyu/Kokyu_defs.i @@ -18,8 +18,8 @@ void Dispatcher_Attributes::sched_scope(int scope) ACE_INLINE Reordering_Queue_Attributes::Reordering_Queue_Attributes () - :static_bit_field_mask_ (0), // not used - static_bit_field_shift_ (0), // not used + :static_bit_field_mask_ (0), // 2^(10) - 1 + static_bit_field_shift_ (0), // 10 low order bits dynamic_priority_max_ (0x7FFFFFFFUL), // 2^31-1 dynamic_priority_offset_ (0x08000000UL) // 15/16th of dynamic prio range { diff --git a/Kokyu/Kokyu_dsrt.h b/Kokyu/Kokyu_dsrt.h index 1c75df12192..ecbcd80d511 100644 --- a/Kokyu/Kokyu_dsrt.h +++ b/Kokyu/Kokyu_dsrt.h @@ -10,7 +10,7 @@ #ifndef KOKYU_DSRT_H #define KOKYU_DSRT_H -#include /**/ "ace/pre.h" +#include "ace/pre.h" #include "ace/Copy_Disabled.h" //#if !defined (ACE_LACKS_PRAGMA_ONCE) @@ -173,5 +173,5 @@ namespace Kokyu #pragma implementation ("Kokyu_dsrt.cpp") #endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ -#include /**/ "ace/post.h" +#include "ace/post.h" #endif /* KOKYU_DSRT_H */ diff --git a/Kokyu/kokyu1.jpg b/Kokyu/kokyu1.jpg Binary files differdeleted file mode 100644 index 094f5535d02..00000000000 --- a/Kokyu/kokyu1.jpg +++ /dev/null diff --git a/Kokyu/kokyu2.jpg b/Kokyu/kokyu2.jpg Binary files differdeleted file mode 100644 index 2c649bfc754..00000000000 --- a/Kokyu/kokyu2.jpg +++ /dev/null diff --git a/Kokyu/tests/DSRT_MIF/MIF.cpp b/Kokyu/tests/DSRT_MIF/MIF.cpp index 276271d3b62..0a90aef28d1 100644 --- a/Kokyu/tests/DSRT_MIF/MIF.cpp +++ b/Kokyu/tests/DSRT_MIF/MIF.cpp @@ -5,8 +5,6 @@ #include "ace/Sched_Params.h" #include "ace/Atomic_Op.h" #include "ace/Synch.h" -#include "ace/High_Res_Timer.h" - #include "Kokyu_dsrt.h" ACE_Atomic_Op<ACE_SYNCH_MUTEX, long> guid=0; @@ -48,81 +46,55 @@ public: MyTask (ACE_Barrier& barrier, Kokyu::DSRT_Dispatcher<mif_scheduler_traits>* dispatcher, - mif_scheduler_traits::QoSDescriptor_t& qos, - int exec_duration) + mif_scheduler_traits::QoSDescriptor_t& qos) :barrier_ (barrier), dispatcher_ (dispatcher), qos_ (qos), - guid_ (++guid), - exec_duration_ (exec_duration) + guid_ (++guid) {} - int svc (void); + int svc (void) + { + ACE_hthread_t thr_handle; + ACE_Thread::self (thr_handle); + int prio; + + ACE_DEBUG ((LM_DEBUG, "(%t|%T): task activated\n")); + ACE_ASSERT (dispatcher_ != 0); + barrier_.wait (); + prio = dispatcher_->schedule (guid_, qos_); + + if (ACE_Thread::getprio (thr_handle, prio) == -1) + { + if (errno == ENOTSUP) + { + ACE_DEBUG((LM_DEBUG, + ACE_TEXT ("getprio not supported on this platform\n") + )); + return 0; + } + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("%p\n"), + ACE_TEXT ("getprio failed"))); + } + + ACE_DEBUG ((LM_DEBUG, "(%t) Thread prio=%d, guid=%d, qos_.importance=%d \n", prio, guid_, qos_.importance_)); + dispatcher_->cancel_schedule (this->guid_); + return 0; + } - private: +private: ACE_Barrier& barrier_; Kokyu::DSRT_Dispatcher<mif_scheduler_traits>* dispatcher_; mif_scheduler_traits::QoSDescriptor_t qos_; mif_scheduler_traits::Guid_t guid_; - int exec_duration_; }; -int MyTask::svc (void) -{ - ACE_hthread_t thr_handle; - ACE_Thread::self (thr_handle); - int prio; - - ACE_DEBUG ((LM_DEBUG, "(%t|%T): task activated\n")); - ACE_ASSERT (dispatcher_ != 0); - - prio = dispatcher_->schedule (guid_, qos_); - - barrier_.wait (); - - long prime_number = 9619899; - - ACE_High_Res_Timer timer; - ACE_Time_Value elapsed_time; - ACE_Time_Value seconds_tracker(0,0); - - ACE_Time_Value one_second (1,0); - ACE_Time_Value compute_count_down_time (exec_duration_, 0); - ACE_Countdown_Time compute_count_down (&compute_count_down_time); - - timer.start (); - while (compute_count_down_time > ACE_Time_Value::zero) - { - ACE::is_prime (prime_number, - 2, - prime_number / 2); - - compute_count_down.update (); - timer.stop (); - timer.elapsed_time (elapsed_time); - seconds_tracker += elapsed_time; - if (seconds_tracker >= one_second) - { - seconds_tracker.set (0,0); - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%t) Currently running guid=%d") - ACE_TEXT (", qos_.importance=%d \n"), - guid_, qos_.importance_)); - } - timer.reset (); - timer.start (); - } - - dispatcher_->cancel_schedule (this->guid_); - return 0; -} - int main (int,char**) { Kokyu::DSRT_ConfigInfo config_info; // config_info.scheduler_type_ = Kokyu::SCHED_MIF; - config_info.impl_type_ = Kokyu::DSRT_OS_BASED; ACE_Barrier barrier (3); @@ -142,11 +114,11 @@ int main (int,char**) qos1.importance_ = 1; qos2.importance_ = 2; - qos3.importance_ = 3; + qos3.importance_ = 1; - MyTask mytask1 (barrier, disp.get (), qos1, 15); - MyTask mytask2 (barrier, disp.get (), qos2, 6); - MyTask mytask3 (barrier, disp.get (), qos3, 4); + MyTask mytask1 (barrier, disp.get (), qos1); + MyTask mytask2 (barrier, disp.get (), qos2); + MyTask mytask3 (barrier, disp.get (), qos3); long flags = THR_BOUND | THR_SCHED_FIFO; @@ -174,8 +146,12 @@ int main (int,char**) "EC (%P|%t) cannot activate task\n")); } + ACE_OS::sleep (5); + disp->shutdown (); + ACE_OS::sleep (5); + ACE_DEBUG ((LM_DEBUG, "main thread exiting\n")); return 0; diff --git a/Kokyu/tests/DSRT_MIF/Makefile b/Kokyu/tests/DSRT_MIF/Makefile index 3a122424056..8304cf22d55 100644 --- a/Kokyu/tests/DSRT_MIF/Makefile +++ b/Kokyu/tests/DSRT_MIF/Makefile @@ -28,8 +28,7 @@ include $(ACE_ROOT)/include/makeinclude/rules.local.GNU # Local targets #---------------------------------------------------------------------------- -#CPPFLAGS += -I$(ACE_ROOT)/Kokyu -DKOKYU_DSRT_LOGGING -CPPFLAGS += -I$(ACE_ROOT)/Kokyu +CPPFLAGS += -I$(ACE_ROOT)/Kokyu -DKOKYU_DSRT_LOGGING LDFLAGS += -lKokyu #---------------------------------------------------------------------------- diff --git a/Kokyu/tests/EDF/README b/Kokyu/tests/EDF/README deleted file mode 100644 index 4f209605e14..00000000000 --- a/Kokyu/tests/EDF/README +++ /dev/null @@ -1,24 +0,0 @@ -This example is a very simple example, showing how to use the Kokyu -dispatcher to dispatch command objects in a EDF manner. The test -configures the Kokyu dispatcher with a single EDF lane. Typically this -would be done by an EDF scheduler which assigns priorities to tasks -based on the deadlines for tasks. To ensure that the command objects -enqueued in the dispatcher are dispatched in the correct order, we -enqueue the command objects and *then* activate the dispatcher. Only -when the dispatcher is activated, the thread watching each dispatch -queue starts running. - -To run this example, - -./test -p<fifo|rr|other> - -The following is the expected output - -Deadline of command1 is 1065966081 -Deadline of command2 is 1065966131 -Deadline of command3 is 1065966031 -command 3 executed -command 1 executed -command 2 executed - -Note that the deadlines are absolute deadlines. diff --git a/Kokyu/tests/EDF/test.cpp b/Kokyu/tests/EDF/test.cpp index 7844f4cbf4a..8b8882f88e3 100644 --- a/Kokyu/tests/EDF/test.cpp +++ b/Kokyu/tests/EDF/test.cpp @@ -19,14 +19,9 @@ public: :Kokyu::Dispatch_Command(1),id_(i) { } - int execute(); -private: - int id_; -}; - -int MyCommand::execute() -{ + int execute() + { ACE_hthread_t thr_handle; ACE_Thread::self (thr_handle); int prio; @@ -50,7 +45,12 @@ int MyCommand::execute() ACE_TEXT (("(%t|prio=%d) | command %d executed\n")), prio, id_)); return 0; -} + } + +private: + int id_; +}; + int main (int argc, char** argv) { @@ -113,17 +113,12 @@ int main (int argc, char** argv) qos3.preemption_priority_ = 1; qos3.deadline_ = deadline3; - ACE_DEBUG ((LM_DEBUG, "Deadline of command1 is %d\n", - qos1.deadline_.sec ())); disp->dispatch (&cmd1, qos1); - - ACE_DEBUG ((LM_DEBUG, "Deadline of command2 is %d\n", - qos2.deadline_.sec ())); + printf("inserted 1\n"); disp->dispatch (&cmd2, qos2); - - ACE_DEBUG ((LM_DEBUG, "Deadline of command3 is %d\n", - qos3.deadline_.sec ())); + printf("inserted 2\n"); disp->dispatch (&cmd3, qos3); + printf("inserted 3\n"); disp->activate (); diff --git a/Kokyu/tests/FIFO/README b/Kokyu/tests/FIFO/README deleted file mode 100644 index 5700e4a5038..00000000000 --- a/Kokyu/tests/FIFO/README +++ /dev/null @@ -1,24 +0,0 @@ -This example is a very simple example, showing how to use the Kokyu -dispatcher to dispatch command objects in a FIFO manner. The test -configures the Kokyu dispatcher with 3 FIFO lanes, each having a -different priority. Typically this would be done by an RMS scheduler -which assigns priorities to tasks based on the rate of tasks. To -ensure that the command objects enqueued in the dispatcher are -dispatched in the correct order, we enqueue the command objects and -*then* activate the dispatcher. Only when the dispatcher is activated, -the thread watching each dispatch queue starts running. - -To run this example, - -./test -p<fifo|rr|other> - -The following is the expected output - -Priority of command1 is 2 -Priority of command2 is 3 -Priority of command3 is 1 -command 3 executed -command 1 executed -command 2 executed - -Note that a lower number means a higher priority for the task. diff --git a/Kokyu/tests/FIFO/test.cpp b/Kokyu/tests/FIFO/test.cpp index c61f14fdcfd..fab7f34698c 100644 --- a/Kokyu/tests/FIFO/test.cpp +++ b/Kokyu/tests/FIFO/test.cpp @@ -18,14 +18,9 @@ public: :Kokyu::Dispatch_Command(1),id_(i) { } - int execute (); -private: - int id_; -}; - -int MyCommand::execute() -{ + int execute() + { ACE_hthread_t thr_handle; ACE_Thread::self (thr_handle); int prio; @@ -49,7 +44,12 @@ int MyCommand::execute() ACE_TEXT (("(%t|prio=%d) | command %d executed\n")), prio, id_)); return 0; -} + } + +private: + int id_; +}; + int main (int argc, char** argv) { @@ -73,42 +73,13 @@ CORE_DIRS= \ TAO/orbsvcs/orbsvcs \ TAO/orbsvcs/Naming_Service -CIAO_CORE_DIRS= \ - ace \ - apps/gperf/src \ - ACEXML \ - Kokyu \ - TAO/tao \ - TAO/TAO_IDL \ - TAO/orbsvcs/orbsvcs \ - TAO/orbsvcs/Naming_Service \ - TAO/CIAO/ciao \ - TAO/CIAO/tools - -CIAO_MPC_DIRS= \ - TAO/CIAO/ciao \ - TAO/CIAO/tools - -.PHONY: CIAO_Core MPC_Make Core reverseclean +.PHONY: Core reverseclean Core: @for dir in $(CORE_DIRS); \ do \ $(MAKE) -C $$dir; \ done -CIAO_Core: MPC_Make - @for dir in $(CIAO_CORE_DIRS); \ - do \ - $(MAKE) -C $$dir; \ - done - -MPC_Make: - @for dir in $(CIAO_MPC_DIRS); \ - do \ - cd $(ACE_ROOT)/$$dir && $(ACE_ROOT)/bin/mwc.pl; \ - done - cd $(ACE_ROOT) - reverseclean: @$(ACE_ROOT)/bin/reverse_clean $(DIRS) diff --git a/TAO/CIAO/CCF/CCF/CIDL/SyntaxTree/Composition.hpp b/TAO/CIAO/CCF/CCF/CIDL/SyntaxTree/Composition.hpp index 864bb160a35..446a702cef9 100644 --- a/TAO/CIAO/CCF/CCF/CIDL/SyntaxTree/Composition.hpp +++ b/TAO/CIAO/CCF/CCF/CIDL/SyntaxTree/Composition.hpp @@ -50,6 +50,7 @@ namespace CCF Category::Value category, ScopePtr const& scope) : Declaration (name, scope), + Scope (name, scope), category_ (category) { type_info (static_type_info ()); diff --git a/TAO/CIAO/CCF/CCF/CIDL/SyntaxTree/HomeExecutor.hpp b/TAO/CIAO/CCF/CCF/CIDL/SyntaxTree/HomeExecutor.hpp index d47bfb3188b..63f9047aae7 100644 --- a/TAO/CIAO/CCF/CCF/CIDL/SyntaxTree/HomeExecutor.hpp +++ b/TAO/CIAO/CCF/CCF/CIDL/SyntaxTree/HomeExecutor.hpp @@ -30,7 +30,8 @@ namespace CCF ScopedName implements, SimpleName manages) : Declaration (name, scope), - implements_ (table (), implements), + Scope (name, scope), + implements_ (scope->table (), implements), manages_ (manages) { type_info (static_type_info ()); diff --git a/TAO/CIAO/CCF/CCF/CIDL/Traversal/Composition.hpp b/TAO/CIAO/CCF/CCF/CIDL/Traversal/Composition.hpp index 33716bd726b..7cc7f94e4c3 100644 --- a/TAO/CIAO/CCF/CCF/CIDL/Traversal/Composition.hpp +++ b/TAO/CIAO/CCF/CCF/CIDL/Traversal/Composition.hpp @@ -28,11 +28,10 @@ namespace CCF map (typeid (SyntaxTree::Composition), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::Composition> ()); - return true; } virtual void diff --git a/TAO/CIAO/CCF/CCF/CIDL/Traversal/HomeExecutor.hpp b/TAO/CIAO/CCF/CCF/CIDL/Traversal/HomeExecutor.hpp index 44340ad94ee..17e2f46dc1e 100644 --- a/TAO/CIAO/CCF/CCF/CIDL/Traversal/HomeExecutor.hpp +++ b/TAO/CIAO/CCF/CCF/CIDL/Traversal/HomeExecutor.hpp @@ -28,11 +28,11 @@ namespace CCF map (typeid (SyntaxTree::HomeExecutor), this); } - virtual bool + + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::HomeExecutor> ()); - return true; } virtual void diff --git a/TAO/CIAO/CCF/CCF/CodeGenerationKit/IndentationIDL.hpp b/TAO/CIAO/CCF/CCF/CodeGenerationKit/IndentationIDL.hpp index 3f428462745..e8dcdea0ac3 100644 --- a/TAO/CIAO/CCF/CCF/CodeGenerationKit/IndentationIDL.hpp +++ b/TAO/CIAO/CCF/CCF/CodeGenerationKit/IndentationIDL.hpp @@ -177,7 +177,7 @@ namespace Indentation { hold_.push_back (c); - int_type result (traits_type::eof ()); + int_type result; while (!hold_.empty ()) { diff --git a/TAO/CIAO/CCF/CCF/CompilerElements/Preprocessor.hpp b/TAO/CIAO/CCF/CCF/CompilerElements/Preprocessor.hpp index f829301caaf..239fa962c75 100644 --- a/TAO/CIAO/CCF/CCF/CompilerElements/Preprocessor.hpp +++ b/TAO/CIAO/CCF/CCF/CompilerElements/Preprocessor.hpp @@ -10,9 +10,6 @@ #include "CCF/CompilerElements/TokenStream.hpp" -// tmp -// #include <iostream> - namespace CCF { //@@ this code is experimental and needs cleaning @@ -76,7 +73,6 @@ namespace CCF } case '#': { - // std::cerr << "see \'#\'; state is " << state << std::endl; if (state != PREPROCESSING) break; return handle_preprocessor_token (); } @@ -98,7 +94,7 @@ namespace CCF char_type c = to_char_type (i); - //@@ '\n' won't work on MS + //@@ '\n' won't work on MShit switch (c) { case '\n': return underflow (); //skip it @@ -130,7 +126,7 @@ namespace CCF int_type handle_preprocessor_token () { - // std::cerr << "handle_preprocessor_token" << std::endl; + //std::cerr << "handle_preprocessor_token" << std::endl; skip_white_space (); diff --git a/TAO/CIAO/CCF/CCF/IDL2/LexicalAnalyzer.cpp b/TAO/CIAO/CCF/CCF/IDL2/LexicalAnalyzer.cpp index b977aff35cc..653bfa639de 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/LexicalAnalyzer.cpp +++ b/TAO/CIAO/CCF/CCF/IDL2/LexicalAnalyzer.cpp @@ -32,7 +32,6 @@ namespace CCF keyword_table_.insert ("out" ); keyword_table_.insert ("sinclude" ); keyword_table_.insert ("supports" ); - keyword_table_.insert ("typedef" ); keyword_table_.insert ("typeid" ); keyword_table_.insert ("typeprefix"); diff --git a/TAO/CIAO/CCF/CCF/IDL2/Makefile.archive b/TAO/CIAO/CCF/CCF/IDL2/Makefile.archive index 81827acb354..648efd94e18 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/Makefile.archive +++ b/TAO/CIAO/CCF/CCF/IDL2/Makefile.archive @@ -21,7 +21,6 @@ translated_units := SyntaxTree/BuiltIn.o \ SyntaxTree/Operation.o \ SyntaxTree/Translation.o \ SyntaxTree/TypeId.o \ - SyntaxTree/Typedef.o \ SyntaxTree/ValueType.o translated_units += Traversal/BuiltIn.o \ diff --git a/TAO/CIAO/CCF/CCF/IDL2/Parser.cpp b/TAO/CIAO/CCF/CCF/IDL2/Parser.cpp index d5831b90013..6a8bcd6e84a 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/Parser.cpp +++ b/TAO/CIAO/CCF/CCF/IDL2/Parser.cpp @@ -44,7 +44,6 @@ namespace CCF OUT ("out"), SINCLUDE ("sinclude"), SUPPORTS ("supports"), - TYPEDEF ("typedef"), TYPEID ("typeid"), TYPEPREFIX ("typeprefix"), @@ -56,22 +55,39 @@ namespace CCF RPAREN (")"), SEMI (";"), + // Include + // + // + act_include_begin (f.include (), &SemanticAction::Include::begin), + act_include_end (f.include (), &SemanticAction::Include::end), - // Attribute + // TypeId // // - act_attribute_type ( - f.attribute (), &SemanticAction::Attribute::type), + act_type_id_begin (f.type_id (), &SemanticAction::TypeId::begin), + act_type_id_end (f.type_id (), &SemanticAction::TypeId::end), - act_attribute_name ( - f.attribute (), &SemanticAction::Attribute::name), + // TypePrefix + // + // + act_type_prefix_begin (f.type_prefix (), + &SemanticAction::TypePrefix::begin), + act_type_prefix_end (f.type_prefix (), + &SemanticAction::TypePrefix::end), - // Include + // Module // // - act_include_begin (f.include (), &SemanticAction::Include::begin), - act_include_end (f.include (), &SemanticAction::Include::end), + act_module_begin (f.module (), &SemanticAction::Module::begin), + + act_module_open_scope ( + f.module (), &SemanticAction::Scope::open_scope), + + act_module_close_scope ( + f.module (), &SemanticAction::Scope::close_scope), + + act_module_end (f.module (), &SemanticAction::Module::end), // Interface @@ -97,20 +113,14 @@ namespace CCF act_interface_end (f.interface (), &SemanticAction::Interface::end), - - // Module + // Attribute // // - act_module_begin (f.module (), &SemanticAction::Module::begin), - - act_module_open_scope ( - f.module (), &SemanticAction::Scope::open_scope), - - act_module_close_scope ( - f.module (), &SemanticAction::Scope::close_scope), - - act_module_end (f.module (), &SemanticAction::Module::end), + act_attribute_type ( + f.attribute (), &SemanticAction::Attribute::type), + act_attribute_name ( + f.attribute (), &SemanticAction::Attribute::name), // Operation // @@ -121,37 +131,8 @@ namespace CCF act_operation_parameter ( this, &Parser::act_operation_parameter_core), - act_operation_end (f.operation (), &SemanticAction::Operation::end), - - - // Typedef - // - // - act_typedef_begin ( - f.typedef_ (), &SemanticAction::Typedef::begin), - - act_typedef_declarator ( - f.typedef_ (), &SemanticAction::Typedef::declarator), - - act_typedef_end ( - f.typedef_ (), &SemanticAction::Typedef::end), + act_operation_end (f.operation (), &SemanticAction::Operation::end) - - // TypeId - // - // - act_type_id_begin (f.type_id (), &SemanticAction::TypeId::begin), - act_type_id_end (f.type_id (), &SemanticAction::TypeId::end), - - - // TypePrefix - // - // - act_type_prefix_begin (f.type_prefix (), - &SemanticAction::TypePrefix::begin), - - act_type_prefix_end (f.type_prefix (), - &SemanticAction::TypePrefix::end) { language = guard @@ -180,13 +161,12 @@ namespace CCF declaration = abstract_type_decl - | extension | local_type_decl | module_decl - | typedef_ + | unconstrained_interface_decl + | extension | type_id | type_prefix - | unconstrained_interface_decl ; type_id = @@ -423,30 +403,6 @@ namespace CCF >> simple_identifier )[act_operation_parameter] ; - - - // typedef - // - // - - typedef_ = - TYPEDEF - >> identifier[act_typedef_begin] - >> typedef_declarator_list - >> SEMI[act_typedef_end] - ; - - typedef_type_spec = - identifier[act_typedef_begin] - ; - - typedef_declarator_list = - identifier[act_typedef_declarator] - >> *( - COMMA - >> identifier[act_typedef_declarator] - ) - ; } } } diff --git a/TAO/CIAO/CCF/CCF/IDL2/Parser.hpp b/TAO/CIAO/CCF/CCF/IDL2/Parser.hpp index 6cb5497ec9a..aa74109512b 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/Parser.hpp +++ b/TAO/CIAO/CCF/CCF/IDL2/Parser.hpp @@ -311,7 +311,6 @@ namespace CCF KeywordParser OUT; KeywordParser SINCLUDE; KeywordParser SUPPORTS; - KeywordParser TYPEDEF; KeywordParser TYPEID; KeywordParser TYPEPREFIX; @@ -332,6 +331,7 @@ namespace CCF // // Language // + typedef Parsing::Rule Rule; @@ -344,6 +344,9 @@ namespace CCF Rule include_decl; Rule system_include_decl; + Rule type_id; + Rule type_prefix; + Rule module_decl; Rule abstract_type_decl; @@ -364,13 +367,6 @@ namespace CCF Rule operation_parameter_list; Rule operation_parameter; - Rule typedef_; - Rule typedef_type_spec; - Rule typedef_declarator_list; - - Rule type_id; - Rule type_prefix; - public: Parser (CompilerElements::Context& context, Diagnostic::Stream& dout, @@ -388,34 +384,62 @@ namespace CCF // // Semantic actions // + typedef NoArgAction<SemanticAction::Scope> ScopeAction; + // Include + // + // + OneArgAction<StringLiteralPtr, SemanticAction::Include> + act_include_begin; + + NoArgAction<SemanticAction::Include> + act_include_end; - // Attribute + // TypeId // // - OneArgAction<IdentifierPtr, SemanticAction::Attribute> - act_attribute_type; + TwoArgAction<IdentifierPtr, + StringLiteralPtr, + SemanticAction::TypeId> + act_type_id_begin; - OneArgAction<SimpleIdentifierPtr, SemanticAction::Attribute> - act_attribute_name; + NoArgAction<SemanticAction::TypeId> + act_type_id_end; + // TypePrefix + // + // + TwoArgAction<IdentifierPtr, + StringLiteralPtr, + SemanticAction::TypePrefix> + act_type_prefix_begin; - // Include + NoArgAction<SemanticAction::TypePrefix> + act_type_prefix_end; + + // Module // // - OneArgAction<StringLiteralPtr, SemanticAction::Include> - act_include_begin; - NoArgAction<SemanticAction::Include> - act_include_end; + OneArgAction<SimpleIdentifierPtr, SemanticAction::Module> + act_module_begin; + + ScopeAction + act_module_open_scope; + + ScopeAction + act_module_close_scope; + NoArgAction<SemanticAction::Module> + act_module_end; // Interface // // + OneArgAction<SimpleIdentifierPtr, SemanticAction::Interface> act_abstract_interface_begin; @@ -437,22 +461,14 @@ namespace CCF NoArgAction<SemanticAction::Interface> act_interface_end; - - // Module + // Attribute // // - OneArgAction<SimpleIdentifierPtr, SemanticAction::Module> - act_module_begin; - - ScopeAction - act_module_open_scope; - - ScopeAction - act_module_close_scope; - - NoArgAction<SemanticAction::Module> - act_module_end; + OneArgAction<IdentifierPtr, SemanticAction::Attribute> + act_attribute_type; + OneArgAction<SimpleIdentifierPtr, SemanticAction::Attribute> + act_attribute_name; // Operation // @@ -494,43 +510,6 @@ namespace CCF NoArgAction<SemanticAction::Operation> act_operation_end; - - - // Typedef - // - // - OneArgAction<IdentifierPtr, SemanticAction::Typedef> - act_typedef_begin; - - OneArgAction<SimpleIdentifierPtr, SemanticAction::Typedef> - act_typedef_declarator; - - NoArgAction<SemanticAction::Typedef> - act_typedef_end; - - - // TypeId - // - // - TwoArgAction<IdentifierPtr, - StringLiteralPtr, - SemanticAction::TypeId> - act_type_id_begin; - - NoArgAction<SemanticAction::TypeId> - act_type_id_end; - - - // TypePrefix - // - // - TwoArgAction<IdentifierPtr, - StringLiteralPtr, - SemanticAction::TypePrefix> - act_type_prefix_begin; - - NoArgAction<SemanticAction::TypePrefix> - act_type_prefix_end; }; } } diff --git a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction.hpp b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction.hpp index cc8a27311f9..429bcec2f37 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction.hpp +++ b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction.hpp @@ -11,7 +11,6 @@ #include "CCF/IDL2/SemanticAction/Interface.hpp" #include "CCF/IDL2/SemanticAction/Module.hpp" #include "CCF/IDL2/SemanticAction/Operation.hpp" -#include "CCF/IDL2/SemanticAction/Typedef.hpp" #include "CCF/IDL2/SemanticAction/TypeId.hpp" #include "CCF/IDL2/SemanticAction/Factory.hpp" diff --git a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Factory.hpp b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Factory.hpp index c19a7ae1f37..6d566d6dd3b 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Factory.hpp +++ b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Factory.hpp @@ -11,12 +11,11 @@ namespace CCF { namespace SemanticAction { - class Attribute; class Include; - class Interface; class Module; + class Interface; + class Attribute; class Operation; - class Typedef; class TypeId; class TypePrefix; @@ -29,29 +28,26 @@ namespace CCF virtual ~Factory () throw () {} - virtual Attribute& - attribute () = 0; - virtual Include& include () = 0; - virtual Interface& - interface () = 0; + virtual TypeId& + type_id () = 0; + + virtual TypePrefix& + type_prefix () = 0; virtual Module& module () = 0; - virtual Operation& - operation () = 0; - - virtual Typedef& - typedef_ () = 0; + virtual Interface& + interface () = 0; - virtual TypeId& - type_id () = 0; + virtual Attribute& + attribute () = 0; - virtual TypePrefix& - type_prefix () = 0; + virtual Operation& + operation () = 0; }; } diff --git a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp index 0d0f5a49074..e6f9d1c56fd 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp +++ b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp @@ -7,13 +7,12 @@ #include "CCF/IDL2/SemanticAction/Factory.hpp" -#include "CCF/IDL2/SemanticAction/Impl/Attribute.hpp" #include "CCF/IDL2/SemanticAction/Impl/Include.hpp" -#include "CCF/IDL2/SemanticAction/Impl/Interface.hpp" +#include "CCF/IDL2/SemanticAction/Impl/TypeId.hpp" #include "CCF/IDL2/SemanticAction/Impl/Module.hpp" +#include "CCF/IDL2/SemanticAction/Impl/Interface.hpp" +#include "CCF/IDL2/SemanticAction/Impl/Attribute.hpp" #include "CCF/IDL2/SemanticAction/Impl/Operation.hpp" -#include "CCF/IDL2/SemanticAction/Impl/Typedef.hpp" -#include "CCF/IDL2/SemanticAction/Impl/TypeId.hpp" namespace CCF { @@ -40,21 +39,14 @@ namespace CCF scope_ (r->scope ()), - attribute_ (trace_, scope_), include_ (trace_, *this, r, scope_), - interface_ (trace_, scope_), - module_ (trace_, scope_), - operation_ (trace_, scope_), - typedef__ (trace_, scope_), type_id_ (trace_, scope_), - type_prefix_ (trace_, scope_) - { - } - - virtual SemanticAction::Attribute& - attribute () + type_prefix_ (trace_, scope_), + module_ (trace_, scope_), + interface_ (trace_, scope_), + attribute_ (trace_, scope_), + operation_ (trace_, scope_) { - return attribute_; } virtual SemanticAction::Include& @@ -63,40 +55,40 @@ namespace CCF return include_; } - virtual SemanticAction::Interface& - interface () + virtual SemanticAction::TypeId& + type_id () { - return interface_; + return type_id_; } - virtual SemanticAction::Module& - module () + virtual SemanticAction::TypePrefix& + type_prefix () { - return module_; + return type_prefix_; } - virtual SemanticAction::Operation& - operation () + virtual SemanticAction::Module& + module () { - return operation_; + return module_; } - virtual SemanticAction::Typedef& - typedef_ () + virtual SemanticAction::Interface& + interface () { - return typedef__; + return interface_; } - virtual SemanticAction::TypeId& - type_id () + virtual SemanticAction::Attribute& + attribute () { - return type_id_; + return attribute_; } - virtual SemanticAction::TypePrefix& - type_prefix () + virtual SemanticAction::Operation& + operation () { - return type_prefix_; + return operation_; } protected: @@ -105,14 +97,13 @@ namespace CCF SyntaxTree::ScopePtr scope_; SyntaxTree::TranslationRegionPtr region_; - Attribute attribute_; Include include_; - Interface interface_; - Module module_; - Operation operation_; - Typedef typedef__; TypeId type_id_; TypePrefix type_prefix_; + Module module_; + Interface interface_; + Attribute attribute_; + Operation operation_; }; } } diff --git a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp index 05306d59113..8351d30a837 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp +++ b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp @@ -115,8 +115,6 @@ namespace CCF if (!passed) throw IncompatibleType (d->declaration_class ()); - //@@ could instead check for XXDef - // return d->dynamic_type<TypeDecl> ()->defined (); } diff --git a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp deleted file mode 100644 index 6298527032f..00000000000 --- a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp +++ /dev/null @@ -1,18 +0,0 @@ -// file : CCF/IDL2/SemanticAction/Impl/Typedef.cpp -// author : Boris Kolpackov <boris@dre.vanderbilt.edu> -// cvs-id : $Id$ - -#include "CCF/IDL2/SemanticAction/Impl/Typedef.hpp" - -namespace CCF -{ - namespace IDL2 - { - namespace SemanticAction - { - namespace Impl - { - } - } - } -} diff --git a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp deleted file mode 100644 index 95c1403ae43..00000000000 --- a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp +++ /dev/null @@ -1,116 +0,0 @@ -// file : CCF/IDL2/SemanticAction/Impl/Typedef.hpp -// author : Boris Kolpackov <boris@dre.vanderbilt.edu> -// cvs-id : $Id$ - -#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_TYPEDEF_HPP -#define CCF_IDL2_SEMANTIC_ACTION_IMPL_TYPEDEF_HPP - -#include "CCF/IDL2/SyntaxTree/Typedef.hpp" -#include "CCF/IDL2/SemanticAction/Typedef.hpp" - -namespace CCF -{ - namespace IDL2 - { - namespace SemanticAction - { - namespace Impl - { - // - // - // - class Typedef : public virtual SemanticAction::Typedef - { - public: - virtual - ~Typedef () throw () {} - - Typedef (bool trace, SyntaxTree::ScopePtr& current) - : trace_ (trace), - scope_ (current), - type_ ("::") //@@ this is dirty - { - } - - virtual void - begin (IdentifierPtr const& id) - { - if (trace_) cerr << "typedef " << id << endl; - - using namespace SyntaxTree; - - Name name (id->lexeme ()); - - struct Predicate : public DeclarationTable::ResolvePredicate - { - virtual bool - test (DeclarationPtr const& d) const throw () - { - return d->is_a<TypeDecl> (); - } - } p; - - try - { - type_ = scope_->table ().resolve ( - name, - scope_->name (), - scope_->peek_order (), - p); - } - catch (DeclarationTable::NameNotFound const&) - { - cerr << "error: invalid typedef declaration" << endl; - cerr << "no type with name \'" - << name << "\' visible from scope \'" - << scope_->name () << "\'" << endl; - } - catch (DeclarationTable::PredicateNotMet const&) - { - cerr << "error: invalid typedef declaration" << endl; - cerr << "no type with name \'" - << name << "\' visible from scope \'" - << scope_->name () << "\'" << endl; - } - } - - virtual void - declarator (SimpleIdentifierPtr const& id) - { - if (trace_) cerr << " " << id << endl; - - using namespace SyntaxTree; - - if (type_ != ScopedName ("::")) - { - TypedefDeclPtr typedef_ ( - new TypedefDecl (SimpleName (id->lexeme ()), - type_, - scope_)); - - - scope_->insert (typedef_); - } - } - - virtual void - end () - { - if (trace_) cerr << "end" << endl; - - // Indicate that we are done. - // - type_ = SyntaxTree::ScopedName ("::"); - } - - private: - bool trace_; - SyntaxTree::ScopePtr& scope_; - SyntaxTree::ScopedName type_; - }; - } - } - } -} - -#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_TYPEDEF_HPP diff --git a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Typedef.hpp b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Typedef.hpp deleted file mode 100644 index 6cf8f0c8cff..00000000000 --- a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Typedef.hpp +++ /dev/null @@ -1,38 +0,0 @@ -// file : CCF/IDL2/SemanticAction/Typedef.hpp -// author : Boris Kolpackov <boris@dre.vanderbilt.edu> -// cvs-id : $Id$ - -#ifndef CCF_IDL2_SEMANTIC_ACTION_TYPEDEF_HPP -#define CCF_IDL2_SEMANTIC_ACTION_TYPEDEF_HPP - -#include "CCF/IDL2/SemanticAction/Elements.hpp" - -namespace CCF -{ - namespace IDL2 - { - namespace SemanticAction - { - // - // - // - class Typedef - { - public: - virtual - ~Typedef () throw () {} - - virtual void - begin (IdentifierPtr const& id) = 0; - - virtual void - declarator (SimpleIdentifierPtr const& id) = 0; - - virtual void - end () = 0; - }; - } - } -} - -#endif // CCF_IDL2_SEMANTIC_ACTION_TYPEDEF_HPP diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree.hpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree.hpp index 7a81f72daac..c52182a747e 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree.hpp +++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree.hpp @@ -11,7 +11,6 @@ #include "CCF/IDL2/SyntaxTree/Module.hpp" #include "CCF/IDL2/SyntaxTree/Operation.hpp" #include "CCF/IDL2/SyntaxTree/Translation.hpp" -#include "CCF/IDL2/SyntaxTree/Typedef.hpp" #include "CCF/IDL2/SyntaxTree/TypeId.hpp" #include "CCF/IDL2/SyntaxTree/ValueType.hpp" diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp index f1ffa06fba0..a21a1ba2bc1 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp +++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp @@ -25,7 +25,11 @@ namespace CCF virtual ~BuiltInTypeDef () throw () {} - BuiltInTypeDef () + BuiltInTypeDef (SimpleName const& name, + ScopePtr const& scope) + : Declaration (name, scope), + TypeDecl (name, scope), + TypeDef (name, scope) { type_info (static_type_info ()); } @@ -58,7 +62,10 @@ namespace CCF ~Object () throw () {} Object (ScopePtr const& scope) - : Declaration (SimpleName ("Object"), scope) + : Declaration (SimpleName ("Object"), scope), + TypeDecl (SimpleName ("Object"), scope), + TypeDef (SimpleName ("Object"), scope), + BuiltInTypeDef (SimpleName ("Object"), scope) { type_info (static_type_info ()); } @@ -91,7 +98,10 @@ namespace CCF ~ValueBase () throw () {} ValueBase (ScopePtr const& scope) - : Declaration (SimpleName ("ValueBase"), scope) + : Declaration (SimpleName ("ValueBase"), scope), + TypeDecl (SimpleName ("ValueBase"), scope), + TypeDef (SimpleName ("ValueBase"), scope), + BuiltInTypeDef (SimpleName ("ValueBase"), scope) { type_info (static_type_info ()); } @@ -124,7 +134,10 @@ namespace CCF ~Any () throw () {} Any (ScopePtr const& scope) - : Declaration (SimpleName ("any"), scope) + : Declaration (SimpleName ("any"), scope), + TypeDecl (SimpleName ("any"), scope), + TypeDef (SimpleName ("any"), scope), + BuiltInTypeDef (SimpleName ("any"), scope) { type_info (static_type_info ()); } @@ -157,7 +170,10 @@ namespace CCF ~Boolean () throw () {} Boolean (ScopePtr const& scope) - : Declaration (SimpleName ("boolean"), scope) + : Declaration (SimpleName ("boolean"), scope), + TypeDecl (SimpleName ("boolean"), scope), + TypeDef (SimpleName ("boolean"), scope), + BuiltInTypeDef (SimpleName ("boolean"), scope) { type_info (static_type_info ()); } @@ -190,7 +206,10 @@ namespace CCF ~Char () throw () {} Char (ScopePtr const& scope) - : Declaration (SimpleName ("char"), scope) + : Declaration (SimpleName ("char"), scope), + TypeDecl (SimpleName ("char"), scope), + TypeDef (SimpleName ("char"), scope), + BuiltInTypeDef (SimpleName ("char"), scope) { type_info (static_type_info ()); } @@ -223,7 +242,10 @@ namespace CCF ~Double () throw () {} Double (ScopePtr const& scope) - : Declaration (SimpleName ("double"), scope) + : Declaration (SimpleName ("double"), scope), + TypeDecl (SimpleName ("double"), scope), + TypeDef (SimpleName ("double"), scope), + BuiltInTypeDef (SimpleName ("double"), scope) { type_info (static_type_info ()); } @@ -256,7 +278,10 @@ namespace CCF ~Float () throw () {} Float (ScopePtr const& scope) - : Declaration (SimpleName ("float"), scope) + : Declaration (SimpleName ("float"), scope), + TypeDecl (SimpleName ("float"), scope), + TypeDef (SimpleName ("float"), scope), + BuiltInTypeDef (SimpleName ("float"), scope) { type_info (static_type_info ()); } @@ -289,7 +314,10 @@ namespace CCF ~Long () throw () {} Long (ScopePtr const& scope) - : Declaration (SimpleName ("long"), scope) + : Declaration (SimpleName ("long"), scope), + TypeDecl (SimpleName ("long"), scope), + TypeDef (SimpleName ("long"), scope), + BuiltInTypeDef (SimpleName ("long"), scope) { type_info (static_type_info ()); } @@ -322,7 +350,10 @@ namespace CCF ~LongDouble () throw () {} LongDouble (ScopePtr const& scope) - : Declaration (SimpleName ("long double"), scope) + : Declaration (SimpleName ("long double"), scope), + TypeDecl (SimpleName ("long double"), scope), + TypeDef (SimpleName ("long double"), scope), + BuiltInTypeDef (SimpleName ("long double"), scope) { type_info (static_type_info ()); } @@ -355,7 +386,10 @@ namespace CCF ~LongLong () throw () {} LongLong (ScopePtr const& scope) - : Declaration (SimpleName ("long long"), scope) + : Declaration (SimpleName ("long long"), scope), + TypeDecl (SimpleName ("long long"), scope), + TypeDef (SimpleName ("long long"), scope), + BuiltInTypeDef (SimpleName ("long long"), scope) { type_info (static_type_info ()); } @@ -388,7 +422,10 @@ namespace CCF ~Octet () throw () {} Octet (ScopePtr const& scope) - : Declaration (SimpleName ("octet"), scope) + : Declaration (SimpleName ("octet"), scope), + TypeDecl (SimpleName ("octet"), scope), + TypeDef (SimpleName ("octet"), scope), + BuiltInTypeDef (SimpleName ("octet"), scope) { type_info (static_type_info ()); } @@ -421,7 +458,10 @@ namespace CCF ~Short () throw () {} Short (ScopePtr const& scope) - : Declaration (SimpleName ("short"), scope) + : Declaration (SimpleName ("short"), scope), + TypeDecl (SimpleName ("short"), scope), + TypeDef (SimpleName ("short"), scope), + BuiltInTypeDef (SimpleName ("short"), scope) { type_info (static_type_info ()); } @@ -454,7 +494,10 @@ namespace CCF ~String () throw () {} String (ScopePtr const& scope) - : Declaration (SimpleName ("string"), scope) + : Declaration (SimpleName ("string"), scope), + TypeDecl (SimpleName ("string"), scope), + TypeDef (SimpleName ("string"), scope), + BuiltInTypeDef (SimpleName ("string"), scope) { type_info (static_type_info ()); } @@ -487,7 +530,10 @@ namespace CCF ~UnsignedLong () throw () {} UnsignedLong (ScopePtr const& scope) - : Declaration (SimpleName ("unsigned long"), scope) + : Declaration (SimpleName ("unsigned long"), scope), + TypeDecl (SimpleName ("unsigned long"), scope), + TypeDef (SimpleName ("unsigned long"), scope), + BuiltInTypeDef (SimpleName ("unsigned long"), scope) { type_info (static_type_info ()); } @@ -520,7 +566,10 @@ namespace CCF ~UnsignedLongLong () throw () {} UnsignedLongLong (ScopePtr const& scope) - : Declaration (SimpleName ("unsigned long long"), scope) + : Declaration (SimpleName ("unsigned long long"), scope), + TypeDecl (SimpleName ("unsigned long long"), scope), + TypeDef (SimpleName ("unsigned long long"), scope), + BuiltInTypeDef (SimpleName ("unsigned long long"), scope) { type_info (static_type_info ()); } @@ -553,7 +602,10 @@ namespace CCF ~UnsignedShort () throw () {} UnsignedShort (ScopePtr const& scope) - : Declaration (SimpleName ("unsigned short"), scope) + : Declaration (SimpleName ("unsigned short"), scope), + TypeDecl (SimpleName ("unsigned short"), scope), + TypeDef (SimpleName ("unsigned short"), scope), + BuiltInTypeDef (SimpleName ("unsigned short"), scope) { type_info (static_type_info ()); } @@ -586,7 +638,10 @@ namespace CCF ~Void () throw () {} Void (ScopePtr const& scope) - : Declaration (SimpleName ("void"), scope) + : Declaration (SimpleName ("void"), scope), + TypeDecl (SimpleName ("void"), scope), + TypeDef (SimpleName ("void"), scope), + BuiltInTypeDef (SimpleName ("void"), scope) { type_info (static_type_info ()); } @@ -619,7 +674,10 @@ namespace CCF ~Wchar () throw () {} Wchar (ScopePtr const& scope) - : Declaration (SimpleName ("wchar"), scope) + : Declaration (SimpleName ("wchar"), scope), + TypeDecl (SimpleName ("wchar"), scope), + TypeDef (SimpleName ("wchar"), scope), + BuiltInTypeDef (SimpleName ("wchar"), scope) { type_info (static_type_info ()); } @@ -652,7 +710,10 @@ namespace CCF ~Wstring () throw () {} Wstring (ScopePtr const& scope) - : Declaration (SimpleName ("wstring"), scope) + : Declaration (SimpleName ("wstring"), scope), + TypeDecl (SimpleName ("wstring"), scope), + TypeDef (SimpleName ("wstring"), scope), + BuiltInTypeDef (SimpleName ("wstring"), scope) { type_info (static_type_info ()); } diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp.m4 b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp.m4 index 5169cc84b89..00fb9296d4f 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp.m4 +++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp.m4 @@ -20,7 +20,10 @@ define(`built_in_type_impl', ` ~$1 () throw () {} $1 (ScopePtr const& scope) - : Declaration (SimpleName ("$2"), scope) + : Declaration (SimpleName ("$2"), scope), + TypeDecl (SimpleName ("$2"), scope), + TypeDef (SimpleName ("$2"), scope), + BuiltInTypeDef (SimpleName ("$2"), scope) { type_info (static_type_info ()); } @@ -72,7 +75,11 @@ namespace CCF virtual ~BuiltInTypeDef () throw () {} - BuiltInTypeDef () + BuiltInTypeDef (SimpleName const& name, + ScopePtr const& scope) + : Declaration (name, scope), + TypeDecl (name, scope), + TypeDef (name, scope) { type_info (static_type_info ()); } diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.cpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.cpp index df663a79876..bfe3418a29d 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.cpp +++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.cpp @@ -18,37 +18,6 @@ namespace CCF // namespace { - bool - subtype_p (TypeInfo const& derived, TypeInfo const& base) - { - if (derived.type_id () == base.type_id ()) return true; - - for (TypeInfo::BaseIterator i = derived.begin_base (); - i != derived.end_base (); - ++i) - { - if (subtype_p (i->type_info (), base)) return true; - } - - return false; - } - } - - bool Node:: - is_a (TypeInfo const& ti) const - { - return subtype_p (type_info (), ti); - } - - NodePtr Node:: - dynamic_type (TypeInfo const& ti) - { - if (is_a (ti)) return NodePtr (ReferenceCounting::add_ref (this)); - else return NodePtr (); - } - - namespace - { TypeInfo node_init_ () { @@ -64,6 +33,7 @@ namespace CCF TypeInfo const& Node:: static_type_info () { return node_; } + // Comma // // @@ -107,8 +77,7 @@ namespace CCF Declaration (SimpleName const& name, ScopePtr const& scope) : order_ (scope->create_order ()), name_ (scope->name (), name), - table_ (scope->table ()), - scope_ (table_, + scope_ (scope->table (), scope->name (), scope->order ()) // Hint: scope->scope () may throw { @@ -121,7 +90,6 @@ namespace CCF ScopePtr const& scope) : order_ (order), name_ (scope->name (), name), - table_ (scope->table ()), scope_ (scope->table (), scope->name (), scope->order ()) // Hint: scope->scope () may throw @@ -132,11 +100,10 @@ namespace CCF Declaration:: Declaration (ScopedName const& name, Order const& order, - DeclarationTable& table) + DeclarationTable const& table) : order_ (order), name_ (name), - table_ (table), - scope_ (table_) // this stuff is faked + scope_ (table) // this stuff is faked { type_info (static_type_info ()); } @@ -202,7 +169,6 @@ namespace CCF } } - DeclarationTable::IteratorPair DeclarationTable:: lookup (ScopedName const& n) const { @@ -217,26 +183,6 @@ namespace CCF } } - - DeclarationPtr DeclarationTable:: - lookup (ScopedName const& n, Introspection::TypeInfo const& ti) const - throw (DeclarationNotFound, TypeMismatch) - { - IteratorPair pair = lookup (n); - - if (pair.first == pair.second) throw DeclarationNotFound (); - - for (; pair.first != pair.second; pair.first++) - { - DeclarationPtr d = (*pair.first); - - if (d->is_a (ti)) return d; - } - - throw TypeMismatch (); - } - - DeclarationTable::Iterator DeclarationTable:: begin () const { @@ -351,7 +297,7 @@ namespace CCF { try { - table ().insert (d); + table_.insert (d); } catch (...) { diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.hpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.hpp index 6f5e83bf63d..9574ce5ced2 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.hpp +++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.hpp @@ -37,11 +37,6 @@ namespace CCF class InvalidArgument {}; public: - virtual - ~Name () - { - } - explicit Name (std::string const& name) throw (InvalidArgument) : name_ (name) @@ -74,20 +69,13 @@ namespace CCF return name_ != other.name_; } - public: - virtual std::ostream& - print (std::ostream& o) const - { - return o << name_; - } - protected: std::string name_; friend std::ostream& operator << (std::ostream& o, Name const& name) { - return name.print (o); + return o << name.name_; } friend class ScopedName; @@ -145,7 +133,7 @@ namespace CCF }; - // Should always start with "::". Can be just "::" which + // Shuld always start with "::". Can be just "::" which // means it's a file-scope. // // @@ -321,18 +309,6 @@ namespace CCF std::string literal_; }; - inline bool - operator== (StringLiteral const& a, StringLiteral const& b) - { - return a.str () == b.str (); - } - - inline bool - operator!= (StringLiteral const& a, StringLiteral const& b) - { - return a.str () != b.str (); - } - // // @@ -456,41 +432,23 @@ namespace CCF type_info (static_type_info ()); } - // Virtual typing. - // + // Dynamic typing public: - //@@ should virtual_type be constant (since it is temporary)? - // - virtual NodePtr - virtual_type () - { - return NodePtr (); - } - - // Dynamic typing. - // - public: - - virtual bool - is_a (Introspection::TypeInfo const& ti) const; - template <typename Type> bool - is_a () const + is_a () { - return is_a (Type::static_type_info ()); + NodePtr self (ReferenceCounting::add_ref (this)); + return ReferenceCounting::strict_cast<Type>(self) != 0; } - virtual NodePtr - dynamic_type (Introspection::TypeInfo const& ti); - template <typename Type> StrictPtr<Type> dynamic_type () { - return ReferenceCounting::strict_cast<Type>( - dynamic_type (Type::static_type_info ())); + NodePtr self (ReferenceCounting::add_ref (this)); + return ReferenceCounting::strict_cast<Type>(self); } // Context @@ -580,6 +538,7 @@ namespace CCF public: + DeclarationRef (DeclarationPtr decl); DeclarationRef (DeclarationTable const& table, ScopedName const& name); DeclarationRef (DeclarationTable const& table, @@ -641,14 +600,6 @@ namespace CCF StrictPtr<Scope> ScopePtr; - class Declaration; - - typedef - StrictPtr<Declaration> - DeclarationPtr; - - class DeclarationTable; - class Declaration : public virtual Node { protected: @@ -665,40 +616,7 @@ namespace CCF // e.g. FileScope Declaration (ScopedName const& name, Order const& order, - DeclarationTable& table); - - - // This c-tor is declared but never defined. The trick is that - // it should never be called since all inheritance in SyntaxTree - // is virtual. - // - Declaration (); - - public: - DeclarationTable const& - table () const - { - return table_; - } - - DeclarationTable& - table () - { - return table_; - } - - public: - //@@ returned object should be constant - // - //@@ it should probably take ScopedName - // - virtual DeclarationPtr - clone_temporary (SimpleName const& name, - Order const& order, - ScopePtr const& scope) - { - throw 0; - } + DeclarationTable const& table); public: @@ -731,10 +649,13 @@ namespace CCF private: Order order_; ScopedName name_; - DeclarationTable& table_; DeclarationRef<Scope> scope_; }; + typedef + StrictPtr<Declaration> + DeclarationPtr; + // // @@ -826,11 +747,15 @@ namespace CCF IteratorPair lookup (ScopedName const& n) const; - class DeclarationNotFound {}; + bool + exist (ScopedName const& n) const + { + IteratorPair pair = lookup (n); + return pair.first != pair.second; + } - DeclarationPtr - lookup (ScopedName const& n, Introspection::TypeInfo const& ti) const - throw (DeclarationNotFound, TypeMismatch); + + class DeclarationNotFound {}; template <typename T> StrictPtr<T> @@ -842,13 +767,6 @@ namespace CCF lookup (ScopedName const& n, Order const& o) const throw (DeclarationNotFound, TypeMismatch); - bool - exist (ScopedName const& n) const - { - IteratorPair pair = lookup (n); - return pair.first != pair.second; - } - class ResolutionFailure {}; class NameNotFound : public ResolutionFailure {}; class PredicateNotMet : public ResolutionFailure {}; @@ -892,8 +810,22 @@ namespace CCF virtual ~Scope () throw () {} - Scope () - : next_order_ (0) + // This c-tor is here for Declarations that are not in scope + // e.g. FileScope. + Scope (DeclarationTable& table, + ScopedName const& name, + Order const& order) + : Declaration (name, order, table), + table_ (table), + next_order_ (0) + { + type_info (static_type_info ()); + } + + Scope (SimpleName const& name, ScopePtr const& scope) + : Declaration (name, scope), + table_ (scope->table ()), + next_order_ (0) { type_info (static_type_info ()); } @@ -919,6 +851,19 @@ namespace CCF Order peek_order (); + + public: + + DeclarationTable const& table () const + { + return table_; + } + + DeclarationTable& table () + { + return table_; + } + // Runtime declaration type information public: virtual std::string @@ -933,6 +878,7 @@ namespace CCF private: DeclarationSet content_; + DeclarationTable& table_; unsigned long next_order_; }; @@ -946,7 +892,9 @@ namespace CCF virtual ~TypeDecl () throw () {} - TypeDecl () + TypeDecl (SimpleName const& name, + ScopePtr const& scope) + : Declaration (name, scope) { type_info (static_type_info ()); } @@ -987,7 +935,10 @@ namespace CCF virtual ~TypeForwardDecl () throw () {} - TypeForwardDecl () + TypeForwardDecl (SimpleName const& name, + ScopePtr const& scope) + : Declaration (name, scope), + TypeDecl (name, scope) { type_info (static_type_info ()); } @@ -1023,7 +974,10 @@ namespace CCF virtual ~TypeDef () throw () {} - TypeDef () + TypeDef (SimpleName const& name, + ScopePtr const& scope) + : Declaration (name, scope), + TypeDecl (name, scope) { type_info (static_type_info ()); } diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.tpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.tpp index c79d24db3b9..bc8b9ba131b 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.tpp +++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.tpp @@ -38,7 +38,7 @@ namespace CCF template <typename T, typename Ptr> DeclarationRef<T, Ptr>:: DeclarationRef (DeclarationPtr decl) - : table_ (decl->table ()), + : table_ (decl->scope ()->table ()), name_ (decl->name ()), order_ (decl->order ()), initialized_ (true), @@ -89,10 +89,21 @@ namespace CCF lookup (ScopedName const& n) const throw (DeclarationNotFound, TypeMismatch) { - DeclarationPtr d (lookup (n, T::static_type_info ())); + IteratorPair pair = lookup (n); + + if (pair.first == pair.second) throw DeclarationNotFound (); + + for (; pair.first != pair.second; pair.first++) + { + DeclarationPtr d = (*pair.first); + + //@@ gcc bug + StrictPtr<T> p ((*pair.first)->template dynamic_type<T> ()); + + if (p != 0) return p; + } - //@@ gcc bug - return d->template dynamic_type<T> (); + throw TypeMismatch (); } diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Interface.hpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Interface.hpp index 8b9613715e6..f17cdfa2413 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Interface.hpp +++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Interface.hpp @@ -13,17 +13,20 @@ namespace CCF { namespace SyntaxTree { - + // // // class InterfaceDecl : public virtual TypeDecl { - protected: + public: virtual ~InterfaceDecl () throw () {} - InterfaceDecl () + InterfaceDecl (SimpleName const& name, + ScopePtr const& scope) + : Declaration (name, scope), + TypeDecl (name, scope) { type_info (static_type_info ()); } @@ -72,11 +75,16 @@ namespace CCF class InterfaceForwardDecl : public virtual InterfaceDecl, public virtual TypeForwardDecl { - protected: + public: virtual ~InterfaceForwardDecl () throw () {} - InterfaceForwardDecl () + InterfaceForwardDecl (SimpleName const& name, + ScopePtr const& scope) + : Declaration (name, scope), + TypeDecl (name, scope), + InterfaceDecl (name, scope), + TypeForwardDecl (name, scope) { type_info (static_type_info ()); } @@ -94,7 +102,7 @@ namespace CCF static_type_info (); }; - + // // // @@ -120,11 +128,18 @@ namespace CCF public virtual TypeDef, public virtual Scope { - protected: + public: virtual ~InterfaceDef () throw () {} - InterfaceDef (ScopedNameSet const& inherits) + InterfaceDef (SimpleName const& name, + ScopePtr const& scope, + ScopedNameSet const& inherits) + : Declaration (name, scope), + TypeDecl (name, scope), + InterfaceDecl (name, scope), + TypeDef (name, scope), + Scope (name, scope) { type_info (static_type_info ()); @@ -132,14 +147,10 @@ namespace CCF i != inherits.end (); i++) { - inherits_.insert (InterfaceDefRef (table (), *i)); + inherits_.insert (InterfaceDefRef (scope->table (), *i)); } } - // This c-tor is never called. - // - InterfaceDef (); - public: typedef InterfaceDefRefSetName::const_iterator @@ -195,11 +206,16 @@ namespace CCF // class AbstractInterfaceDecl : public virtual InterfaceDecl { - protected: + public: virtual ~AbstractInterfaceDecl () throw () {} - AbstractInterfaceDecl () + // forward-declared unconstrained interface c-tor + AbstractInterfaceDecl (SimpleName const& name, + ScopePtr const& scope) + : Declaration (name, scope), + TypeDecl (name, scope), + InterfaceDecl (name, scope) { type_info (static_type_info ()); } @@ -231,9 +247,15 @@ namespace CCF virtual ~AbstractInterfaceForwardDecl () throw () {} + // forward-declared unconstrained interface c-tor AbstractInterfaceForwardDecl (SimpleName const& name, ScopePtr const& scope) - : Declaration (name, scope) + : Declaration (name, scope), + TypeDecl (name, scope), + InterfaceDecl (name, scope), + TypeForwardDecl (name, scope), + InterfaceForwardDecl (name, scope), + AbstractInterfaceDecl (name, scope) { type_info (static_type_info ()); } @@ -266,7 +288,12 @@ namespace CCF ScopePtr const& scope, ScopedNameSet const& inherits) : Declaration (name, scope), - InterfaceDef (inherits) + TypeDecl (name, scope), + InterfaceDecl (name, scope), + AbstractInterfaceDecl (name, scope), + TypeDef (name, scope), + Scope (name, scope), + InterfaceDef (name, scope, inherits) { type_info (static_type_info ()); } @@ -293,11 +320,15 @@ namespace CCF // class LocalInterfaceDecl : public virtual InterfaceDecl { - protected: + public: virtual ~LocalInterfaceDecl () throw () {} - LocalInterfaceDecl () + LocalInterfaceDecl (SimpleName const& name, + ScopePtr const& scope) + : Declaration (name, scope), + TypeDecl (name, scope), + InterfaceDecl (name, scope) { type_info (static_type_info ()); } @@ -332,7 +363,12 @@ namespace CCF LocalInterfaceForwardDecl (SimpleName const& name, ScopePtr const& scope) - : Declaration (name, scope) + : Declaration (name, scope), + TypeDecl (name, scope), + InterfaceDecl (name, scope), + TypeForwardDecl (name, scope), + InterfaceForwardDecl (name, scope), + LocalInterfaceDecl (name, scope) { type_info (static_type_info ()); } @@ -365,7 +401,12 @@ namespace CCF ScopePtr const& scope, ScopedNameSet const& inherits) : Declaration (name, scope), - InterfaceDef (inherits) + TypeDecl (name, scope), + InterfaceDecl (name, scope), + LocalInterfaceDecl (name, scope), + TypeDef (name, scope), + Scope (name, scope), + InterfaceDef (name, scope, inherits) { type_info (static_type_info ()); } @@ -393,11 +434,15 @@ namespace CCF // class UnconstrainedInterfaceDecl : public virtual InterfaceDecl { - protected: + public: virtual ~UnconstrainedInterfaceDecl () throw () {} - UnconstrainedInterfaceDecl () + UnconstrainedInterfaceDecl (SimpleName const& name, + ScopePtr const& scope) + : Declaration (name, scope), + TypeDecl (name, scope), + InterfaceDecl (name, scope) { type_info (static_type_info ()); } @@ -441,31 +486,18 @@ namespace CCF virtual ~UnconstrainedInterfaceForwardDecl () throw () {} - UnconstrainedInterfaceForwardDecl (SimpleName const& name, - ScopePtr const& scope) - : Declaration (name, scope) - { - type_info (static_type_info ()); - } - UnconstrainedInterfaceForwardDecl (SimpleName const& name, - Order const& order, ScopePtr const& scope) - : Declaration (name, order, scope) + : Declaration (name, scope), + TypeDecl (name, scope), + InterfaceDecl (name, scope), + TypeForwardDecl (name, scope), + InterfaceForwardDecl (name, scope), + UnconstrainedInterfaceDecl (name, scope) { type_info (static_type_info ()); } - public: - virtual DeclarationPtr - clone_temporary (SimpleName const& name, - Order const& order, - ScopePtr const& scope) - { - return DeclarationPtr ( - new UnconstrainedInterfaceForwardDecl (name, order, scope)); - } - // Runtime declaration type information public: virtual std::string @@ -479,7 +511,6 @@ namespace CCF static_type_info (); }; - // // // @@ -495,30 +526,16 @@ namespace CCF ScopePtr const& scope, ScopedNameSet const& inherits) : Declaration (name, scope), - InterfaceDef (inherits) - { - type_info (static_type_info ()); - } - - UnconstrainedInterfaceDef (SimpleName const& name, - Order const& order, - ScopePtr const& scope) - : Declaration (name, order, scope), - InterfaceDef (ScopedNameSet ()) //@@ broken + TypeDecl (name, scope), + InterfaceDecl (name, scope), + UnconstrainedInterfaceDecl (name, scope), + TypeDef (name, scope), + Scope (name, scope), + InterfaceDef (name, scope, inherits) { type_info (static_type_info ()); } - public: - virtual DeclarationPtr - clone_temporary (SimpleName const& name, - Order const& order, - ScopePtr const& scope) - { - return DeclarationPtr ( - new UnconstrainedInterfaceDef (name, order, scope)); - } - // Runtime declaration type information public: virtual std::string diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Makefile.alt b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Makefile.alt index 9061713c1b6..41d218a4d96 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Makefile.alt +++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Makefile.alt @@ -16,7 +16,6 @@ cxx_translation_units := BuiltIn.cpp \ Module.cpp \ Operation.cpp \ Translation.cpp \ - Typedef.cpp \ TypeId.cpp \ ValueType.cpp diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Module.hpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Module.hpp index 4b437af660f..003d6d77c14 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Module.hpp +++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Module.hpp @@ -23,7 +23,8 @@ namespace CCF ~Module () throw () {} Module (SimpleName const& name, ScopePtr const& scope) - : Declaration (name, scope) + : Declaration (name, scope), + Scope (name, scope) { type_info (static_type_info ()); } diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Operation.hpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Operation.hpp index 4c18575d728..3cb6dae67f4 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Operation.hpp +++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Operation.hpp @@ -27,7 +27,7 @@ namespace CCF ScopedName const& type, ScopePtr const& scope) : Declaration (name, scope), - type_ (table (), type) + type_ (scope->table (), type) { type_info (static_type_info ()); @@ -151,21 +151,12 @@ namespace CCF ScopedName const& type, ScopePtr const& scope) : Declaration (name, scope), - type_ (table (), type) + type_ (scope->table (), type) { type_info (static_type_info ()); } - protected: - // This c-tor is never actually called. - // - OperationDecl (ScopedName const& type) - : type_ (table (), type) - { - type_info (static_type_info ()); - } - public: TypeDeclPtr type () diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Translation.cpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Translation.cpp index 4de37c90f40..ce37a67bf1c 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Translation.cpp +++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Translation.cpp @@ -34,7 +34,8 @@ namespace CCF FileScope:: FileScope (DeclarationTable& table, Order const& order) - : Declaration (ScopedName ("::"), order, table) + : Declaration (ScopedName ("::"), order, table), + Scope (table, ScopedName ("::"), order) { type_info (static_type_info ()); } diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Translation.hpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Translation.hpp index 7e311372d49..7f57ecf1f8e 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Translation.hpp +++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Translation.hpp @@ -25,7 +25,6 @@ namespace CCF FileScope (DeclarationTable& table, Order const& order); - public: virtual ScopePtr scope () const throw (NotInScope) { @@ -93,11 +92,6 @@ namespace CCF table.insert (scope_); } - protected: - // This c-tor is never called. - // - TranslationRegion (); - public: DeclarationTable const& table () const @@ -168,11 +162,14 @@ namespace CCF // class IncludeTranslationRegion : public virtual TranslationRegion { - protected: + public: virtual ~IncludeTranslationRegion () throw () {} - IncludeTranslationRegion () + IncludeTranslationRegion (fs::path const& file_path, + DeclarationTable& table, + Order const& order) + : TranslationRegion (file_path, table, order) { type_info (static_type_info ()); } @@ -200,7 +197,8 @@ namespace CCF UserIncludeTranslationRegion (fs::path const& file_path, DeclarationTable& table, Order const& order) - : TranslationRegion (file_path, table, order) + : TranslationRegion (file_path, table, order), + IncludeTranslationRegion (file_path, table, order) { type_info (static_type_info ()); } @@ -227,7 +225,8 @@ namespace CCF SysIncludeTranslationRegion (fs::path const& file_path, DeclarationTable& table, Order const& order) - : TranslationRegion (file_path, table, order) + : TranslationRegion (file_path, table, order), + IncludeTranslationRegion (file_path, table, order) { type_info (static_type_info ()); } @@ -254,7 +253,8 @@ namespace CCF ImpliedIncludeTranslationRegion (fs::path const& file_path, DeclarationTable& table, Order const& order) - : TranslationRegion (file_path, table, order) + : TranslationRegion (file_path, table, order), + IncludeTranslationRegion (file_path, table, order) { type_info (static_type_info ()); } diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/TypeId.cpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/TypeId.cpp index b8e03b9e898..367462e7f26 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/TypeId.cpp +++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/TypeId.cpp @@ -21,9 +21,7 @@ namespace CCF typeid_init_ () { TypeInfo ti (typeid (TypeId)); - ti.add_base (Access::PUBLIC, - true, - Declaration::static_type_info ()); + ti.add_base (Access::PUBLIC, true, Node::static_type_info ()); return ti; } @@ -43,9 +41,7 @@ namespace CCF typeprefix_init_ () { TypeInfo ti (typeid (TypePrefix)); - ti.add_base (Access::PUBLIC, - true, - Declaration::static_type_info ()); + ti.add_base (Access::PUBLIC, true, Node::static_type_info ()); return ti; } diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Typedef.cpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Typedef.cpp deleted file mode 100644 index 72b33d34661..00000000000 --- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Typedef.cpp +++ /dev/null @@ -1,125 +0,0 @@ -// file : CCF/IDL2/SyntaxTree/Typedef.cpp -// author : Boris Kolpackov <boris@dre.vanderbilt.edu> -// cvs-id : $Id$ - -#include "CCF/IDL2/SyntaxTree/Typedef.hpp" - -using namespace Introspection; - -namespace CCF -{ - namespace IDL2 - { - namespace SyntaxTree - { - //@@ It seems throwing exception in DeclarationTable::lookup () - // in case declaration not found or type mismatched is not - // not right. - // - bool TypedefDecl:: - is_a (Introspection::TypeInfo const& ti) const - { - if (TypeDecl::is_a (ti)) return true; - - try - { - table ().lookup (type_, ti); - return true; - } - catch (DeclarationTable::DeclarationNotFound const&) - { - //@@ ICE - abort (); - } - catch (DeclarationTable::TypeMismatch const&) - { - return false; - } - } - - NodePtr TypedefDecl:: - dynamic_type (Introspection::TypeInfo const& ti) - { - NodePtr n = TypeDecl::dynamic_type (ti); - - if (n != 0) return n; - - // Try virtual type. - // - - NodePtr v (virtual_type ()); - - if (v != 0) return v->dynamic_type (ti); - else return v; - } - - NodePtr TypedefDecl:: - virtual_type () - { - // Try to return TypeDef if there is one, otherwise TypeDecl. - // - try - { - TypeDefPtr def (table ().lookup<TypeDef> (type_)); - - return def->clone_temporary (name ().simple (), - order (), - scope ()); - } - catch (DeclarationTable::DeclarationNotFound const&) - { - //@@ ICE - abort (); - } - catch (DeclarationTable::TypeMismatch const&) - { - try - { - TypeDeclPtr decl (table ().lookup<TypeDecl> (type_)); - - return decl->clone_temporary (name ().simple (), - order (), - scope ()); - } - catch (DeclarationTable::DeclarationNotFound const&) - { - //@@ maybe it's a goofd idea to just let these exception - // go out of the function. And somewhere in the driver - // they should be cought and reported as ICE. - - //@@ ICE - abort (); - } - catch (DeclarationTable::TypeMismatch const&) - { - //@@ ICE - abort (); - } - } - } - - - bool TypedefDecl:: - defined () const - { - return is_a (TypeDef::static_type_info ()); - } - - namespace - { - TypeInfo - typedef_decl_init_ () - { - TypeInfo ti (typeid (TypedefDecl)); - ti.add_base (Access::PUBLIC, true, TypeDecl::static_type_info ()); - return ti; - } - - TypeInfo typedef_decl_ (typedef_decl_init_ ()); - } - - TypeInfo const& TypedefDecl:: - static_type_info () { return typedef_decl_; } - } - } -} diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Typedef.hpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Typedef.hpp deleted file mode 100644 index 0a93a5c88ab..00000000000 --- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Typedef.hpp +++ /dev/null @@ -1,69 +0,0 @@ -// file : CCF/IDL2/SyntaxTree/Typedef.hpp -// author : Boris Kolpackov <boris@dre.vanderbilt.edu> -// cvs-id : $Id$ - -#ifndef CCF_IDL2_SYNTAX_TREE_TYPEDEF_HPP -#define CCF_IDL2_SYNTAX_TREE_TYPEDEF_HPP - -#include "CCF/IDL2/SyntaxTree/Elements.hpp" - -namespace CCF -{ - namespace IDL2 - { - namespace SyntaxTree - { - class TypedefDecl : public virtual TypeDecl - { - public: - virtual - ~TypedefDecl () throw () {} - - TypedefDecl (SimpleName const& name, - ScopedName const& type, - ScopePtr const& scope) - : Declaration (name, scope), - type_ (type) - { - type_info (static_type_info ()); - } - - public: - virtual bool - is_a (Introspection::TypeInfo const& ti) const; - - virtual NodePtr - dynamic_type (Introspection::TypeInfo const& ti); - - virtual NodePtr - virtual_type (); - - // Type completeness - public: - virtual bool - defined () const; - - // Runtime declaration type information - public: - virtual std::string - declaration_class () - { - return "typedef"; - } - - public: - static Introspection::TypeInfo const& - static_type_info (); - - private: - ScopedName type_; - }; - - typedef - StrictPtr<TypedefDecl> - TypedefDeclPtr; - } - } -} - -#endif // CCF_IDL2_SYNTAX_TREE_TYPEDEF_HPP diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/ValueType.hpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/ValueType.hpp index 226fe3beafa..4fd69746124 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/ValueType.hpp +++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/ValueType.hpp @@ -19,11 +19,14 @@ namespace CCF // class ValueTypeDecl : public virtual TypeDecl { - protected: + public: virtual ~ValueTypeDecl () throw () {} - ValueTypeDecl () + ValueTypeDecl (SimpleName const& name, + ScopePtr const& scope) + : Declaration (name, scope), + TypeDecl (name, scope) { type_info (static_type_info ()); } @@ -79,13 +82,10 @@ namespace CCF ValueTypeForwardDecl (SimpleName const& name, ScopePtr const& scope) - : Declaration (name, scope) - { - type_info (static_type_info ()); - } - - protected: - ValueTypeForwardDecl () + : Declaration (name, scope), + TypeDecl (name, scope), + ValueTypeDecl (name, scope), + TypeForwardDecl (name, scope) { type_info (static_type_info ()); } @@ -136,20 +136,11 @@ namespace CCF ValueTypeDef (SimpleName const& name, ScopePtr const& scope, ScopedNameSet const& inherits) - : Declaration (name, scope) - { - type_info (static_type_info ()); - - for (ScopedNameSet::const_iterator i = inherits.begin (); - i != inherits.end (); - i++) - { - inherits_.insert (ValueTypeDefRef (table (), *i)); - } - } - - protected: - ValueTypeDef (ScopedNameSet const& inherits) + : Declaration (name, scope), + TypeDecl (name, scope), + ValueTypeDecl (name, scope), + TypeDef (name, scope), + Scope (name, scope) { type_info (static_type_info ()); @@ -157,15 +148,10 @@ namespace CCF i != inherits.end (); i++) { - inherits_.insert (ValueTypeDefRef (table (), *i)); + inherits_.insert (ValueTypeDefRef (scope->table (), *i)); } } - // This c-tor is never called. - // - ValueTypeDef (); - - // Runtime declaration type information public: virtual std::string @@ -197,6 +183,7 @@ namespace CCF typedef std::set<ValueTypeDefRef, ValueTypeDefRefOrderComparator> ValueTypeDefRefSet; + } } } diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal.hpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal.hpp index d87a0919da4..04da1fe1e4f 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/Traversal.hpp +++ b/TAO/CIAO/CCF/CCF/IDL2/Traversal.hpp @@ -11,7 +11,6 @@ #include "CCF/IDL2/Traversal/Module.hpp" #include "CCF/IDL2/Traversal/Operation.hpp" #include "CCF/IDL2/Traversal/Translation.hpp" -#include "CCF/IDL2/Traversal/Typedef.hpp" #include "CCF/IDL2/Traversal/TypeId.hpp" #endif // CCF_IDL2_TRAVERSAL_HPP diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/BuiltIn.hpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal/BuiltIn.hpp index e83bcb16447..eb339ac4be2 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/BuiltIn.hpp +++ b/TAO/CIAO/CCF/CCF/IDL2/Traversal/BuiltIn.hpp @@ -32,11 +32,10 @@ namespace CCF map (typeid (SyntaxTree::BuiltInTypeDef), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::BuiltInTypeDef> ()); - return true; } virtual void @@ -61,11 +60,10 @@ namespace CCF map (typeid (SyntaxTree::Object), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::Object> ()); - return true; } virtual void @@ -90,11 +88,10 @@ namespace CCF map (typeid (SyntaxTree::ValueBase), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::ValueBase> ()); - return true; } virtual void @@ -119,11 +116,10 @@ namespace CCF map (typeid (SyntaxTree::Any), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::Any> ()); - return true; } virtual void @@ -148,11 +144,10 @@ namespace CCF map (typeid (SyntaxTree::Boolean), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::Boolean> ()); - return true; } virtual void @@ -177,11 +172,10 @@ namespace CCF map (typeid (SyntaxTree::Char), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::Char> ()); - return true; } virtual void @@ -206,11 +200,10 @@ namespace CCF map (typeid (SyntaxTree::Double), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::Double> ()); - return true; } virtual void @@ -235,11 +228,10 @@ namespace CCF map (typeid (SyntaxTree::Float), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::Float> ()); - return true; } virtual void @@ -264,11 +256,10 @@ namespace CCF map (typeid (SyntaxTree::Long), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::Long> ()); - return true; } virtual void @@ -293,11 +284,10 @@ namespace CCF map (typeid (SyntaxTree::LongDouble), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::LongDouble> ()); - return true; } virtual void @@ -322,11 +312,10 @@ namespace CCF map (typeid (SyntaxTree::LongLong), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::LongLong> ()); - return true; } virtual void @@ -351,11 +340,10 @@ namespace CCF map (typeid (SyntaxTree::Octet), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::Octet> ()); - return true; } virtual void @@ -380,11 +368,10 @@ namespace CCF map (typeid (SyntaxTree::Short), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::Short> ()); - return true; } virtual void @@ -409,11 +396,10 @@ namespace CCF map (typeid (SyntaxTree::String), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::String> ()); - return true; } virtual void @@ -438,11 +424,10 @@ namespace CCF map (typeid (SyntaxTree::UnsignedLong), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::UnsignedLong> ()); - return true; } virtual void @@ -467,11 +452,10 @@ namespace CCF map (typeid (SyntaxTree::UnsignedLongLong), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::UnsignedLongLong> ()); - return true; } virtual void @@ -496,11 +480,10 @@ namespace CCF map (typeid (SyntaxTree::UnsignedShort), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::UnsignedShort> ()); - return true; } virtual void @@ -525,11 +508,10 @@ namespace CCF map (typeid (SyntaxTree::Void), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::Void> ()); - return true; } virtual void @@ -554,11 +536,10 @@ namespace CCF map (typeid (SyntaxTree::Wchar), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::Wchar> ()); - return true; } virtual void @@ -583,11 +564,10 @@ namespace CCF map (typeid (SyntaxTree::Wstring), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::Wstring> ()); - return true; } virtual void diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/BuiltIn.hpp.m4 b/TAO/CIAO/CCF/CCF/IDL2/Traversal/BuiltIn.hpp.m4 index 0d4b4d99564..feb9fbdf940 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/BuiltIn.hpp.m4 +++ b/TAO/CIAO/CCF/CCF/IDL2/Traversal/BuiltIn.hpp.m4 @@ -20,11 +20,10 @@ define(`built_in_type', ` map (typeid (SyntaxTree::$1), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::$1> ()); - return true; } virtual void @@ -71,11 +70,10 @@ namespace CCF map (typeid (SyntaxTree::BuiltInTypeDef), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::BuiltInTypeDef> ()); - return true; } virtual void diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Elements.cpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Elements.cpp index f63ecaf3961..eda7416b001 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Elements.cpp +++ b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Elements.cpp @@ -16,54 +16,52 @@ namespace CCF // Dispatcher // // - namespace + + struct TypeInfoComparator { - struct TypeInfoComparator + bool + operator () (TypeInfo const& x, TypeInfo const& y) const { - bool - operator () (TypeInfo const& x, TypeInfo const& y) const - { - return x.type_id () < y.type_id (); - } - }; - - typedef - std::map<TypeInfo, unsigned long, TypeInfoComparator> - LevelMap; + return x.type_id () < y.type_id (); + } + }; - typedef - std::set<TypeInfo, TypeInfoComparator> - TypeInfoSet; + typedef + std::map<TypeInfo, unsigned long, TypeInfoComparator> + LevelMap; - unsigned long - compute_levels (TypeInfo const& ti, unsigned long cur, LevelMap& map) - { - unsigned long ret = cur; + typedef + std::set<TypeInfo, TypeInfoComparator> + TypeInfoSet; - if (map.find (ti) == map.end () || map[ti] < cur) map[ti] = cur; + unsigned long + compute_levels (TypeInfo const& ti, unsigned long cur, LevelMap& map) + { + unsigned long ret = cur; - for (TypeInfo::BaseIterator i = ti.begin_base (); - i != ti.end_base (); - i++) - { - unsigned long t = compute_levels (i->type_info (), cur + 1, map); - if (t > ret) ret = t; - } + if (map.find (ti) == map.end () || map[ti] < cur) map[ti] = cur; - return ret; + for (TypeInfo::BaseIterator i = ti.begin_base (); + i != ti.end_base (); + i++) + { + unsigned long t = compute_levels (i->type_info (), cur + 1, map); + if (t > ret) ret = t; } - void - flatten_tree (TypeInfo const& ti, TypeInfoSet& set) - { - set.insert (ti); + return ret; + } - for (TypeInfo::BaseIterator i = ti.begin_base (); - i != ti.end_base (); - i++) - { - flatten_tree (i->type_info (), set); - } + void + flatten_tree (TypeInfo const& ti, TypeInfoSet& set) + { + set.insert (ti); + + for (TypeInfo::BaseIterator i = ti.begin_base (); + i != ti.end_base (); + i++) + { + flatten_tree (i->type_info (), set); } } @@ -78,15 +76,13 @@ namespace CCF // << n->type_info ().type_id () << " with " // << max << " levels" << endl; - bool match (false); - - for (unsigned long l = 0; l < max + 1; ++l) + for (unsigned long l = 0; l < max + 1; l++) { TypeInfoSet dispatched; for (LevelMap::const_iterator i = levels.begin (); i != levels.end (); - ++i) + i++) { if (i->second == l) { @@ -99,34 +95,20 @@ namespace CCF // << n->type_info ().type_id () << " as " // << i->first.type_id () << endl; - if (v->second.traverser->traverse (n)) - { - flatten_tree (i->first, dispatched); - match = true; - } + v->second.traverser->traverse (n); + flatten_tree (i->first, dispatched); } } } // Remove traversed types from level map. - // for (TypeInfoSet::const_iterator i = dispatched.begin (); i != dispatched.end (); - ++i) + i++) { levels.erase (*i); } } - - if (!match) - { - // Try virtual type. - // - - SyntaxTree::NodePtr v (n->virtual_type ()); - - if (v != 0) dispatch (v); - } } // Scope diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Elements.hpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Elements.hpp index a706576f99e..2601d23da5f 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Elements.hpp +++ b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Elements.hpp @@ -30,7 +30,7 @@ namespace CCF { } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) = 0; friend class Dispatcher; @@ -219,11 +219,10 @@ namespace CCF map (typeid (SyntaxTree::Comma), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::Comma> ()); - return true; } virtual void @@ -248,11 +247,10 @@ namespace CCF map (typeid (SyntaxTree::Declaration), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::Declaration> ()); - return true; } virtual void @@ -277,11 +275,10 @@ namespace CCF map (typeid (SyntaxTree::Scope), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::Scope> ()); - return true; } virtual void @@ -312,11 +309,10 @@ namespace CCF map (typeid (SyntaxTree::TypeDecl), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::TypeDecl> ()); - return true; } virtual void @@ -341,11 +337,10 @@ namespace CCF map (typeid (SyntaxTree::TypeDef), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::TypeDef> ()); - return true; } virtual void diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Interface.hpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Interface.hpp index 1b19e263f6e..c8ae18c5bd5 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Interface.hpp +++ b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Interface.hpp @@ -29,11 +29,10 @@ namespace CCF map (typeid (SyntaxTree::InterfaceDecl), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::InterfaceDecl> ()); - return true; } virtual void @@ -58,11 +57,10 @@ namespace CCF map (typeid (SyntaxTree::InterfaceDef), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::InterfaceDef> ()); - return true; } virtual void @@ -93,11 +91,10 @@ namespace CCF map (typeid (SyntaxTree::AbstractInterfaceDecl), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::AbstractInterfaceDecl> ()); - return true; } virtual void @@ -122,11 +119,10 @@ namespace CCF map (typeid (SyntaxTree::AbstractInterfaceDef), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::AbstractInterfaceDef> ()); - return true; } virtual void @@ -157,11 +153,10 @@ namespace CCF map (typeid (SyntaxTree::LocalInterfaceDecl), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::LocalInterfaceDecl> ()); - return true; } virtual void @@ -186,11 +181,10 @@ namespace CCF map (typeid (SyntaxTree::LocalInterfaceDef), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::LocalInterfaceDef> ()); - return true; } virtual void @@ -221,11 +215,10 @@ namespace CCF map (typeid (SyntaxTree::UnconstrainedInterfaceDecl), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::UnconstrainedInterfaceDecl> ()); - return true; } virtual void @@ -250,11 +243,10 @@ namespace CCF map (typeid (SyntaxTree::UnconstrainedInterfaceDef), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::UnconstrainedInterfaceDef> ()); - return true; } virtual void diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Module.hpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Module.hpp index b7c10ae165b..404895db7fb 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Module.hpp +++ b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Module.hpp @@ -28,11 +28,10 @@ namespace CCF map (typeid (SyntaxTree::Module), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::Module> ()); - return true; } virtual void diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Operation.hpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Operation.hpp index d2683f2e0ac..df94cfcea34 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Operation.hpp +++ b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Operation.hpp @@ -85,11 +85,10 @@ namespace CCF map (typeid (SyntaxTree::AttributeDecl), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::AttributeDecl> ()); - return true; } virtual void @@ -132,11 +131,10 @@ namespace CCF map (typeid (SyntaxTree::OperationParameter), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::OperationParameter> ()); - return true; } virtual void @@ -173,11 +171,10 @@ namespace CCF map (typeid (SyntaxTree::OperationDecl), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::OperationDecl> ()); - return true; } virtual void diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Translation.hpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Translation.hpp index 3a185a0194b..a8b4faf6e75 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Translation.hpp +++ b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Translation.hpp @@ -77,11 +77,10 @@ namespace CCF map (typeid (SyntaxTree::FileScope), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::FileScope> ()); - return true; } virtual void @@ -113,11 +112,10 @@ namespace CCF map (typeid (SyntaxTree::TranslationRegion), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::TranslationRegion> ()); - return true; } virtual void @@ -152,11 +150,10 @@ namespace CCF map (typeid (SyntaxTree::IncludeTranslationRegion), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::IncludeTranslationRegion> ()); - return true; } virtual void @@ -191,12 +188,11 @@ namespace CCF map (typeid (SyntaxTree::UserIncludeTranslationRegion), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse ( n->dynamic_type<SyntaxTree::UserIncludeTranslationRegion> ()); - return true; } virtual void @@ -231,12 +227,11 @@ namespace CCF map (typeid (SyntaxTree::SysIncludeTranslationRegion), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse ( n->dynamic_type<SyntaxTree::SysIncludeTranslationRegion> ()); - return true; } virtual void @@ -271,12 +266,11 @@ namespace CCF map (typeid (SyntaxTree::ImpliedIncludeTranslationRegion), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse ( n->dynamic_type<SyntaxTree::ImpliedIncludeTranslationRegion> ()); - return true; } virtual void @@ -311,11 +305,10 @@ namespace CCF map (typeid (SyntaxTree::PrincipalTranslationRegion), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::PrincipalTranslationRegion> ()); - return true; } virtual void @@ -349,11 +342,10 @@ namespace CCF map (typeid (SyntaxTree::TranslationUnit), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::TranslationUnit> ()); - return true; } virtual void diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/TypeId.hpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal/TypeId.hpp index c5774cbd25d..49f9d03e535 100644 --- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/TypeId.hpp +++ b/TAO/CIAO/CCF/CCF/IDL2/Traversal/TypeId.hpp @@ -28,11 +28,10 @@ namespace CCF map (typeid (SyntaxTree::TypeId), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::TypeId> ()); - return true; } virtual void @@ -57,11 +56,10 @@ namespace CCF map (typeid (SyntaxTree::TypePrefix), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::TypePrefix> ()); - return true; } virtual void diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Typedef.cpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Typedef.cpp deleted file mode 100644 index ae254c17ae8..00000000000 --- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Typedef.cpp +++ /dev/null @@ -1,15 +0,0 @@ -// file : CCF/IDL2/Traversal/Typedef.cpp -// author : Boris Kolpackov <boris@dre.vanderbilt.edu> -// cvs-id : $Id$ - -#include "CCF/IDL2/Traversal/Typedef.hpp" - -namespace CCF -{ - namespace IDL2 - { - namespace Traversal - { - } - } -} diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Typedef.hpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Typedef.hpp deleted file mode 100644 index 76f00170787..00000000000 --- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Typedef.hpp +++ /dev/null @@ -1,57 +0,0 @@ -// file : CCF/IDL2/Traversal/Typedef.hpp -// author : Boris Kolpackov <boris@dre.vanderbilt.edu> -// cvs-id : $Id$ - -#ifndef CCF_IDL2_TRAVERSAL_TYPEDEF_HPP -#define CCF_IDL2_TRAVERSAL_TYPEDEF_HPP - -#include "CCF/IDL2/Traversal/Elements.hpp" -#include "CCF/IDL2/SyntaxTree/Typedef.hpp" - -namespace CCF -{ - namespace IDL2 - { - namespace Traversal - { - // - // - // - template <typename T> - struct TypedefDecl : Traverser - { - typedef - SyntaxTree::StrictPtr<T> - NodePtr; - - TypedefDecl () - { - map (typeid (SyntaxTree::TypedefDecl), this); - } - - virtual bool - traverse (SyntaxTree::NodePtr const& n) - { - //@@ gcc bug - if (n->template is_a<T> ()) - { - traverse (n->template dynamic_type<T> ()); - return true; - } - else - { - return false; - } - } - - virtual void - traverse (NodePtr const& n) - { - delegate (n); - } - }; - } - } -} - -#endif // CCF_IDL2_TRAVERSAL_TYPEDEF_HPP diff --git a/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Component.hpp b/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Component.hpp index 9e3d30e1f5d..6d0b095aad1 100644 --- a/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Component.hpp +++ b/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Component.hpp @@ -23,11 +23,14 @@ namespace CCF // class ComponentDecl : public virtual TypeDecl { - protected: + public: virtual ~ComponentDecl () throw () {} - ComponentDecl () + ComponentDecl (SimpleName const& name, + ScopePtr const& scope) + : Declaration (name, scope), + TypeDecl (name, scope) { type_info (static_type_info ()); } @@ -66,7 +69,10 @@ namespace CCF ComponentForwardDecl (SimpleName const& name, ScopePtr const& scope) - : Declaration (name, scope) + : Declaration (name, scope), + TypeDecl (name, scope), + ComponentDecl (name, scope), + TypeForwardDecl (name, scope) { type_info (static_type_info ()); } @@ -113,7 +119,11 @@ namespace CCF ScopedName const& inherits, ScopedNameSet const& supports) : Declaration (name, scope), - inherits_ (table (), inherits) + TypeDecl (name, scope), + TypeDef (name, scope), + ComponentDecl (name, scope), + Scope (name, scope), + inherits_ (scope->table (), inherits) { type_info (static_type_info ()); copy_supports_list (supports); @@ -123,7 +133,11 @@ namespace CCF ScopePtr const& scope, ScopedNameSet const& supports) : Declaration (name, scope), - inherits_ (table ()) + TypeDecl (name, scope), + TypeDef (name, scope), + ComponentDecl (name, scope), + Scope (name, scope), + inherits_ (scope->table ()) { type_info (static_type_info ()); copy_supports_list (supports); @@ -137,7 +151,7 @@ namespace CCF i != supports.end (); i++) { - supports_.insert (InterfaceDefRef (table (), *i)); + supports_.insert (InterfaceDefRef (scope ()->table (), *i)); } } diff --git a/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/EventType.hpp b/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/EventType.hpp index dd0c3b93736..5327b64d339 100644 --- a/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/EventType.hpp +++ b/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/EventType.hpp @@ -16,17 +16,21 @@ namespace CCF // Import nodes from IDL2 using namespace IDL2::SyntaxTree; - + // // // class EventTypeDecl : public virtual ValueTypeDecl { - protected: + public: virtual ~EventTypeDecl () throw () {} - EventTypeDecl () + EventTypeDecl (SimpleName const& name, + ScopePtr const& scope) + : Declaration (name, scope), + TypeDecl (name, scope), + ValueTypeDecl (name, scope) { type_info (static_type_info ()); } @@ -55,11 +59,18 @@ namespace CCF class EventTypeForwardDecl : public virtual ValueTypeForwardDecl, public virtual EventTypeDecl { - protected: + public: virtual ~EventTypeForwardDecl () throw () {} - EventTypeForwardDecl () + EventTypeForwardDecl (SimpleName const& name, + ScopePtr const& scope) + : Declaration (name, scope), + TypeDecl (name, scope), + ValueTypeDecl (name, scope), + TypeForwardDecl (name, scope), + ValueTypeForwardDecl (name, scope), + EventTypeDecl (name, scope) { type_info (static_type_info ()); } @@ -84,11 +95,20 @@ namespace CCF class EventTypeDef : public virtual EventTypeDecl, public virtual ValueTypeDef { - protected: + public: virtual ~EventTypeDef () throw () {} - EventTypeDef () + EventTypeDef (SimpleName const& name, + ScopePtr const& scope, + ScopedNameSet const& inherits) + : Declaration (name, scope), + TypeDecl (name, scope), + ValueTypeDecl (name, scope), + EventTypeDecl (name, scope), + TypeDef (name, scope), + Scope (name, scope), + ValueTypeDef (name, scope, inherits) { type_info (static_type_info ()); } @@ -112,11 +132,16 @@ namespace CCF // class ConcreteEventTypeDecl : public virtual EventTypeDecl { - protected: + public: virtual ~ConcreteEventTypeDecl () throw () {} - ConcreteEventTypeDecl () + ConcreteEventTypeDecl (SimpleName const& name, + ScopePtr const& scope) + : Declaration (name, scope), + TypeDecl (name, scope), + ValueTypeDecl (name, scope), + EventTypeDecl (name, scope) { type_info (static_type_info ()); } @@ -149,7 +174,14 @@ namespace CCF ScopePtr const& scope, ScopedNameSet const& inherits) : Declaration (name, scope), - ValueTypeDef (inherits) + TypeDecl (name, scope), + ValueTypeDecl (name, scope), + EventTypeDecl (name, scope), + ConcreteEventTypeDecl (name, scope), + TypeDef (name, scope), + Scope (name, scope), + ValueTypeDef (name, scope, inherits), + EventTypeDef (name, scope, inherits) { type_info (static_type_info ()); } diff --git a/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Home.hpp b/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Home.hpp index 6bfbc8434a8..47f8901a14e 100644 --- a/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Home.hpp +++ b/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Home.hpp @@ -32,8 +32,7 @@ namespace CCF DeclarationRef<HomeDef> HomeDefRef; - class HomeDef : public virtual TypeDef, - public virtual Scope + class HomeDef : public virtual TypeDef, public virtual Scope { public: virtual @@ -46,8 +45,11 @@ namespace CCF ScopedName const& manages) : Declaration (name, scope), - inherits_ (table (), inherits), - manages_ (table (), manages) + TypeDecl (name, scope), + TypeDef (name, scope), + Scope (name, scope), + inherits_ (scope->table (), inherits), + manages_ (scope->table (), manages) { type_info (static_type_info ()); copy_supports_list (supports); @@ -59,8 +61,11 @@ namespace CCF ScopedName const& manages) : Declaration (name, scope), - inherits_ (table ()), - manages_ (table (), manages) + TypeDecl (name, scope), + TypeDef (name, scope), + Scope (name, scope), + inherits_ (scope->table ()), + manages_ (scope->table (), manages) { type_info (static_type_info ()); copy_supports_list (supports); @@ -74,7 +79,7 @@ namespace CCF i != supports.end (); i++) { - supports_.insert (InterfaceDefRef (table (), *i)); + supports_.insert (InterfaceDefRef (scope ()->table (), *i)); } } diff --git a/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Operation.hpp b/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Operation.hpp index 17b8c46565b..15b7b69a312 100644 --- a/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Operation.hpp +++ b/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Operation.hpp @@ -31,7 +31,7 @@ namespace CCF ScopedName const& type, ScopePtr const& scope) : Declaration (name, scope), - type_ (table (), type) + type_ (scope->table (), type) { type_info (static_type_info ()); } @@ -78,7 +78,7 @@ namespace CCF ScopedName const& type, ScopePtr const& scope) : Declaration (name, scope), - type_ (table (), type) + type_ (scope->table (), type) { type_info (static_type_info ()); @@ -125,7 +125,7 @@ namespace CCF ScopedName const& type, ScopePtr const& scope) : Declaration (name, scope), - type_ (table (), type) + type_ (scope->table (), type) { type_info (static_type_info ()); } @@ -172,7 +172,7 @@ namespace CCF ScopedName const& type, ScopePtr const& scope) : Declaration (name, scope), - type_ (table (), type) + type_ (scope->table (), type) { type_info (static_type_info ()); } @@ -219,7 +219,7 @@ namespace CCF ScopedName const& type, ScopePtr const& scope) : Declaration (name, scope), - type_ (table (), type) + type_ (scope->table (), type) { type_info (static_type_info ()); } @@ -294,7 +294,7 @@ namespace CCF ScopedName const& type, ScopePtr const& scope) : Declaration (name, scope), - OperationDecl (type) + OperationDecl (name, type, scope) { type_info (static_type_info ()); } diff --git a/TAO/CIAO/CCF/CCF/IDL3/Traversal/Component.hpp b/TAO/CIAO/CCF/CCF/IDL3/Traversal/Component.hpp index 751ba4dccae..a078d2c2c96 100644 --- a/TAO/CIAO/CCF/CCF/IDL3/Traversal/Component.hpp +++ b/TAO/CIAO/CCF/CCF/IDL3/Traversal/Component.hpp @@ -29,11 +29,10 @@ namespace CCF map (typeid (SyntaxTree::ComponentDecl), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::ComponentDecl> ()); - return true; } virtual void @@ -58,11 +57,10 @@ namespace CCF map (typeid (SyntaxTree::ComponentDef), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::ComponentDef> ()); - return true; } virtual void diff --git a/TAO/CIAO/CCF/CCF/IDL3/Traversal/EventType.hpp b/TAO/CIAO/CCF/CCF/IDL3/Traversal/EventType.hpp index e2928bb7439..e8c1c190d88 100644 --- a/TAO/CIAO/CCF/CCF/IDL3/Traversal/EventType.hpp +++ b/TAO/CIAO/CCF/CCF/IDL3/Traversal/EventType.hpp @@ -28,11 +28,10 @@ namespace CCF map (typeid (SyntaxTree::ConcreteEventTypeDef), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::ConcreteEventTypeDef> ()); - return true; } virtual void diff --git a/TAO/CIAO/CCF/CCF/IDL3/Traversal/Home.hpp b/TAO/CIAO/CCF/CCF/IDL3/Traversal/Home.hpp index 22817fb9cae..6893ed90b80 100644 --- a/TAO/CIAO/CCF/CCF/IDL3/Traversal/Home.hpp +++ b/TAO/CIAO/CCF/CCF/IDL3/Traversal/Home.hpp @@ -28,11 +28,10 @@ namespace CCF map (typeid (SyntaxTree::HomeDef), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::HomeDef> ()); - return true; } virtual void diff --git a/TAO/CIAO/CCF/CCF/IDL3/Traversal/Operation.hpp b/TAO/CIAO/CCF/CCF/IDL3/Traversal/Operation.hpp index 6b6f5820979..dd72be46f7e 100644 --- a/TAO/CIAO/CCF/CCF/IDL3/Traversal/Operation.hpp +++ b/TAO/CIAO/CCF/CCF/IDL3/Traversal/Operation.hpp @@ -29,11 +29,10 @@ namespace CCF map (typeid (SyntaxTree::ProvidesDecl), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::ProvidesDecl> ()); - return true; } virtual void @@ -68,11 +67,10 @@ namespace CCF map (typeid (SyntaxTree::UsesDecl), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::UsesDecl> ()); - return true; } virtual void @@ -107,11 +105,10 @@ namespace CCF map (typeid (SyntaxTree::PublishesDecl), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::PublishesDecl> ()); - return true; } virtual void @@ -146,11 +143,10 @@ namespace CCF map (typeid (SyntaxTree::EmitsDecl), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::EmitsDecl> ()); - return true; } virtual void @@ -185,11 +181,10 @@ namespace CCF map (typeid (SyntaxTree::ConsumesDecl), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::ConsumesDecl> ()); - return true; } virtual void @@ -224,11 +219,10 @@ namespace CCF map (typeid (SyntaxTree::HomeFactoryDecl), this); } - virtual bool + virtual void traverse (SyntaxTree::NodePtr const& n) { traverse (n->dynamic_type<SyntaxTree::HomeFactoryDecl> ()); - return true; } virtual void diff --git a/TAO/CIAO/CCF/Documentation/TODO b/TAO/CIAO/CCF/Documentation/TODO index e5f72b28805..897be113dc2 100644 --- a/TAO/CIAO/CCF/Documentation/TODO +++ b/TAO/CIAO/CCF/Documentation/TODO @@ -14,16 +14,6 @@ Legend: @@ Write proper build instructions. -@% Need to do something with this ctor initialization mess. - -@@ Can I use C++ templates instead of m4 in BuiltIn stuff? - -@@ Typedef.hpp TypeId.hpp: naming inconsistency. - -@@ Need ICE mechanism (search for abort ()) - -@@ Need evolution of semantic action error handling/reporting. - @@+ Add Elements to IDL3 and CIDL for consistency. @@+ Should CIDL syntax tree files have 'using namespace IDL2::SyntaxTree;' diff --git a/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp b/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp index 2f2c9e0fa0a..8feb988024f 100644 --- a/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp +++ b/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp @@ -23,6 +23,12 @@ using std::make_pair; using namespace CCF::CIDL; using namespace SyntaxTree; +/* + +@@ bad code: i->scope ()->table () + +*/ + namespace { class Declarations @@ -232,7 +238,7 @@ namespace ScopedName mapping (orig.scope (), "CCM_" + orig.simple ()); // Check if mapping has already been provided. - if (i->table ().exist (mapping)) return; + if (i->scope ()->table ().exist (mapping)) return; // Add to the list if it's not already there. declarations_.add (i); diff --git a/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp b/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp index 3bf8ad4e33a..9da6e60fac3 100644 --- a/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp +++ b/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp @@ -146,7 +146,7 @@ int main (int argc, char* argv[]) for (TokenPtr token = lexer.next ();; token = lexer.next ()) { token_stream.push_back (token); - // cerr << token << endl; + cerr << token << endl; if (ReferenceCounting::strict_cast<EndOfStream> (token) != 0) break; } diff --git a/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-0.idl b/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-0.idl index 09d5bca0258..15102ef34dd 100644 --- a/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-0.idl +++ b/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-0.idl @@ -5,9 +5,6 @@ module M { interface I {}; - - // typedef Internal I; - //local interface CCM_I : I {}; }; diff --git a/TAO/CIAO/CIDLC/CIDLC.vcproj b/TAO/CIAO/CIDLC/CIDLC.vcproj index 2540cdf9ac7..291b9be1b33 100644 --- a/TAO/CIAO/CIDLC/CIDLC.vcproj +++ b/TAO/CIAO/CIDLC/CIDLC.vcproj @@ -145,9 +145,6 @@ <File RelativePath=".\ServantSourceGenerator.cpp"> </File> - <File - RelativePath=".\TypeNameEmitter.cpp"> - </File> </Filter> <Filter Name="Header Files" @@ -177,9 +174,6 @@ <File RelativePath=".\ServantSourceGenerator.hpp"> </File> - <File - RelativePath=".\TypeNameEmitter.hpp"> - </File> </Filter> </Files> <Globals> diff --git a/TAO/CIAO/CIDLC/Collectors.hpp b/TAO/CIAO/CIDLC/Collectors.hpp index 4c0bab80143..105d5faf5f5 100644 --- a/TAO/CIAO/CIDLC/Collectors.hpp +++ b/TAO/CIAO/CIDLC/Collectors.hpp @@ -1,7 +1,4 @@ -// file : CIDLC/Collectors.hpp -// author : Boris Kolpackov <boris@dre.vanderbilt.edu> -// cvs-id : $Id$ - +// $Id$ #ifndef COLLECTORS_HPP #define COLLECTORS_HPP diff --git a/TAO/CIAO/CIDLC/DescriptorGenerator.cpp b/TAO/CIAO/CIDLC/DescriptorGenerator.cpp index 610df2c89b7..dd3aca4bcad 100644 --- a/TAO/CIAO/CIDLC/DescriptorGenerator.cpp +++ b/TAO/CIAO/CIDLC/DescriptorGenerator.cpp @@ -16,7 +16,6 @@ using std::cout; using std::endl; using std::string; -using namespace StringLiterals; using namespace CCF::CIDL; using namespace SyntaxTree; @@ -33,18 +32,23 @@ namespace string compute_repo_id (DeclarationPtr const& d) { - if (d->context ().count ( STRS[REPO_ID])) + if (d->context ().count ( + StringLiterals::STRS[StringLiterals::REPO_ID])) { - return d->context ().get<string> (STRS[REPO_ID]); + return + d->context ().get<string> ( + StringLiterals::STRS[StringLiterals::REPO_ID]); } string prefix (""); TypePrefixPtr tp; - if (d->context ().count (STRS[TYPE_PREFIX])) + if (d->context ().count ( + StringLiterals::STRS[StringLiterals::TYPE_PREFIX])) { tp = - d->context ().get<TypePrefixPtr> (STRS[TYPE_PREFIX]); + d->context ().get<TypePrefixPtr> ( + StringLiterals::STRS[StringLiterals::TYPE_PREFIX]); prefix = tp->prefix ().str (); } @@ -54,10 +58,12 @@ namespace while (parent != 0) { - if (parent->context ().count (STRS[TYPE_PREFIX])) + if (parent->context ().count ( + StringLiterals::STRS[StringLiterals::TYPE_PREFIX])) { tp = - parent->context ().get<TypePrefixPtr> (STRS[TYPE_PREFIX]); + parent->context ().get<TypePrefixPtr> ( + StringLiterals::STRS[StringLiterals::TYPE_PREFIX]); prefix = tp->prefix ().str (); break; @@ -79,7 +85,7 @@ namespace string repo_id = "IDL:" + prefix + scope_name + ":1.0"; // Store the repo id for possible future reference. - d->context ().set<string> (STRS[REPO_ID], + d->context ().set<string> (StringLiterals::STRS[StringLiterals::REPO_ID], repo_id); return repo_id; } diff --git a/TAO/CIAO/CIDLC/DescriptorGenerator.hpp b/TAO/CIAO/CIDLC/DescriptorGenerator.hpp index d9f0c4ada68..a5d4ce52025 100644 --- a/TAO/CIAO/CIDLC/DescriptorGenerator.hpp +++ b/TAO/CIAO/CIDLC/DescriptorGenerator.hpp @@ -1,7 +1,4 @@ -// file : CIDLC/DescriptorGenerator.hpp -// author : Jeff Parsons <j.parsons@vanderbilt.edu> -// cvs-id : $Id$ - +// $Id$ #ifndef DESCRIPTOR_GENERATOR_HPP #define DESCRIPTOR_GENERATOR_HPP diff --git a/TAO/CIAO/CIDLC/ExecutorMappingGenerator.cpp b/TAO/CIAO/CIDLC/ExecutorMappingGenerator.cpp index f355de658bb..b7ac8139385 100644 --- a/TAO/CIAO/CIDLC/ExecutorMappingGenerator.cpp +++ b/TAO/CIAO/CIDLC/ExecutorMappingGenerator.cpp @@ -1,4 +1,4 @@ -// file : CIDLC/ExecutorMappingGenerator.cpp +// file : CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp // author : Boris Kolpackov <boris@dre.vanderbilt.edu> // cvs-id : $Id$ @@ -23,6 +23,12 @@ using std::make_pair; using namespace CCF::CIDL; using namespace SyntaxTree; +/* + +@@ bad code: i->scope ()->table () + +*/ + namespace { class Declarations @@ -232,7 +238,7 @@ namespace ScopedName mapping (orig.scope (), "CCM_" + orig.simple ()); // Check if mapping has already been provided. - if (i->table ().exist (mapping)) return; + if (i->scope ()->table ().exist (mapping)) return; // Add to the list if it's not already there. declarations_.add (i); diff --git a/TAO/CIAO/CIDLC/ExecutorMappingGenerator.hpp b/TAO/CIAO/CIDLC/ExecutorMappingGenerator.hpp index 768f0fcbd58..10de696e1b3 100644 --- a/TAO/CIAO/CIDLC/ExecutorMappingGenerator.hpp +++ b/TAO/CIAO/CIDLC/ExecutorMappingGenerator.hpp @@ -1,4 +1,4 @@ -// file : CIDLC/ExecutorMappingGenerator.hpp +// file : CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.hpp // author : Boris Kolpackov <boris@dre.vanderbilt.edu> // cvs-id : $Id$ diff --git a/TAO/CIAO/CIDLC/Literals.hpp b/TAO/CIAO/CIDLC/Literals.hpp index 249ece79fdc..df36b2340cc 100644 --- a/TAO/CIAO/CIDLC/Literals.hpp +++ b/TAO/CIAO/CIDLC/Literals.hpp @@ -1,10 +1,4 @@ -// file : CIDLC/Literals.hpp -// author : Jeff Parsons <j.parsons@vanderbilt.edu> -// cvs-id : $Id$ - -#ifndef LITERALS_HPP -#define LITERALS_HPP - +// $Id$ namespace StringLiterals { static const char COPYRIGHT[] = @@ -104,5 +98,3 @@ namespace StringLiterals REPO_ID }; } - -#endif // LITERALS_HPP diff --git a/TAO/CIAO/CIDLC/Makefile.alt b/TAO/CIAO/CIDLC/Makefile.alt deleted file mode 100644 index b3ea73502a8..00000000000 --- a/TAO/CIAO/CIDLC/Makefile.alt +++ /dev/null @@ -1,42 +0,0 @@ -# file : CIDLC/Makefile.alt -# author : Boris Kolpackov <boris@dre.vanderbilt.edu> -# cvs-id : $Id$ - -root = ../CCF - -include $(root)/Bootstrap.rules - -$(call include, $(root)/Config.rules) - -$(call include, $(UTILITY_ROOT)/BuildRules/Executable.pre.rules) - -cxx_translation_units := DescriptorGenerator.cpp \ - ExecutorMappingGenerator.cpp \ - RepositoryIdGenerator.cpp \ - ServantGenerator.cpp \ - ServantHeaderGenerator.cpp \ - ServantSourceGenerator.cpp \ - TypeNameEmitter.cpp \ - cidlc.cpp - -module_base := cidlc -module_prefix := -module_suffix := - -CXX_PREPROCESS_FLAGS += -I$(root) -I$(UTILITY_ROOT) -I$(BOOST_ROOT) - -CXX_LINK_LIBS += -L$(root)/CCF/IDL2 \ - -lIDL2 \ - -L$(root)/CCF/IDL3 \ - -lIDL3 \ - -L$(root)/CCF/CIDL \ - -lCIDL \ - -L$(root)/CCF/CodeGenerationKit \ - -lCodeGenerationKit \ - -L$(root)/CCF/CompilerElements \ - -lCompilerElements \ - -L$(BOOST_ROOT)/lib \ - -lboost_regex \ - -lboost_filesystem - -$(call include, $(UTILITY_ROOT)/BuildRules/Executable.post.rules) diff --git a/TAO/CIAO/CIDLC/RepositoryIdGenerator.cpp b/TAO/CIAO/CIDLC/RepositoryIdGenerator.cpp index 408bca2147c..c7409a67a3a 100644 --- a/TAO/CIAO/CIDLC/RepositoryIdGenerator.cpp +++ b/TAO/CIAO/CIDLC/RepositoryIdGenerator.cpp @@ -41,7 +41,7 @@ namespace ScopedName decl_name (ti->declaration ()); DeclarationTable::IteratorPair iters ( - ti->table ().lookup (decl_name)); + ti->scope ()->table ().lookup (decl_name)); for (; iters.first != iters.second; ++iters.first) { @@ -99,7 +99,7 @@ namespace ScopedName decl_name (tp->declaration ()); DeclarationTable::IteratorPair iters ( - tp->table ().lookup (decl_name)); + tp->scope ()->table ().lookup (decl_name)); for (; iters.first != iters.second; ++iters.first) { @@ -112,7 +112,7 @@ namespace decl->context ().get<TypePrefixPtr> ( StringLiterals::STRS[StringLiterals::TYPE_PREFIX])); - if ((prev->prefix ()) != (tp->prefix ())) + if (prev->prefix () != tp->prefix ()) { //@@ Seems tp should containt filename and line @@ -171,6 +171,6 @@ generate (TranslationUnitPtr const& u) //@@ check errors } - + return true; } diff --git a/TAO/CIAO/CIDLC/ServantGenerator.cpp b/TAO/CIAO/CIDLC/ServantGenerator.cpp index d1e34450c6c..a5cc3dfd50e 100644 --- a/TAO/CIAO/CIDLC/ServantGenerator.cpp +++ b/TAO/CIAO/CIDLC/ServantGenerator.cpp @@ -1,7 +1,4 @@ -// file : CIDLC/ServantGenerator.cpp -// author : Jeff Parsons <j.parsons@vanderbilt.edu> -// cvs-id : $Id$ - +// $Id$ #include "ServantGenerator.hpp" #include "ServantHeaderGenerator.hpp" #include "ServantSourceGenerator.hpp" diff --git a/TAO/CIAO/CIDLC/ServantGenerator.hpp b/TAO/CIAO/CIDLC/ServantGenerator.hpp index f948d89be84..b4de9a024b6 100644 --- a/TAO/CIAO/CIDLC/ServantGenerator.hpp +++ b/TAO/CIAO/CIDLC/ServantGenerator.hpp @@ -1,7 +1,4 @@ -// file : CIDLC/ServantGenerator.hpp -// author : Jeff Parsons <j.parsons@vanderbilt.edu> -// cvs-id : $Id$ - +// $Id$ #ifndef SERVANT_GENERATOR_HPP #define SERVANT_GENERATOR_HPP diff --git a/TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp b/TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp index df369a5141b..96e5e1f9403 100644 --- a/TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp +++ b/TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp @@ -1,11 +1,7 @@ -// file : CIDLC/ServantHeaderGenerator.cpp -// author : Jeff Parsons <j.parsons@vanderbilt.edu> -// cvs-id : $Id$ - +// $Id$ #include "ServantHeaderGenerator.hpp" #include "Literals.hpp" -#include "TypeNameEmitter.hpp" #include "CCF/CodeGenerationKit/Regex.hpp" @@ -31,6 +27,152 @@ namespace namespace { + // Generates the name of an operation's return type. + // + // + class ReturnTypeNameEmitter : public HeaderEmitterBase, + public Traversal::Void, + public Traversal::Boolean, + public Traversal::Long, + public Traversal::String, + public Traversal::LocalInterfaceDecl + { + public: + ReturnTypeNameEmitter (ostream& os_) + : HeaderEmitterBase (os_) + { + } + + virtual void + traverse (VoidPtr const&) + { + os << "void"; + } + + virtual void + traverse (BooleanPtr const&) + { + os << "::CORBA::Boolean"; + } + + virtual void + traverse (LongPtr const&) + { + os << "::CORBA::Long"; + } + + virtual void + traverse (StringPtr const&) + { + os << "char *"; + } + + virtual void + traverse (LocalInterfaceDeclPtr const& i) + { + os << i->name () << "_ptr"; + } + }; + + // Generates the typename of an IN argument. + // + // + class INArgTypeNameEmitter : public HeaderEmitterBase, + public Traversal::Boolean, + public Traversal::Long, + public Traversal::String + { + public: + INArgTypeNameEmitter (ostream& os_) + : HeaderEmitterBase (os_) + { + } + + virtual void + traverse (BooleanPtr const&) + { + os << "::CORBA::Boolean"; + } + + virtual void + traverse (LongPtr const&) + { + os << "::CORBA::Long"; + } + + virtual void + traverse (StringPtr const&) + { + os << "const char *"; + } + }; + + // Generates the typename of an OUT argument. + // + // + class OUTArgTypeNameEmitter : public HeaderEmitterBase, + public Traversal::Boolean, + public Traversal::Long, + public Traversal::String + { + public: + OUTArgTypeNameEmitter (ostream& os_) + : HeaderEmitterBase (os_) + { + } + + virtual void + traverse (BooleanPtr const&) + { + os << "::CORBA::Boolean_out"; + } + + virtual void + traverse (LongPtr const&) + { + os << "::CORBA::Long_out"; + } + + virtual void + traverse (StringPtr const&) + { + os << "::CORBA::String_out"; + } + }; + + // Generates the typename of an INOUT argument. + // + // + class INOUTArgTypeNameEmitter : public HeaderEmitterBase, + public Traversal::Boolean, + public Traversal::Long, + public Traversal::String + { + public: + INOUTArgTypeNameEmitter (ostream& os_) + : HeaderEmitterBase (os_) + { + } + + virtual void + traverse (BooleanPtr const&) + { + os << "::CORBA::Boolean &"; + } + + virtual void + traverse (LongPtr const&) + { + os << "::CORBA::Long &"; + } + + virtual void + traverse (StringPtr const&) + { + os << "char *&"; + } + }; + // Generates parts of the accessor operation for an attribute. // // diff --git a/TAO/CIAO/CIDLC/ServantHeaderGenerator.hpp b/TAO/CIAO/CIDLC/ServantHeaderGenerator.hpp index 31ae0e1ed0d..3cafbc6262b 100644 --- a/TAO/CIAO/CIDLC/ServantHeaderGenerator.hpp +++ b/TAO/CIAO/CIDLC/ServantHeaderGenerator.hpp @@ -1,7 +1,4 @@ -// file : CIDLC/ServantHeaderGenerator.hpp -// author : Jeff Parsons <j.parsons@vanderbilt.edu> -// cvs-id : $Id$ - +// $Id$ #ifndef SERVANT_HEADER_GENERATOR_HPP #define SERVANT_HEADER_GENERATOR_HPP diff --git a/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp b/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp index afcee782c3c..f71e88da7b3 100644 --- a/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp +++ b/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp @@ -1,7 +1,4 @@ -// file : CIDLC/ServantSourceGenerator.cpp -// author : Jeff Parsons <j.parsons@vanderbilt.edu> -// cvs-id : $Id$ - +// $Id$ #include "ServantSourceGenerator.hpp" #include "CCF/CIDL/SyntaxTree.hpp" @@ -10,7 +7,6 @@ #include "CCF/CodeGenerationKit/Regex.hpp" #include "Literals.hpp" -#include "TypeNameEmitter.hpp" #include <ostream> #include <sstream> @@ -38,6 +34,152 @@ namespace return os.str (); } + // Generates the name of an operation's return type. + // + // + class ReturnTypeNameEmitter : public SourceEmitterBase, + public Traversal::Void, + public Traversal::Boolean, + public Traversal::Long, + public Traversal::String, + public Traversal::LocalInterfaceDecl + { + public: + ReturnTypeNameEmitter (ostream& os_) + : SourceEmitterBase (os_) + { + } + + virtual void + traverse (VoidPtr const&) + { + os << "void"; + } + + virtual void + traverse (BooleanPtr const&) + { + os << "::CORBA::Boolean"; + } + + virtual void + traverse (LongPtr const&) + { + os << "::CORBA::Long"; + } + + virtual void + traverse (StringPtr const&) + { + os << "char *"; + } + + virtual void + traverse (LocalInterfaceDeclPtr const& i) + { + os << i->name () << "_ptr"; + } + }; + + // Generates the typename of an IN argument. + // + // + class INArgTypeNameEmitter : public SourceEmitterBase, + public Traversal::Boolean, + public Traversal::Long, + public Traversal::String + { + public: + INArgTypeNameEmitter (ostream& os_) + : SourceEmitterBase (os_) + { + } + + virtual void + traverse (BooleanPtr const&) + { + os << "::CORBA::Boolean"; + } + + virtual void + traverse (LongPtr const&) + { + os << "::CORBA::Long"; + } + + virtual void + traverse (StringPtr const&) + { + os << "const char *"; + } + }; + + // Generates the typename of an OUT argument. + // + // + class OUTArgTypeNameEmitter : public SourceEmitterBase, + public Traversal::Boolean, + public Traversal::Long, + public Traversal::String + { + public: + OUTArgTypeNameEmitter (ostream& os_) + : SourceEmitterBase (os_) + { + } + + virtual void + traverse (BooleanPtr const&) + { + os << "::CORBA::Boolean_out"; + } + + virtual void + traverse (LongPtr const&) + { + os << "::CORBA::Long_out"; + } + + virtual void + traverse (StringPtr const&) + { + os << "::CORBA::String_out"; + } + }; + + // Generates the typename of an INOUT argument. + // + // + class INOUTArgTypeNameEmitter : public SourceEmitterBase, + public Traversal::Boolean, + public Traversal::Long, + public Traversal::String + { + public: + INOUTArgTypeNameEmitter (ostream& os_) + : SourceEmitterBase (os_) + { + } + + virtual void + traverse (BooleanPtr const&) + { + os << "::CORBA::Boolean &"; + } + + virtual void + traverse (LongPtr const&) + { + os << "::CORBA::Long &"; + } + + virtual void + traverse (StringPtr const&) + { + os << "char *&"; + } + }; + // Generates an argument's identifier. // // @@ -2550,7 +2692,7 @@ ServantSourceEmitter::generate (TranslationUnitPtr const& u) component.add_scope_delegate (&publishes_emitter); Traversal::FileScope fs; - NamespaceEmitter m (os, declarations_); + NamespaceEmitter m (os, declarations_);; fs.add_scope_delegate (&m); diff --git a/TAO/CIAO/CIDLC/ServantSourceGenerator.hpp b/TAO/CIAO/CIDLC/ServantSourceGenerator.hpp index 385a5ceb331..a88ad27bcec 100644 --- a/TAO/CIAO/CIDLC/ServantSourceGenerator.hpp +++ b/TAO/CIAO/CIDLC/ServantSourceGenerator.hpp @@ -1,7 +1,4 @@ -// file : CIDLC/ServantSourceGenerator.hpp -// author : Jeff Parsons <j.parsons@vanderbilt.edu> -// cvs-id : $Id$ - +// $Id$ #ifndef SERVANT_SOURCE_GENERATOR_HPP #define SERVANT_SOURCE_GENERATOR_HPP diff --git a/TAO/CIAO/CIDLC/TypeNameEmitter.cpp b/TAO/CIAO/CIDLC/TypeNameEmitter.cpp deleted file mode 100644 index ac742eb11b0..00000000000 --- a/TAO/CIAO/CIDLC/TypeNameEmitter.cpp +++ /dev/null @@ -1,464 +0,0 @@ -// file : CIDLC/TypeNameEmitter.cpp -// author : Jeff Parsons <j.parsons@vanderbilt.edu> -// cvs-id : $Id$ - -#include "TypeNameEmitter.hpp" - -#include <ostream> - -using namespace std; - -TypeNameEmitter::TypeNameEmitter (ostream& os_) - : os (os_) -{ -} - -// ==================================================================== - -ReturnTypeNameEmitter::ReturnTypeNameEmitter (ostream& os_) - : TypeNameEmitter (os_) -{ -} - -void -ReturnTypeNameEmitter::traverse (VoidPtr const&) -{ - os << "void"; -} - -void -ReturnTypeNameEmitter::traverse (BooleanPtr const&) -{ - os << "::CORBA::Boolean"; -} - -void -ReturnTypeNameEmitter::traverse (OctetPtr const&) -{ - os << "::CORBA::Octet"; -} - -void -ReturnTypeNameEmitter::traverse (CharPtr const&) -{ - os << "::CORBA::Char"; -} - -void -ReturnTypeNameEmitter::traverse (WcharPtr const&) -{ - os << "::CORBA::WChar"; -} - -void -ReturnTypeNameEmitter::traverse (ShortPtr const&) -{ - os << "::CORBA::Short"; -} - -void -ReturnTypeNameEmitter::traverse (UnsignedShortPtr const&) -{ - os << "::CORBA::UShort"; -} - -void -ReturnTypeNameEmitter::traverse (LongPtr const&) -{ - os << "::CORBA::Long"; -} - -void -ReturnTypeNameEmitter::traverse (UnsignedLongPtr const&) -{ - os << "::CORBA::ULong"; -} - -void -ReturnTypeNameEmitter::traverse (LongLongPtr const&) -{ - os << "::CORBA::LongLong"; -} - -void -ReturnTypeNameEmitter::traverse (UnsignedLongLongPtr const&) -{ - os << "::CORBA::ULongLong"; -} - -void -ReturnTypeNameEmitter::traverse (FloatPtr const&) -{ - os << "::CORBA::Float"; -} - -void -ReturnTypeNameEmitter::traverse (DoublePtr const&) -{ - os << "::CORBA::Double"; -} - -void -ReturnTypeNameEmitter::traverse (StringPtr const&) -{ - os << "char *"; -} - -void -ReturnTypeNameEmitter::traverse (WstringPtr const&) -{ - os << "::CORBA::WChar *"; -} - -void -ReturnTypeNameEmitter::traverse (ObjectPtr const&) -{ - os << "::CORBA::Object_ptr"; -} - -void -ReturnTypeNameEmitter::traverse (ValueBasePtr const&) -{ - os << "::CORBA::ValueBase *"; -} - -void -ReturnTypeNameEmitter::traverse (AnyPtr const&) -{ - os << "::CORBA::Any *"; -} - -void -ReturnTypeNameEmitter::traverse (LocalInterfaceDeclPtr const& i) -{ - os << i->name () << "_ptr"; -} - -// =============================================================== - -INArgTypeNameEmitter::INArgTypeNameEmitter (ostream& os_) - : TypeNameEmitter (os_) -{ -} - -void -INArgTypeNameEmitter::traverse (BooleanPtr const&) -{ - os << "::CORBA::Boolean"; -} - -void -INArgTypeNameEmitter::traverse (OctetPtr const&) -{ - os << "::CORBA::Octet"; -} - -void -INArgTypeNameEmitter::traverse (CharPtr const&) -{ - os << "::CORBA::Char"; -} - -void -INArgTypeNameEmitter::traverse (WcharPtr const&) -{ - os << "::CORBA::WChar"; -} - -void -INArgTypeNameEmitter::traverse (ShortPtr const&) -{ - os << "::CORBA::Short"; -} - -void -INArgTypeNameEmitter::traverse (UnsignedShortPtr const&) -{ - os << "::CORBA::UShort"; -} - -void -INArgTypeNameEmitter::traverse (LongPtr const&) -{ - os << "::CORBA::Long"; -} - -void -INArgTypeNameEmitter::traverse (UnsignedLongPtr const&) -{ - os << "::CORBA::ULong"; -} - -void -INArgTypeNameEmitter::traverse (LongLongPtr const&) -{ - os << "::CORBA::LongLong"; -} - -void -INArgTypeNameEmitter::traverse (UnsignedLongLongPtr const&) -{ - os << "::CORBA::ULongLong"; -} - -void -INArgTypeNameEmitter::traverse (FloatPtr const&) -{ - os << "::CORBA::Float"; -} - -void -INArgTypeNameEmitter::traverse (DoublePtr const&) -{ - os << "::CORBA::Double"; -} - -void -INArgTypeNameEmitter::traverse (StringPtr const&) -{ - os << "const char *"; -} - -void -INArgTypeNameEmitter::traverse (WstringPtr const&) -{ - os << "const ::CORBA::WChar *"; -} - -void -INArgTypeNameEmitter::traverse (ObjectPtr const&) -{ - os << "::CORBA::Object_ptr"; -} - -void -INArgTypeNameEmitter::traverse (ValueBasePtr const&) -{ - os << "::CORBA::ValueBase *"; -} - -void -INArgTypeNameEmitter::traverse (AnyPtr const&) -{ - os << "const ::CORBA::Any &"; -} - -// =============================================================== - -INOUTArgTypeNameEmitter::INOUTArgTypeNameEmitter (ostream& os_) - : TypeNameEmitter (os_) -{ -} - -void -INOUTArgTypeNameEmitter::traverse (BooleanPtr const&) -{ - os << "::CORBA::Boolean &"; -} - -void -INOUTArgTypeNameEmitter::traverse (OctetPtr const&) -{ - os << "::CORBA::Octet &"; -} - -void -INOUTArgTypeNameEmitter::traverse (CharPtr const&) -{ - os << "::CORBA::Char &"; -} - -void -INOUTArgTypeNameEmitter::traverse (WcharPtr const&) -{ - os << "::CORBA::WChar &"; -} - -void -INOUTArgTypeNameEmitter::traverse (ShortPtr const&) -{ - os << "::CORBA::Short &"; -} - -void -INOUTArgTypeNameEmitter::traverse (UnsignedShortPtr const&) -{ - os << "::CORBA::UShort &"; -} - -void -INOUTArgTypeNameEmitter::traverse (LongPtr const&) -{ - os << "::CORBA::Long &"; -} - -void -INOUTArgTypeNameEmitter::traverse (UnsignedLongPtr const&) -{ - os << "::CORBA::ULong &"; -} - -void -INOUTArgTypeNameEmitter::traverse (LongLongPtr const&) -{ - os << "::CORBA::LongLong &"; -} - -void -INOUTArgTypeNameEmitter::traverse (UnsignedLongLongPtr const&) -{ - os << "::CORBA::ULongLong &"; -} - -void -INOUTArgTypeNameEmitter::traverse (FloatPtr const&) -{ - os << "::CORBA::Float &"; -} - -void -INOUTArgTypeNameEmitter::traverse (DoublePtr const&) -{ - os << "::CORBA::Double &"; -} - -void -INOUTArgTypeNameEmitter::traverse (StringPtr const&) -{ - os << "char *&"; -} - -void -INOUTArgTypeNameEmitter::traverse (WstringPtr const&) -{ - os << "::CORBA::WChar *&"; -} - -void -INOUTArgTypeNameEmitter::traverse (ObjectPtr const&) -{ - os << "::CORBA::Object_ptr &"; -} - -void -INOUTArgTypeNameEmitter::traverse (ValueBasePtr const&) -{ - os << "::CORBA::ValueBase *&"; -} - -void -INOUTArgTypeNameEmitter::traverse (AnyPtr const&) -{ - os << "::CORBA::Any &"; -} - -// ================================================================= - -OUTArgTypeNameEmitter::OUTArgTypeNameEmitter (ostream& os_) - : TypeNameEmitter (os_) -{ -} - -void -OUTArgTypeNameEmitter::traverse (BooleanPtr const&) -{ - os << "::CORBA::Boolean_out"; -} - -void -OUTArgTypeNameEmitter::traverse (OctetPtr const&) -{ - os << "::CORBA::Octet_out"; -} - -void -OUTArgTypeNameEmitter::traverse (CharPtr const&) -{ - os << "::CORBA::Char_out"; -} - -void -OUTArgTypeNameEmitter::traverse (WcharPtr const&) -{ - os << "::CORBA::WChar_out"; -} - -void -OUTArgTypeNameEmitter::traverse (ShortPtr const&) -{ - os << "::CORBA::Short_out"; -} - -void -OUTArgTypeNameEmitter::traverse (UnsignedShortPtr const&) -{ - os << "::CORBA::UShort_out"; -} - -void -OUTArgTypeNameEmitter::traverse (LongPtr const&) -{ - os << "::CORBA::Long_out"; -} - -void -OUTArgTypeNameEmitter::traverse (UnsignedLongPtr const&) -{ - os << "::CORBA::ULong_out"; -} - -void -OUTArgTypeNameEmitter::traverse (LongLongPtr const&) -{ - os << "::CORBA::LongLong_out"; -} - -void -OUTArgTypeNameEmitter::traverse (UnsignedLongLongPtr const&) -{ - os << "::CORBA::ULongLong_out"; -} - -void -OUTArgTypeNameEmitter::traverse (FloatPtr const&) -{ - os << "::CORBA::Float_out"; -} - -void -OUTArgTypeNameEmitter::traverse (DoublePtr const&) -{ - os << "::CORBA::Double_out"; -} - -void -OUTArgTypeNameEmitter::traverse (StringPtr const&) -{ - os << "::CORBA::String_out"; -} - -void -OUTArgTypeNameEmitter::traverse (WstringPtr const&) -{ - os << "::CORBA::WString_out"; -} - -void -OUTArgTypeNameEmitter::traverse (ObjectPtr const&) -{ - os << "::CORBA::Object_out"; -} - -void -OUTArgTypeNameEmitter::traverse (ValueBasePtr const&) -{ - os << "::CORBA::ValueBase_out"; -} - -void -OUTArgTypeNameEmitter::traverse (AnyPtr const&) -{ - os << "::CORBA::Any_out"; -} - - diff --git a/TAO/CIAO/CIDLC/TypeNameEmitter.hpp b/TAO/CIAO/CIDLC/TypeNameEmitter.hpp deleted file mode 100644 index 6e0eae77e2a..00000000000 --- a/TAO/CIAO/CIDLC/TypeNameEmitter.hpp +++ /dev/null @@ -1,155 +0,0 @@ -// file : CIDLC/TypeNameEmitter.hpp -// author : Jeff Parsons <j.parsons@vanderbilt.edu> -// cvs-id : $Id$ - -#ifndef TYPENAME_EMITTER_HPP -#define TYPENAME_EMITTER_HPP - -#include "CCF/CIDL/Traversal.hpp" - -using namespace CCF; -using namespace CIDL; -using namespace SyntaxTree; - -// Base class that holds the ostream member -// common to every other class in this file, -// and collects the ancestors in one place. -// -class TypeNameEmitter : public Traversal::Void, - public Traversal::Boolean, - public Traversal::Octet, - public Traversal::Char, - public Traversal::Wchar, - public Traversal::Short, - public Traversal::UnsignedShort, - public Traversal::Long, - public Traversal::UnsignedLong, - public Traversal::LongLong, - public Traversal::UnsignedLongLong, - public Traversal::Float, - public Traversal::Double, - public Traversal::String, - public Traversal::Wstring, - public Traversal::Object, - public Traversal::ValueBase, - public Traversal::Any, - public Traversal::LocalInterfaceDecl -{ -protected: - TypeNameEmitter (std::ostream&); - - std::ostream& os; -}; - -// Generates the name of an operation's return type. -// -// -class ReturnTypeNameEmitter : public TypeNameEmitter -{ -public: - ReturnTypeNameEmitter (std::ostream&); - - virtual void traverse (VoidPtr const&); - virtual void traverse (BooleanPtr const&); - virtual void traverse (OctetPtr const&); - virtual void traverse (CharPtr const&); - virtual void traverse (WcharPtr const&); - virtual void traverse (ShortPtr const&); - virtual void traverse (UnsignedShortPtr const&); - virtual void traverse (LongPtr const&); - virtual void traverse (UnsignedLongPtr const&); - virtual void traverse (LongLongPtr const&); - virtual void traverse (UnsignedLongLongPtr const&); - virtual void traverse (FloatPtr const&); - virtual void traverse (DoublePtr const&); - virtual void traverse (StringPtr const&); - virtual void traverse (WstringPtr const&); - virtual void traverse (ObjectPtr const&); - virtual void traverse (ValueBasePtr const&); - virtual void traverse (AnyPtr const&); - virtual void traverse (LocalInterfaceDeclPtr const&); -}; - -// Generates the typename of an IN argument. -// -// -class INArgTypeNameEmitter : public TypeNameEmitter -{ -public: - INArgTypeNameEmitter (std::ostream&); - - virtual void traverse (BooleanPtr const&); - virtual void traverse (OctetPtr const&); - virtual void traverse (CharPtr const&); - virtual void traverse (WcharPtr const&); - virtual void traverse (ShortPtr const&); - virtual void traverse (UnsignedShortPtr const&); - virtual void traverse (LongPtr const&); - virtual void traverse (UnsignedLongPtr const&); - virtual void traverse (LongLongPtr const&); - virtual void traverse (UnsignedLongLongPtr const&); - virtual void traverse (FloatPtr const&); - virtual void traverse (DoublePtr const&); - virtual void traverse (StringPtr const&); - virtual void traverse (WstringPtr const&); - virtual void traverse (ObjectPtr const&); - virtual void traverse (ValueBasePtr const&); - virtual void traverse (AnyPtr const&); -}; - -// Generates the typename of an INOUT argument. -// -// -class INOUTArgTypeNameEmitter : public TypeNameEmitter -{ -public: - INOUTArgTypeNameEmitter (std::ostream&); - - virtual void traverse (BooleanPtr const&); - virtual void traverse (OctetPtr const&); - virtual void traverse (CharPtr const&); - virtual void traverse (WcharPtr const&); - virtual void traverse (ShortPtr const&); - virtual void traverse (UnsignedShortPtr const&); - virtual void traverse (LongPtr const&); - virtual void traverse (UnsignedLongPtr const&); - virtual void traverse (LongLongPtr const&); - virtual void traverse (UnsignedLongLongPtr const&); - virtual void traverse (FloatPtr const&); - virtual void traverse (DoublePtr const&); - virtual void traverse (StringPtr const&); - virtual void traverse (WstringPtr const&); - virtual void traverse (ObjectPtr const&); - virtual void traverse (ValueBasePtr const&); - virtual void traverse (AnyPtr const&); -}; - -// Generates the typename of an OUT argument. -// -// -class OUTArgTypeNameEmitter : public TypeNameEmitter -{ -public: - OUTArgTypeNameEmitter (std::ostream&); - - virtual void traverse (BooleanPtr const&); - virtual void traverse (OctetPtr const&); - virtual void traverse (CharPtr const&); - virtual void traverse (WcharPtr const&); - virtual void traverse (ShortPtr const&); - virtual void traverse (UnsignedShortPtr const&); - virtual void traverse (LongPtr const&); - virtual void traverse (UnsignedLongPtr const&); - virtual void traverse (LongLongPtr const&); - virtual void traverse (UnsignedLongLongPtr const&); - virtual void traverse (FloatPtr const&); - virtual void traverse (DoublePtr const&); - virtual void traverse (StringPtr const&); - virtual void traverse (WstringPtr const&); - virtual void traverse (ObjectPtr const&); - virtual void traverse (ValueBasePtr const&); - virtual void traverse (AnyPtr const&); -}; - -#endif /* TYPENAME_EMITTER_HPP */ - diff --git a/TAO/CIAO/ChangeLog b/TAO/CIAO/ChangeLog index 111dbea9b5e..b42220ab247 100644 --- a/TAO/CIAO/ChangeLog +++ b/TAO/CIAO/ChangeLog @@ -1,173 +1,3 @@ -Tue Oct 14 22:44:43 2003 Nanbor Wang <nanbor@cs.wustl.edu> - - * examples/handcrafted/Hello/simple_client.cpp: - * examples/handcrafted/Hello/client.cpp: Added the missing streams - header file. - -Tue Oct 14 17:18:43 2003 Boris Kolpackov <boris@dre.vanderbilt.edu> - - * CIDLC/Makefile.alt: added alternative (to mpc) means of - building CIDL compiler. - -Tue Oct 14 16:57:54 2003 Boris Kolpackov <boris@dre.vanderbilt.edu> - - * CIDLC/ExecutorMappingGenerator.cpp: - * CIDLC/RepositoryIdGenerator.cpp: some minor clean-up's. - -Tue Oct 14 16:41:41 2003 Boris Kolpackov <boris@dre.vanderbilt.edu> - - * CCF/IDL2/LexicalAnalyzer.cpp: - * CCF/IDL2/Makefile.archive: - * CCF/IDL2/Parser.cpp: - * CCF/IDL2/Parser.hpp: - * CCF/IDL2/SemanticAction.hpp: - * CCF/IDL2/SyntaxTree.hpp: - * CCF/IDL2/Traversal.hpp: - * CCF/IDL2/SemanticAction/Factory.hpp: - * CCF/IDL2/SemanticAction/Typedef.hpp: - * CCF/IDL2/SemanticAction/Impl/Factory.hpp: - * CCF/IDL2/SemanticAction/Impl/Interface.hpp: - * CCF/IDL2/SemanticAction/Impl/Typedef.cpp: - * CCF/IDL2/SemanticAction/Impl/Typedef.hpp: - * CCF/IDL2/SyntaxTree/BuiltIn.hpp: - * CCF/IDL2/SyntaxTree/BuiltIn.hpp.m4: - * CCF/IDL2/SyntaxTree/Elements.cpp: - * CCF/IDL2/SyntaxTree/Elements.hpp: - * CCF/IDL2/SyntaxTree/Elements.tpp: - * CCF/IDL2/SyntaxTree/Interface.hpp: - * CCF/IDL2/SyntaxTree/Makefile.alt: - * CCF/IDL2/SyntaxTree/Module.hpp: - * CCF/IDL2/SyntaxTree/Operation.hpp: - * CCF/IDL2/SyntaxTree/Translation.cpp: - * CCF/IDL2/SyntaxTree/Translation.hpp: - * CCF/IDL2/SyntaxTree/TypeId.cpp: - * CCF/IDL2/SyntaxTree/Typedef.cpp: - * CCF/IDL2/SyntaxTree/Typedef.hpp: - * CCF/IDL2/SyntaxTree/ValueType.hpp: - * CCF/IDL2/Traversal/BuiltIn.hpp: - * CCF/IDL2/Traversal/BuiltIn.hpp.m4: - * CCF/IDL2/Traversal/Elements.cpp: - * CCF/IDL2/Traversal/Elements.hpp: - * CCF/IDL2/Traversal/Interface.hpp: - * CCF/IDL2/Traversal/Module.hpp: - * CCF/IDL2/Traversal/Operation.hpp: - * CCF/IDL2/Traversal/Translation.hpp: - * CCF/IDL2/Traversal/TypeId.hpp: - * CCF/IDL2/Traversal/Typedef.cpp: - * CCF/IDL2/Traversal/Typedef.hpp: - * CCF/IDL3/SyntaxTree/Component.hpp: - * CCF/IDL3/SyntaxTree/EventType.hpp: - * CCF/IDL3/SyntaxTree/Home.hpp: - * CCF/IDL3/SyntaxTree/Operation.hpp: - * CCF/IDL3/Traversal/Component.hpp: - * CCF/IDL3/Traversal/EventType.hpp: - * CCF/IDL3/Traversal/Home.hpp: - * CCF/IDL3/Traversal/Operation.hpp: - * CCF/CIDL/SyntaxTree/Composition.hpp: - * CCF/CIDL/SyntaxTree/HomeExecutor.hpp: - * CCF/CIDL/Traversal/Composition.hpp: - * CCF/CIDL/Traversal/HomeExecutor.hpp: First part of - typedef-related infrastructure. - - * CCF/CodeGenerationKit/IndentationIDL.hpp: - * CCF/CompilerElements/Preprocessor.hpp: - * Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp: - * Example/CIDL/LocalExecutorMapping/cidlc.cpp: - * Example/CIDL/LocalExecutorMapping/test-0.idl: some minor - clean-up's. - - * Documentation/TODO: added a few more items. - -Tue Oct 14 00:54:10 2003 Nanbor Wang <nanbor@cs.wustl.edu> - - * performance-tests/Benchmark/RoundTrip/svc.conf: - Changed to load Advanced_Resource_Factory dynamically. - - * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc: - * performance-tests/Benchmark/RoundTripServer/LatencyTest.h: - * performance-tests/Benchmark/RoundTripServer/server.cpp: - Changed to implement the Benchmark::Latency_Test interface - instead of the Latency_Test interface. Otherwise, we won't be - able to connect the interface to a receptacle expecting another - interface type. - -Tue Oct 14 00:54:10 2003 Nanbor Wang <nanbor@cs.wustl.edu> - - * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp: - Fixed a minor compilation problem. - - * performance-tests/Benchmark/descriptors/Test-ior.cad: - * performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl: - * performance-tests/Benchmark/RoundTripServer/server.cpp: - - Changed to output IOR to a fixed file named "rtserver.ior" and - refer to the object as file://rtserver.ior in the cad file - -Mon Oct 13 23:41:10 2003 Nanbor Wang <nanbor@cs.wustl.edu> - - * examples/handcrafted/Display/RateGen/controller.cpp: - * examples/handcrafted/Display/RateGen/client.cpp: Added inclusion - of "ace/streams.h" to make them compile. - -Mon Oct 13 22:31:10 2003 Nanbor Wang <nanbor@cs.wustl.edu> - - * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.cpp: - Fixed a fuzz warning. - -Mon Oct 13 16:49:00 2003 Venkita Subramonian <venkita@cs.wustl.edu> - - * tools/RTComponentServer/RTConfig_Manager.h: - * tools/RTComponentServer/ComponentServer_Task.h: - Added /**/ to fix Fuzz errors. - -Sun Oct 12 20:44:41 2003 Jeff Parsons <j.parsons@vanderbilt.edu> - - * CIDLC/Collectors.hpp: - * CIDLC/DescriptorGenerator.cpp: - * CIDLC/DescriptorGenerator.hpp: - * CIDLC/ExecutorMappingGenerator.cpp: - * CIDLC/ExecutorMappingGenerator.hpp: - * CIDLC/Literals.hpp: - * CIDLC/ServantGenerator.cpp: - * CIDLC/ServantGenerator.hpp: - * CIDLC/ServantHeaderGenerator.cpp: - * CIDLC/ServantHeaderGenerator.hpp: - * CIDLC/ServantSourceGenerator.cpp: - * CIDLC/ServantSourceGenerator.hpp: - - Changed top of files to match the - title/author/cvs id format for all other - CCF and CIDLC files. - - * CIDLC/TypeNameEmitter.cpp: - * CIDLC/TypeNameEmitter.hpp: - - New files, adding support for all basic IDL - types, and factoring out the typename emitter - classes for operation return types and parameters - into a separate translation unit, to eliminate - the duplication in ServantHeaderGenerator.cpp and - ServantSourceGenerator.cpp. - - * CIDLC/cidlc.mpc: - * CIDLC/CIDLC.vcproj: - - Updated with the new files above. - -Sun Oct 12 18:36:16 2003 Arvind S. Krishna <arvindk@dre.vanderbilt.edu> - - * performance-tests/Benchmark/Benchmark.mpc: - * performance-tests/Benchmark/Benchmark.idl: - * performance-tests/Benchmark/server.cpp: - * performance-tests/Benchmark/svc.conf: - * performance-tests/Benchmark/LatencyTest.h: - * performance-tests/Benchmark/LatencyTest.cpp: - * performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl: - * performance-tests/Benchmark/RoundTripClient/client.cpp: - * performance-tests/Benchmark/RoundTrip/RoundTrip.idl: - Added test scenario in which a CORBA component interacts with - a CORBA server. - Sat Oct 11 00:18:13 2003 Nanbor Wang <nanbor@cs.wustl.edu> * bin/generate_component_mpc.pl: My previous change didn't diff --git a/TAO/CIAO/examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.cpp b/TAO/CIAO/examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.cpp index 48e13f06e03..0341654a273 100644 --- a/TAO/CIAO/examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.cpp +++ b/TAO/CIAO/examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.cpp @@ -2,7 +2,7 @@ //============================================================== /** - * @file RTEventService_exec.cpp + * @file RTEventService_exec.h * * Source file for the actual RTEventService and RTEventServiceHome * component implementations. diff --git a/TAO/CIAO/examples/handcrafted/Display/RateGen/client.cpp b/TAO/CIAO/examples/handcrafted/Display/RateGen/client.cpp index 27523ecbde1..1e894f82d81 100644 --- a/TAO/CIAO/examples/handcrafted/Display/RateGen/client.cpp +++ b/TAO/CIAO/examples/handcrafted/Display/RateGen/client.cpp @@ -10,7 +10,6 @@ */ #include "RateGenC.h" -#include "ace/streams.h" int main (int argc, char *argv[]) diff --git a/TAO/CIAO/examples/handcrafted/Display/RateGen/controller.cpp b/TAO/CIAO/examples/handcrafted/Display/RateGen/controller.cpp index 95f566ac95c..b681531fc53 100644 --- a/TAO/CIAO/examples/handcrafted/Display/RateGen/controller.cpp +++ b/TAO/CIAO/examples/handcrafted/Display/RateGen/controller.cpp @@ -2,7 +2,6 @@ #include "RateGenC.h" #include "ace/Get_Opt.h" -#include "ace/streams.h" /** * @file controller.cpp diff --git a/TAO/CIAO/examples/handcrafted/Hello/CIAO_Installation_Data.ini b/TAO/CIAO/examples/handcrafted/Hello/CIAO_Installation_Data.ini index 30e49defa84..7eb0600bad5 100644 --- a/TAO/CIAO/examples/handcrafted/Hello/CIAO_Installation_Data.ini +++ b/TAO/CIAO/examples/handcrafted/Hello/CIAO_Installation_Data.ini @@ -1,3 +1,3 @@ [ComponentInstallation] -DCE:05833d92-4783-4b85-ac14-e2575dac26f7=hello_servants DCE:530a6305-8181-47ca-bd82-0b834016db97=hello_executors +DCE:05833d92-4783-4b85-ac14-e2575dac26f7=hello_servants diff --git a/TAO/CIAO/examples/handcrafted/Hello/client.cpp b/TAO/CIAO/examples/handcrafted/Hello/client.cpp index df7497cd9b9..b85cfda64e5 100644 --- a/TAO/CIAO/examples/handcrafted/Hello/client.cpp +++ b/TAO/CIAO/examples/handcrafted/Hello/client.cpp @@ -2,7 +2,6 @@ #include "helloC.h" #include "ace/Read_Buffer.h" -#include "ace/streams.h" int invoke (CORBA::Object_ptr obj, diff --git a/TAO/CIAO/examples/handcrafted/Hello/simple_client.cpp b/TAO/CIAO/examples/handcrafted/Hello/simple_client.cpp index 89fde740942..39f74cf1f01 100644 --- a/TAO/CIAO/examples/handcrafted/Hello/simple_client.cpp +++ b/TAO/CIAO/examples/handcrafted/Hello/simple_client.cpp @@ -4,7 +4,6 @@ #include "ace/Get_Opt.h" #include "ace/Read_Buffer.h" #include "helloC.h" -#include "ace/streams.h" char *ior = 0; int shutdown_server = 0; diff --git a/TAO/CIAO/performance-tests/Benchmark/Benchmark.idl b/TAO/CIAO/performance-tests/Benchmark/Benchmark.idl index d363628c891..867feff4407 100644 --- a/TAO/CIAO/performance-tests/Benchmark/Benchmark.idl +++ b/TAO/CIAO/performance-tests/Benchmark/Benchmark.idl @@ -12,6 +12,7 @@ #ifndef CIAO_BENCHMARK_IDL #define CIAO_BENCHMARK_IDL +#include <Components.idl> module Benchmark { diff --git a/TAO/CIAO/performance-tests/Benchmark/Benchmark.mpc b/TAO/CIAO/performance-tests/Benchmark/Benchmark.mpc index 7d324b28f91..278ca63d665 100644 --- a/TAO/CIAO/performance-tests/Benchmark/Benchmark.mpc +++ b/TAO/CIAO/performance-tests/Benchmark/Benchmark.mpc @@ -27,10 +27,3 @@ project(Benchmark_svnt) : ciao_server { BenchmarkS.cpp } } - -project (server) : taoserver, strategies { - Source_Files { - server.cpp - LatencyTest.cpp - } -} diff --git a/TAO/CIAO/performance-tests/Benchmark/LatencyTest.cpp b/TAO/CIAO/performance-tests/Benchmark/LatencyTest.cpp deleted file mode 100644 index fd92c9e99fd..00000000000 --- a/TAO/CIAO/performance-tests/Benchmark/LatencyTest.cpp +++ /dev/null @@ -1,25 +0,0 @@ -// -// $Id$ -// -#include "LatencyTest.h" - -LatencyTest::LatencyTest (CORBA::ORB_ptr orb) - : orb_ (CORBA::ORB::_duplicate (orb)) -{ -} - - -CORBA::Long -LatencyTest::makeCall (CORBA::Long send_time - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - return send_time; -} - -void -LatencyTest::shutdown (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER); -} diff --git a/TAO/CIAO/performance-tests/Benchmark/LatencyTest.h b/TAO/CIAO/performance-tests/Benchmark/LatencyTest.h deleted file mode 100644 index 54e48eff66b..00000000000 --- a/TAO/CIAO/performance-tests/Benchmark/LatencyTest.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// $Id$ -// - -#ifndef LATENCYTEST_H -#define LATENCYTEST_H -#include /**/ "ace/pre.h" - -#include "BenchmarkS.h" - -#if defined (_MSC_VER) -# if (_MSC_VER >= 1200) -# pragma warning(push) -# endif /* _MSC_VER >= 1200 */ -# pragma warning (disable:4250) -#endif /* _MSC_VER */ - -/// Implement the Test::LatencyTest interface -class LatencyTest -: public virtual POA_Benchmark::LatencyTest, - public virtual PortableServer::RefCountServantBase -{ - public: - /// Constructor - LatencyTest (CORBA::ORB_ptr orb); - - // = The skeleton methods - virtual CORBA::Long makeCall (CORBA::Long send_time - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - - private: - /// Use an ORB reference to conver strings to objects and shutdown - /// the application. - CORBA::ORB_var orb_; -}; - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma warning(pop) -#endif /* _MSC_VER */ - -#include /**/ "ace/post.h" -#endif /* LATENCYTEST_H */ diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.idl b/TAO/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.idl index 73a00422297..4d0dfe1f292 100644 --- a/TAO/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.idl +++ b/TAO/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.idl @@ -12,7 +12,6 @@ #define CIAO_ROUNDTRIP_IDL #include "../Benchmark.idl" -#include <Components.idl> module Benchmark { diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTrip/svc.conf b/TAO/CIAO/performance-tests/Benchmark/RoundTrip/svc.conf index e1706aae4e5..7b8129f5667 100644 --- a/TAO/CIAO/performance-tests/Benchmark/RoundTrip/svc.conf +++ b/TAO/CIAO/performance-tests/Benchmark/RoundTrip/svc.conf @@ -1,6 +1,6 @@ # # $Id$ # -dynamic Advanced_Resource_Factory Service_Object * TAO_Strategies:_make_TAO_Advanced_Resource_Factory () "-ORBReactorMaskSignals 0 -ORBInputCDRAllocator null -ORBReactorType select_st -ORBConnectionCacheLock null" +static Advanced_Resource_Factory "-ORBReactorMaskSignals 0 -ORBInputCDRAllocator null -ORBReactorType select_st -ORBConnectionCacheLock null" static Server_Strategy_Factory "-ORBPOALock null -ORBAllowReactivationOfSystemids 0" static Client_Strategy_Factory "-ORBTransportMuxStrategy EXCLUSIVE -ORBProfileLock null -ORBClientConnectionHandler RW" diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl index 396da6e5e7f..8d06c94ecf1 100644 --- a/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl +++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl @@ -11,7 +11,6 @@ #ifndef CIAO_ROUNDTRIPCLIENT_IDL #define CIAO_ROUNDTRIPCLIENT_IDL -#include <Components.idl> #include "../Benchmark.idl" module Benchmark diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc index 90c2bb71eac..98bac8ebcbf 100644 --- a/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc +++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc @@ -59,7 +59,8 @@ project(RoundTripClient_exec) : ciao_component { } -project (*client) : ciao_client { + +project (RoundTripClient_client) : ciao_client, valuetype { exename = client after += RoundTripClient_stub libs += RoundTripClient_stub Benchmark_stub @@ -74,7 +75,7 @@ project (*client) : ciao_client { } -//project (RoundTripClient_controller) : ciao_client { +//project (RoundTripClient_controller) : ciao_client, valuetype { // exename = controller // after += RoundTripClient_stub // libs += RoundTripClient_stub Benchmark_stub @@ -87,3 +88,4 @@ project (*client) : ciao_client { // controller.cpp // } //} + diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp index 24fba631f87..c4f6c586c06 100644 --- a/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp +++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp @@ -66,8 +66,7 @@ MyImpl::RoundTripClient_exec_i::start () CORBA::Long test_data = 0L; //Warm up the system - int i = 0; - for (i=0; i < 100; i++) + for (int i=0; i < 100; i++) lt->makeCall (test_data); ACE_DEBUG ((LM_DEBUG, "MyImpl::start: warmed up the system\n")); diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/client.cpp b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/client.cpp index a5a8a3b02cb..85bf2e1d370 100644 --- a/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/client.cpp +++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/client.cpp @@ -30,6 +30,19 @@ main (int argc, char *argv[]) CORBA::Object_var obj = orb->string_to_object (ior ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; +/* + Benchmark::RoundTripClientHome_var home + = Benchmark::RoundTripClientHome::_narrow (obj.in () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (CORBA::is_nil (home.in ())) + ACE_ERROR_RETURN ((LM_ERROR, "Unable to acquire TestHome objref\n"), -1); + + Benchmark::RoundTripClient_var test + = home->create (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; +*/ Benchmark::RoundTripClient_var test = Benchmark::RoundTripClient::_narrow(obj.in()); //Get the RoundTrip reference diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl index 230d137e1bb..147390a80ee 100755 --- a/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl +++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl @@ -24,7 +24,7 @@ unlink $am_ior; # CIAO Daemon command line arguments -$daemon_args = "-c $CIAO_ROOT/performance-tests/Benchmark/RoundTrip/svc.conf -ORBEndpoint iiop://localhost:10000 -o $daemon_ior -i CIAO_Installation_Data.ini -n $CIAO_ROOT/tools/ComponentServer/ComponentServer"; +$daemon_args = "-ORBEndpoint iiop://localhost:10000 -o $daemon_ior -i CIAO_Installation_Data.ini -n $CIAO_ROOT/tools/ComponentServer/ComponentServer"; $assembly_manager_args = "-o $am_ior -c test.dat"; @@ -69,6 +69,5 @@ $DS->Kill (); #unlink $daemon_ior; #unlink $am_ior; -unlink rtserver.ior; exit $status; diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.h b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.h index 75f37982ae5..96a53b24d34 100644 --- a/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.h +++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.h @@ -6,7 +6,7 @@ #define LATENCYTEST_H #include /**/ "ace/pre.h" -#include "../BenchmarkS.h" +#include "TestS.h" #if defined (_MSC_VER) # if (_MSC_VER >= 1200) @@ -17,7 +17,7 @@ /// Implement the Test::LatencyTest interface class LatencyTest_Impl -: public virtual POA_Benchmark::LatencyTest +: public virtual POA_LatencyTest , public virtual PortableServer::RefCountServantBase { public: diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc index a72c145f991..749b8913c82 100644 --- a/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc +++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc @@ -1,13 +1,6 @@ // $Id$ -project (RoundTripServer) : taoserver, strategies { - after += Benchmark_svnt - libs += Benchmark_stub Benchmark_svnt - libpaths += .. - - IDL_Files { - } - - Source_Files { +project (RoundTripServer) : taoserver, strategies { + Source_Files { server.cpp LatencyTest.cpp } diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/server.cpp b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/server.cpp index dda5a49e1d4..2ba3db0ab27 100644 --- a/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/server.cpp +++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/server.cpp @@ -5,7 +5,7 @@ #include "tao/Strategies/advanced_resource.h" -const char *ior_output_file = "rtserver.ior"; +const char *ior_output_file = "test.ior"; int main (int argc, char *argv[]) @@ -61,7 +61,7 @@ main (int argc, char *argv[]) 1); PortableServer::ServantBase_var owner_transfer(roundtrip_impl); - Benchmark::LatencyTest_var roundtrip = + LatencyTest_var roundtrip = roundtrip_impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; @@ -70,15 +70,6 @@ main (int argc, char *argv[]) ACE_TRY_CHECK; // If the ior_output_file exists, output the ior to it - FILE *output_file= ACE_OS::fopen (ior_output_file, "w"); - if (output_file == 0) - ACE_ERROR_RETURN ((LM_ERROR, - "Cannot open output file for writing IOR: %s", - ior_output_file), - 1); - ACE_OS::fprintf (output_file, "%s", ior.in ()); - ACE_OS::fclose (output_file); - ACE_DEBUG ((LM_DEBUG, "%s", ior.in ())); poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER); diff --git a/TAO/CIAO/performance-tests/Benchmark/descriptors/Test-IOR.cad b/TAO/CIAO/performance-tests/Benchmark/descriptors/Test-IOR.cad index a917affec85..061db64d81c 100644 --- a/TAO/CIAO/performance-tests/Benchmark/descriptors/Test-IOR.cad +++ b/TAO/CIAO/performance-tests/Benchmark/descriptors/Test-IOR.cad @@ -32,7 +32,7 @@ <existinginterface> <findby> <!-- One needs to add the correct IOR of the server here --> - <stringifiedobjectref>file://rtserver.ior</stringifiedobjectref> + <stringifiedobjectref></stringifiedobjectref> </findby> </existinginterface> </connectinterface> diff --git a/TAO/CIAO/performance-tests/Benchmark/server.cpp b/TAO/CIAO/performance-tests/Benchmark/server.cpp deleted file mode 100644 index 43ecd5c3594..00000000000 --- a/TAO/CIAO/performance-tests/Benchmark/server.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// $Id$ - -#include "LatencyTest.h" -#include "ace/Sched_Params.h" - -#include "tao/Strategies/advanced_resource.h" - -const char *ior_output_file = "test.ior"; - -int -main (int argc, char *argv[]) -{ - int priority = - (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO) - + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2; - priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO, - priority); - // Enable FIFO scheduling, e.g., RT scheduling class on Solaris. - - if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO, - priority, - ACE_SCOPE_PROCESS)) != 0) - { - if (ACE_OS::last_error () == EPERM) - { - ACE_DEBUG ((LM_DEBUG, - "server (%P|%t): user is not superuser, " - "test runs in time-shared class\n")); - } - else - ACE_ERROR ((LM_ERROR, - "server (%P|%t): sched_params failed\n")); - } - - ACE_TRY_NEW_ENV - { - CORBA::ORB_var orb = - CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::Object_var poa_object = - orb->resolve_initial_references("RootPOA" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil (poa_object.in ())) - ACE_ERROR_RETURN ((LM_ERROR, - " (%P|%t) Unable to initialize the POA.\n"), - 1); - - PortableServer::POA_var root_poa = - PortableServer::POA::_narrow (poa_object.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - PortableServer::POAManager_var poa_manager = - root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - LatencyTest *roundtrip_impl; - ACE_NEW_RETURN (roundtrip_impl, - LatencyTest (orb.in ()), - 1); - PortableServer::ServantBase_var owner_transfer(roundtrip_impl); - - //Get the RoundTrip reference - Benchmark::LatencyTest_var roundtrip = - roundtrip_impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::String_var ior = - orb->object_to_string (roundtrip.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - // If the ior_output_file exists, output the ior to it - ACE_DEBUG ((LM_DEBUG, "%s", ior.in ())); - - poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - orb->run (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n")); - - root_poa->destroy (1, 1 ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:"); - return 1; - } - ACE_ENDTRY; - - return 0; -} diff --git a/TAO/CIAO/performance-tests/Benchmark/svc.conf b/TAO/CIAO/performance-tests/Benchmark/svc.conf deleted file mode 100644 index 7b8129f5667..00000000000 --- a/TAO/CIAO/performance-tests/Benchmark/svc.conf +++ /dev/null @@ -1,6 +0,0 @@ -# -# $Id$ -# -static Advanced_Resource_Factory "-ORBReactorMaskSignals 0 -ORBInputCDRAllocator null -ORBReactorType select_st -ORBConnectionCacheLock null" -static Server_Strategy_Factory "-ORBPOALock null -ORBAllowReactivationOfSystemids 0" -static Client_Strategy_Factory "-ORBTransportMuxStrategy EXCLUSIVE -ORBProfileLock null -ORBClientConnectionHandler RW" diff --git a/TAO/CIAO/tools/RTComponentServer/ComponentServer_Task.h b/TAO/CIAO/tools/RTComponentServer/ComponentServer_Task.h index bc4561cbaf2..a4c8c5122dc 100644 --- a/TAO/CIAO/tools/RTComponentServer/ComponentServer_Task.h +++ b/TAO/CIAO/tools/RTComponentServer/ComponentServer_Task.h @@ -16,7 +16,7 @@ #ifndef CIAO_COMPONENTSERVER_TASK_H #define CIAO_COMPONENTSERVER_TASK_H -#include /**/ "ace/pre.h" +#include "ace/pre.h" #include "tao/ORB_Core.h" @@ -78,5 +78,5 @@ namespace CIAO # include "ComponentServer_Task.inl" #endif /* __ACE_INLINE__ */ -#include /**/ "ace/post.h" +#include "ace/post.h" #endif /* CIAO_COMPONENTSERVER_TASK_H */ diff --git a/TAO/CIAO/tools/RTComponentServer/RTConfig_Manager.h b/TAO/CIAO/tools/RTComponentServer/RTConfig_Manager.h index 7c6b2f03057..83beb448686 100644 --- a/TAO/CIAO/tools/RTComponentServer/RTConfig_Manager.h +++ b/TAO/CIAO/tools/RTComponentServer/RTConfig_Manager.h @@ -16,7 +16,7 @@ #ifndef CIAO_RTCONFIG_MANAGER_H #define CIAO_RTCONFIG_MANAGER_H -#include /**/ "ace/pre.h" +#include "ace/pre.h" #include "ace/config-all.h" @@ -157,5 +157,5 @@ namespace CIAO # include "RTConfig_Manager.inl" #endif /* __ACE_INLINE__ */ -#include /**/ "ace/post.h" +#include "ace/post.h" #endif /* CIAO_RTCONFIG_MANAGER_H */ diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 8c94694bb7b..24bae0b5d2c 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,240 +1,3 @@ -Wed Oct 15 11:23:43 2003 Venkita Subramonian <venkita@cs.wustl.edu> - - * orbsvcs/orbsvcs/RTCosScheduling_Static.dsp: - * orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.dsp: - * orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client_Static.dsp: - * orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.dsp: - * orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server_Static.dsp: - Modified the directory to tao_idl to bin/Release/tao_idl in - release configuration. - -Wed Oct 15 11:22:01 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> - - * tao/Transport.cpp (send_connection_closed_notifications_i): The - while loop could lead to possible crash. Please see - - http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=1614 - - for details of the problem and the nature of fixes applied. As - usual, thanks to Carlos O'Ryan for digging this one up and - providing patches. - -Wed Oct 15 11:15:56 2003 Venkita Subramonian <venkita@cs.wustl.edu> - - * orbsvcs/orbsvcs/RTCosScheduling.dsp: Modified the directory to - tao_idl to bin/Release/tao_idl in release configuration. - -Wed Oct 15 15:04:12 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl> - - * orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushSupplier.cpp: - * orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.cpp: - * orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.h: - * orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.cpp: - * orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.h: - * orbsvcs/orbsvcs/CosEvent/CEC_TypedProxyPushConsumer.h: - * orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.cpp: - * orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.h: - Fixed compile problems in the Cygwin TAO build which is using MPC - and emulated exceptions. - -Wed Oct 15 08:58:43 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl> - - * orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.cpp: - Fixed compile problem when typed events is enabled and having - emulated exceptions. - -Wed Oct 15 08:27:12 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl> - - * orbsvcs/orbsvcs/Makefile.bor: - Added RTCosScheduling so that it is also build. - - * orbsvcs/orbsvcs/RTCosScheduling.bor: - Fixed error in this BCB makefile - - * orbsvcs/orbsvcs/RTCosScheduling.idl: - * orbsvcs/tests/RTCosScheduling/testSched.idl: - Fixed fuzz error abount incorrect file tag. - -Wed Oct 15 08:21:33 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl> - - * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.cpp: - * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.h: - * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.i: - * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.cpp: - * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.h: - * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.i: - * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.cpp: - * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.h: - * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.i: - Fixed fuzz error about incorrect file tag. - -Tue Oct 14 20:01:10 2003 Kevin Bryan <bryank@cs.uri.edu> - - * orbsvcs/orbsvcs/Makefile: - * orbsvcs/orbsvcs/Makefile.RTCosScheduling: - * orbsvcs/orbsvcs/RTCosScheduling.bor: - * orbsvcs/orbsvcs/RTCosScheduling.dsp: - * orbsvcs/orbsvcs/RTCosScheduling.mak: - * orbsvcs/orbsvcs/RTCosScheduling.mpc: - * orbsvcs/orbsvcs/RTCosScheduling.pidl: - * orbsvcs/orbsvcs/RTCosScheduling_Static.dsp: - * orbsvcs/orbsvcs/RTCosScheduling.vcproj: - * orbsvcs/orbsvcs/RTCosScheduling/README: - * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.cpp: - * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.h: - * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.i: - * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_export.h: - * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.cpp: - * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.h: - * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.i: - * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.cpp: - * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.h: - * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.i: - * orbsvcs/tests/RTCosScheduling/client.cpp: - * orbsvcs/tests/RTCosScheduling/Makefile: - * orbsvcs/tests/RTCosScheduling/Object1_i.cpp: - * orbsvcs/tests/RTCosScheduling/Object1_i.h: - * orbsvcs/tests/RTCosScheduling/README: - * orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.dsp: - * orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client_Static.dsp: - * orbsvcs/tests/RTCosScheduling/RTCosScheduling.mpc: - * orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.dsp: - * orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server_Static.dsp: - * orbsvcs/tests/RTCosScheduling/run_test.pl: - * orbsvcs/tests/RTCosScheduling/schedule.cfg: - * orbsvcs/tests/RTCosScheduling/server.cpp: - * orbsvcs/tests/RTCosScheduling/svc.conf: - * orbsvcs/tests/Makefile: - * tao/PortableServer/PortableServerS.h: - - Added the RT Corba 1.0 Scheduling Service. - -Tue Oct 14 17:51:14 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> - - * tao/Exception.h: - * tao/Exception.cpp: - * tao/corbafwd.h: Applied patches to fix compilation errors with - LynxOS. Thanks to Olli Savia for the patches. - -Tue Oct 14 09:32:10 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> - - * orbsvcs/PSS/Makefile.parser: Removed lingTAO_Svc_Utils from the - link line. Shouldn't be needed. - -Tue Oct 15 07:39:39 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl> - - * orbsvcs/FTRT_Event_Service/Factory_Service/EventChannelFactory_i.cpp: - Fixed incorrect trace statement to fix fuzz error - -Tue Oct 15 05:58:12 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl> - - * examples/Kokyu_dsrt_schedulers/muf_example/server.cpp: - Fixed warning in cygwin g++ build about uninitialized variable. - -Mon Oct 13 22:10:35 2003 Ossama Othman <ossama@dre.vanderbilt.edu> - - * orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/Makefile: - - Do not build the CPU load monitor test if the CosLoadBalancing - ORB services component hasn't been configured/built. Addresses - minimum CORBA build problems. Thanks to Venkita for pointing - out the problem. - - * orbsvcs/orbsvcs/Makefile.SSLIOP (ACE_SHLIBS): - - Reverted "Fri Jan 19 13:16:10 2001 Priyanka Gontla - <pgontla@ece.uci.edu>" change that caused ACE_SHLIBS to be - undefined on HPUX. It's not clear why it was necessary. Allows - the TAO_SSLIOP library to be linked on HPUX again. Thanks to - Torsten Kuepper <torsten.kuepper@nokia.com> for reporting the - problem. [Bug 1590] - -Mon Oct 13 16:35:00 2003 Venkita Subramonian <venkita@cs.wustl.edu> - - * orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.cpp: - * orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.h: - - Added RMS+MLF scheduling strategy, renamed RMS_Reconfig_Strategy - to RMS_FAIR_Reconfig_Strategy and MUF_Reconfig_Strategy to - MUF_FAIR_Reconfig_Strategy. - - * orbsvcs/Scheduling_Service/Scheduling_Service.cpp: - * orbsvcs/Scheduling_Service/Scheduling_Service.h: - * orbsvcs/examples/RtEC/Kokyu/Service.cpp: - * orbsvcs/examples/RtEC/Schedule/Service.cpp: - * orbsvcs/orbsvcs/Scheduler_Factory.cpp: - - Renamed MUF_Reconfig_Strategy to MUF_FAIR_Reconfig_Strategy. - -Mon Oct 13 15:29:09 2003 Venkita Subramonian <venkita@cs.wustl.edu> - - * examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_client: - * examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_server: - * examples/Kokyu_dsrt_schedulers/fp_example/fp_example.mpc: - * examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_client: - * examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_server: - * examples/Kokyu_dsrt_schedulers/mif_example/mif_example.mpc: - * examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_client: - * examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_server: - * examples/Kokyu_dsrt_schedulers/muf_example/muf_example.mpc: - * examples/Kokyu_dsrt_schedulers/Kokyu_DSRT_Schedulers.mpc: - * examples/Kokyu_dsrt_schedulers/Makefile.Kokyu_DSRT_Schedulers: - Removed explicit libraries and includes and used the base - projects instead. I had done this to generate the .dsp files. - - * examples/Kokyu_dsrt_schedulers/utils.h: Modified #include - "RTScheduler.h" to #include "tao/RTScheduling/RTScheduler.h". - -Mon Oct 13 12:49:16 2003 Venkita Subramonian <venkita@cs.wustl.edu> - - * examples/Kokyu_dsrt_schedulers/FP_Scheduler.cpp: - * examples/Kokyu_dsrt_schedulers/MIF_Scheduler.cpp: - Added ACE_ENV_ARG_PARAMETER to clear Fuzz errors. - -Mon Oct 13 11:58:38 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> - - * orbsvcs/PSS/Makefile.parser: Removed the new line which caused - compilation errors. - -Mon Oct 13 10:59:47 2003 Venkita Subramonian <venkita@cs.wustl.edu> - - * examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.h: - * examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.cpp: - * examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.h: - * examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.cpp: - - Removed export qualification for the xxx_DT_Creator class. The - service declaration was changed to use ACE_Local_Service. This - is to fix problems with MSVC release builds. - - * examples/RTScheduling/Fixed_Priority_Scheduler/Fixed_Priority_Scheduler.dsp: - * examples/RTScheduling/MIF_Scheduler/MIF_Scheduler.dsp: - - Updated the library paths to get rid of link errors in MSVC - release build. - - * examples/RTScheduling/Starter.dsp: - Changed the Code Generation option in the release configuration - to Multithread DLL. This was causing problems in MSVC release - build. - -Mon Oct 13 10:24:46 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> - - * orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp: - * orbsvcs/orbsvcs/FaultTolerance/FT_ServerRequest_Interceptor.cpp: - - Changed the names of the interceptors. Since these classes are - memory managed by the TAO_Refcounted_LocalObject, no need to - delete them. - -Mon Oct 13 08:58:16 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> - - * orbsvcs/PSS/Makefile.parser: - * tests/Objref_Sequence_Test/client.cpp: - - Applied patches from Olli Savia to get the above compiling with - LynxOS. - Sun Oct 12 20:53:35 2003 Huang-Ming Huang <hh1@cse.wustl.edu> * orbsvcs/orbsvcs/FTORB.mpc diff --git a/TAO/examples/Kokyu_dsrt_schedulers/FP_Scheduler.cpp b/TAO/examples/Kokyu_dsrt_schedulers/FP_Scheduler.cpp index a37d07595d8..c19f714ca15 100644 --- a/TAO/examples/Kokyu_dsrt_schedulers/FP_Scheduler.cpp +++ b/TAO/examples/Kokyu_dsrt_schedulers/FP_Scheduler.cpp @@ -60,8 +60,7 @@ Fixed_Priority_Scheduler::Fixed_Priority_Scheduler (CORBA::ORB_ptr orb, ACE_CHECK; IOP::CodecFactory_var codec_factory; - CORBA::Object_var obj = orb->resolve_initial_references ("CodecFactory" - ACE_ENV_ARG_PARAMETER); + CORBA::Object_var obj = orb->resolve_initial_references ("CodecFactory"); if (CORBA::is_nil(obj.in ())) { diff --git a/TAO/examples/Kokyu_dsrt_schedulers/Kokyu_DSRT_Schedulers.mpc b/TAO/examples/Kokyu_dsrt_schedulers/Kokyu_DSRT_Schedulers.mpc index c51ac411302..4a4f0551be9 100644 --- a/TAO/examples/Kokyu_dsrt_schedulers/Kokyu_DSRT_Schedulers.mpc +++ b/TAO/examples/Kokyu_dsrt_schedulers/Kokyu_DSRT_Schedulers.mpc @@ -1,6 +1,20 @@ -project(Kokyu_DSRT_Schedulers) : orbsvcslib, kokyu, rtscheduling, rtcorba { +project(Kokyu_DSRT_Schedulers){ + sharedname = Kokyu_DSRT_Schedulers dynamicflags = KOKYU_DSRT_SCHEDULERS_BUILD_DLL + includes += $(TAO_ROOT) \ + $(ACE_ROOT) \ + $(TAO_ROOT)/tao/RTScheduling \ + $(TAO_ROOT)/tao/RTCORBA \ + $(ACE_ROOT)/Kokyu + + libs += TAO_RTScheduler Kokyu TAO_RTCORBA ACE TAO + libpaths += $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers \ + $(TAO_ROOT)/tao \ + $(ACE_ROOT)/ace \ + $(TAO_ROOT)/tao/RTCORBA \ + $(TAO_ROOT)/tao/RTScheduling \ + $(ACE_ROOT)/Kokyu Source_Files { FP_Scheduler.cpp diff --git a/TAO/examples/Kokyu_dsrt_schedulers/MIF_Scheduler.cpp b/TAO/examples/Kokyu_dsrt_schedulers/MIF_Scheduler.cpp index 4f3a8a2e1d9..9c8477c7155 100644 --- a/TAO/examples/Kokyu_dsrt_schedulers/MIF_Scheduler.cpp +++ b/TAO/examples/Kokyu_dsrt_schedulers/MIF_Scheduler.cpp @@ -51,8 +51,7 @@ MIF_Scheduler::MIF_Scheduler (CORBA::ORB_ptr orb, ACE_CHECK; IOP::CodecFactory_var codec_factory; - CORBA::Object_var obj = orb->resolve_initial_references ("CodecFactory" - ACE_ENV_ARG_PARAMETER); + CORBA::Object_var obj = orb->resolve_initial_references ("CodecFactory"); if (CORBA::is_nil(obj.in ())) { diff --git a/TAO/examples/Kokyu_dsrt_schedulers/Makefile.Kokyu_DSRT_Schedulers b/TAO/examples/Kokyu_dsrt_schedulers/Makefile.Kokyu_DSRT_Schedulers index f06bbf50dd4..c56bf04dbd8 100644 --- a/TAO/examples/Kokyu_dsrt_schedulers/Makefile.Kokyu_DSRT_Schedulers +++ b/TAO/examples/Kokyu_dsrt_schedulers/Makefile.Kokyu_DSRT_Schedulers @@ -35,7 +35,7 @@ FILES = \ #---------------------------------------------------------------------------- # Include macros and targets #---------------------------------------------------------------------------- -ACE_SHLIBS = -lTAO_RTScheduler -lTAO_RTCORBA -lKokyu -lTAO -lACE +ACE_SHLIBS = -lTAO_RTScheduler -lKokyu -lTAO_RTCORBA -lACE -lTAO include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU ## We don't need the ACELIB setting from wrapper_macros.GNU ACELIB = @@ -54,74 +54,40 @@ $(TEMPINCDIR): endif -CURRENT_COMPONENTS := $(shell sh $(ACE_ROOT)/bin/ace_components --orbsvcs) -ifeq ($(rt_corba),1) -else - LIB = - SHLIB = - all: require_warning -endif -ifeq (,$(TAO_ORBSVCS)) -ifeq ($(rt_corba),1) -else - LIB = - SHLIB = - all: require_warning -endif -else -ifeq ($(rt_corba),1) -else - LIB = - SHLIB = - all: require_warning -endif -endif LSRC = $(addsuffix .cpp, $(FILES)) -ifeq (,$(TAO_ORBSVCS)) -else -endif include $(ACE_ROOT)/include/makeinclude/macros.GNU include $(ACE_ROOT)/include/makeinclude/rules.common.GNU include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -INSTALL_CHECK = $(ACE_ROOT)/lib -ifeq ($(INSTALL_CHECK),.) - INSLIB = $(PWD) -else - INSLIB = $(INSTALL_CHECK) -endif - +# INSTALL_CHECK = . +# ifeq ($(INSTALL_CHECK),.) +# INSLIB = $(PWD) +# else +# INSLIB = $(INSTALL_CHECK) +# endif + include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU include $(ACE_ROOT)/include/makeinclude/rules.local.GNU include $(TAO_ROOT)/taoconfig.mk -CPPFLAGS += -I$(ACE_ROOT)/Kokyu -I$(TAO_ROOT)/orbsvcs -I$(TAO_ROOT) -I$(TAO_ROOT)/tao -I$(ACE_ROOT) +CPPFLAGS += -I../.. -I../../.. -I../../tao/RTScheduling -I../../tao/RTCORBA -I../../../Kokyu ifeq ($(shared_libs),1) ifneq ($(SHLIB),) CPPFLAGS += -DKOKYU_DSRT_SCHEDULERS_BUILD_DLL endif endif -ifeq ($(static_libs),1) - ifneq ($(LIB),) - CPPFLAGS += -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS - endif -endif -LDFLAGS += -L$(ACE_ROOT)/lib +LDFLAGS += -L../../examples/Kokyu_dsrt_schedulers -L../../tao -L../../../ace -L../../tao/RTCORBA -L../../tao/RTScheduling -L../../../Kokyu #---------------------------------------------------------------------------- # Local targets #---------------------------------------------------------------------------- -require_warning: - @echo This project will not be built due to one of the following missing features: - @echo rt_corba - -$(ACE_ROOT)/lib: - -@mkdir -p "$(ACE_ROOT)/lib" +.: + -@mkdir -p "." realclean: clean diff --git a/TAO/examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_client b/TAO/examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_client index 76638ed14e3..6842bf18d23 100644 --- a/TAO/examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_client +++ b/TAO/examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_client @@ -11,7 +11,7 @@ #---------------------------------------------------------------------------- MAKEFILE = Makefile.fp_client DEPENDENCY_FILE = .depend.Makefile.fp_client -BIN_UNCHECKED = fp_client +BIN_UNCHECKED = client ifndef TAO_ROOT TAO_ROOT = $(ACE_ROOT)/TAO @@ -20,7 +20,7 @@ ifndef CIAO_ROOT CIAO_ROOT = $(TAO_ROOT)/CIAO endif -TAO_IDL = $(ACE_ROOT)/bin/tao_idl +TAO_IDL = ../../../../bin/tao_idl IDL_FILES = test IDL_SRC = $(foreach ext, C.cpp S.cpp, $(foreach file, $(IDL_FILES), $(file)$(ext))) @@ -31,7 +31,7 @@ FILES = \ #---------------------------------------------------------------------------- # Include macros and targets #---------------------------------------------------------------------------- -LDLIBS = -lKokyu_DSRT_Schedulers -lKokyu -lTAO_RTCORBA -lTAO -lACE +LDLIBS = -lTAO_RTScheduler -lKokyu -lKokyu_DSRT_Schedulers -lTAO_RTCORBA -lTAO -lACE include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU ## We don't need the ACELIB setting from wrapper_macros.GNU ACELIB = @@ -50,11 +50,7 @@ $(TEMPINCDIR): endif -ifeq ($(rt_corba),1) BIN = $(BIN_UNCHECKED) -else - all: require_warning -endif OBJS = $(addsuffix .o, $(notdir $(FILES))) SRC = $(addsuffix .cpp, $(FILES)) @@ -74,26 +70,22 @@ include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU include $(ACE_ROOT)/include/makeinclude/rules.local.GNU include $(TAO_ROOT)/taoconfig.mk -CPPFLAGS += -I$(TAO_ROOT)/examples/Kokyu_dsrt_schedulers -I$(ACE_ROOT)/Kokyu -I$(TAO_ROOT) -I$(TAO_ROOT)/tao -I$(ACE_ROOT) +CPPFLAGS += -I../../../tao/RTScheduling -I../../../tao/RTCORBA -I../../../../Kokyu -I../../../examples/Kokyu_dsrt_schedulers -I../../.. -I../../../tao -I../../../.. ifeq ($(static_libs),1) ifneq ($(LIB),) - CPPFLAGS += -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS + CPPFLAGS += -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS endif endif -LDFLAGS += -L$(ACE_ROOT)/lib +LDFLAGS += -L../../../examples/Kokyu_dsrt_schedulers -L../../../tao/RTScheduling -L../../../tao/RTCORBA -L../../../../Kokyu -L../../../tao -L../../../../ace -L../../../../lib TAO_IDLFLAGS += -Ge 1 -Sc -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h #---------------------------------------------------------------------------- # Local targets #---------------------------------------------------------------------------- -require_warning: - @echo This project will not be built due to one of the following missing features: - @echo rt_corba - -$(ACE_ROOT)/lib: - -@mkdir -p "$(ACE_ROOT)/lib" +.: + -@mkdir -p "." ADDITIONAL_IDL_TARGETS = @@ -105,13 +97,8 @@ endif .PRECIOUS: $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext))) -ifndef kylix $(BIN): $(addprefix $(VDIR), $(OBJS)) $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $@ $^ $(VLDLIBS) $(POSTLINK) -else -$(BIN): $(addprefix $(VDIR), $(OBJS)) - $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $(VLDLIBS) $(BORINITEXEOBJ) $(POSTLINK) $^, $@,, -endif realclean: clean -$(RM) $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext))) diff --git a/TAO/examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_server b/TAO/examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_server index 4e13bbe8a1b..c96092c4db5 100644 --- a/TAO/examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_server +++ b/TAO/examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_server @@ -11,7 +11,7 @@ #---------------------------------------------------------------------------- MAKEFILE = Makefile.fp_server DEPENDENCY_FILE = .depend.Makefile.fp_server -BIN_UNCHECKED = fp_server +BIN_UNCHECKED = server ifndef TAO_ROOT TAO_ROOT = $(ACE_ROOT)/TAO @@ -20,7 +20,7 @@ ifndef CIAO_ROOT CIAO_ROOT = $(TAO_ROOT)/CIAO endif -TAO_IDL = $(ACE_ROOT)/bin/tao_idl +TAO_IDL = ../../../../bin/tao_idl IDL_FILES = test IDL_SRC = $(foreach ext, C.cpp S.cpp, $(foreach file, $(IDL_FILES), $(file)$(ext))) @@ -33,7 +33,7 @@ FILES = \ #---------------------------------------------------------------------------- # Include macros and targets #---------------------------------------------------------------------------- -LDLIBS = -lKokyu_DSRT_Schedulers -lKokyu -lTAO_RTCORBA -lTAO_PortableServer -lTAO_IORInterceptor -lTAO_Valuetype -lTAO_ObjRefTemplate -lTAO -lACE +LDLIBS = -lTAO_RTScheduler -lKokyu -lKokyu_DSRT_Schedulers -lTAO_RTCORBA -lTAO_PortableServer -lTAO_IORInterceptor -lTAO_Valuetype -lTAO_ObjRefTemplate -lTAO -lACE include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU ## We don't need the ACELIB setting from wrapper_macros.GNU ACELIB = @@ -52,11 +52,7 @@ $(TEMPINCDIR): endif -ifeq ($(rt_corba),1) BIN = $(BIN_UNCHECKED) -else - all: require_warning -endif OBJS = $(addsuffix .o, $(notdir $(FILES))) SRC = $(addsuffix .cpp, $(FILES)) @@ -76,7 +72,7 @@ include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU include $(ACE_ROOT)/include/makeinclude/rules.local.GNU include $(TAO_ROOT)/taoconfig.mk -CPPFLAGS += -I$(TAO_ROOT)/examples/Kokyu_dsrt_schedulers -I$(ACE_ROOT)/Kokyu -I$(TAO_ROOT) -I$(TAO_ROOT)/tao -I$(ACE_ROOT) +CPPFLAGS += -I../../../tao/RTScheduling -I../../../tao/RTCORBA -I../../../../Kokyu -I../../../examples/Kokyu_dsrt_schedulers -I../../.. -I../../../tao -I../../../.. ifeq ($(static_libs),1) ifneq ($(LIB),) CPPFLAGS += -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS @@ -84,18 +80,14 @@ ifeq ($(static_libs),1) endif -LDFLAGS += -L$(ACE_ROOT)/lib +LDFLAGS += -L../../../examples/Kokyu_dsrt_schedulers -L../../../tao/RTScheduling -L../../../tao/RTCORBA -L../../../tao/PortableServer -L../../../tao/IORInterceptor -L../../../tao/Valuetype -L../../../tao/ObjRefTemplate -L../../../../Kokyu -L../../../tao -L../../../../ace -L../../../../lib TAO_IDLFLAGS += -Gv -Ge 1 -Sc -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h #---------------------------------------------------------------------------- # Local targets #---------------------------------------------------------------------------- -require_warning: - @echo This project will not be built due to one of the following missing features: - @echo rt_corba - -$(ACE_ROOT)/lib: - -@mkdir -p "$(ACE_ROOT)/lib" +../../../../lib: + -@mkdir -p "../../../../lib" ADDITIONAL_IDL_TARGETS = @@ -107,13 +99,8 @@ endif .PRECIOUS: $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext))) -ifndef kylix $(BIN): $(addprefix $(VDIR), $(OBJS)) $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $@ $^ $(VLDLIBS) $(POSTLINK) -else -$(BIN): $(addprefix $(VDIR), $(OBJS)) - $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $(VLDLIBS) $(BORINITEXEOBJ) $(POSTLINK) $^, $@,, -endif realclean: clean -$(RM) $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext))) diff --git a/TAO/examples/Kokyu_dsrt_schedulers/fp_example/fp_example.mpc b/TAO/examples/Kokyu_dsrt_schedulers/fp_example/fp_example.mpc index 73282ad66ea..fec3cea3337 100644 --- a/TAO/examples/Kokyu_dsrt_schedulers/fp_example/fp_example.mpc +++ b/TAO/examples/Kokyu_dsrt_schedulers/fp_example/fp_example.mpc @@ -1,13 +1,43 @@ -project(fp_server): kokyu_dsrt_scheduler_server { - exename = fp_server +project(fp_server): taoserver { + + includes += $(TAO_ROOT) \ + $(TAO_ROOT)/tao/RTScheduling \ + $(TAO_ROOT)/tao/RTCORBA \ + $(ACE_ROOT)/Kokyu \ + $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers + + libs += TAO_RTScheduler Kokyu Kokyu_DSRT_Schedulers TAO_RTCORBA + libpaths += $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers \ + $(TAO_ROOT)/tao/RTScheduling \ + $(TAO_ROOT)/tao/RTCORBA \ + $(TAO_ROOT)/tao/PortableServer \ + $(TAO_ROOT)/tao/IORInterceptor \ + $(TAO_ROOT)/tao/Valuetype \ + $(TAO_ROOT)/tao/ObjRefTemplate \ + $(ACE_ROOT)/Kokyu \ + $(TAO_ROOT)/tao \ + $(ACE_ROOT)/ace + Source_Files { test_i.cpp server.cpp } } -project(fp_client): kokyu_dsrt_scheduler_client { - exename = fp_client +project(fp_client): taoclient { + + includes += $(TAO_ROOT)/tao/RTScheduling \ + $(TAO_ROOT)/tao/RTCORBA \ + $(ACE_ROOT)/Kokyu \ + $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers + libs += TAO_RTScheduler Kokyu Kokyu_DSRT_Schedulers TAO_RTCORBA + libpaths += $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers \ + $(TAO_ROOT)/tao/RTScheduling \ + $(TAO_ROOT)/tao/RTCORBA \ + $(ACE_ROOT)/Kokyu \ + $(TAO_ROOT)/tao \ + $(ACE_ROOT)/ace + Source_Files { testC.cpp client.cpp diff --git a/TAO/examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_client b/TAO/examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_client index 1921a91a7ee..8d35cbdd4f2 100644 --- a/TAO/examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_client +++ b/TAO/examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_client @@ -11,7 +11,7 @@ #---------------------------------------------------------------------------- MAKEFILE = Makefile.mif_client DEPENDENCY_FILE = .depend.Makefile.mif_client -BIN_UNCHECKED = mif_client +BIN_UNCHECKED = client ifndef TAO_ROOT TAO_ROOT = $(ACE_ROOT)/TAO @@ -20,7 +20,7 @@ ifndef CIAO_ROOT CIAO_ROOT = $(TAO_ROOT)/CIAO endif -TAO_IDL = $(ACE_ROOT)/bin/tao_idl +TAO_IDL = ../../../../bin/tao_idl IDL_FILES = test IDL_SRC = $(foreach ext, C.cpp S.cpp, $(foreach file, $(IDL_FILES), $(file)$(ext))) @@ -31,7 +31,7 @@ FILES = \ #---------------------------------------------------------------------------- # Include macros and targets #---------------------------------------------------------------------------- -LDLIBS = -lKokyu_DSRT_Schedulers -lKokyu -lTAO_RTCORBA -lTAO -lACE +LDLIBS = -lTAO_RTScheduler -lKokyu -lKokyu_DSRT_Schedulers -lTAO_RTCORBA -lTAO -lACE include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU ## We don't need the ACELIB setting from wrapper_macros.GNU ACELIB = @@ -50,20 +50,13 @@ $(TEMPINCDIR): endif -ifeq ($(rt_corba),1) BIN = $(BIN_UNCHECKED) -else - all: require_warning -endif OBJS = $(addsuffix .o, $(notdir $(FILES))) SRC = $(addsuffix .cpp, $(FILES)) ifneq ($(BIN),) all: idl_stubs - -# This rule forces make to run the idl_stubs -# target before building any of the source files. testC.cpp client.cpp: idl_stubs endif @@ -74,26 +67,22 @@ include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU include $(ACE_ROOT)/include/makeinclude/rules.local.GNU include $(TAO_ROOT)/taoconfig.mk -CPPFLAGS += -I$(TAO_ROOT)/examples/Kokyu_dsrt_schedulers -I$(ACE_ROOT)/Kokyu -I$(TAO_ROOT) -I$(TAO_ROOT)/tao -I$(ACE_ROOT) +CPPFLAGS += -I../../../tao/RTScheduling -I../../../tao/RTCORBA -I../../../../Kokyu -I../../../examples/Kokyu_dsrt_schedulers -I../../.. -I../../../tao -I../../../.. ifeq ($(static_libs),1) ifneq ($(LIB),) - CPPFLAGS += -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS + CPPFLAGS += -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS endif endif -LDFLAGS += -L$(ACE_ROOT)/lib +LDFLAGS += -L../../../examples/Kokyu_dsrt_schedulers -L../../../tao/RTScheduling -L../../../tao/RTCORBA -L../../../../Kokyu -L../../../tao -L../../../../ace -L../../../../lib TAO_IDLFLAGS += -Ge 1 -Sc -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h #---------------------------------------------------------------------------- # Local targets #---------------------------------------------------------------------------- -require_warning: - @echo This project will not be built due to one of the following missing features: - @echo rt_corba - -$(ACE_ROOT)/lib: - -@mkdir -p "$(ACE_ROOT)/lib" +.: + -@mkdir -p "." ADDITIONAL_IDL_TARGETS = @@ -105,13 +94,8 @@ endif .PRECIOUS: $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext))) -ifndef kylix $(BIN): $(addprefix $(VDIR), $(OBJS)) $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $@ $^ $(VLDLIBS) $(POSTLINK) -else -$(BIN): $(addprefix $(VDIR), $(OBJS)) - $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $(VLDLIBS) $(BORINITEXEOBJ) $(POSTLINK) $^, $@,, -endif realclean: clean -$(RM) $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext))) diff --git a/TAO/examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_server b/TAO/examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_server index 0bf1b9de04e..c763a57232f 100644 --- a/TAO/examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_server +++ b/TAO/examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_server @@ -11,7 +11,7 @@ #---------------------------------------------------------------------------- MAKEFILE = Makefile.mif_server DEPENDENCY_FILE = .depend.Makefile.mif_server -BIN_UNCHECKED = mif_server +BIN_UNCHECKED = server ifndef TAO_ROOT TAO_ROOT = $(ACE_ROOT)/TAO @@ -20,7 +20,7 @@ ifndef CIAO_ROOT CIAO_ROOT = $(TAO_ROOT)/CIAO endif -TAO_IDL = $(ACE_ROOT)/bin/tao_idl +TAO_IDL = ../../../../bin/tao_idl IDL_FILES = test IDL_SRC = $(foreach ext, C.cpp S.cpp, $(foreach file, $(IDL_FILES), $(file)$(ext))) @@ -33,7 +33,7 @@ FILES = \ #---------------------------------------------------------------------------- # Include macros and targets #---------------------------------------------------------------------------- -LDLIBS = -lKokyu_DSRT_Schedulers -lKokyu -lTAO_RTCORBA -lTAO_PortableServer -lTAO_IORInterceptor -lTAO_Valuetype -lTAO_ObjRefTemplate -lTAO -lACE +LDLIBS = -lTAO_RTScheduler -lKokyu -lKokyu_DSRT_Schedulers -lTAO_RTCORBA -lTAO_PortableServer -lTAO_IORInterceptor -lTAO_Valuetype -lTAO_ObjRefTemplate -lTAO -lACE include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU ## We don't need the ACELIB setting from wrapper_macros.GNU ACELIB = @@ -52,20 +52,13 @@ $(TEMPINCDIR): endif -ifeq ($(rt_corba),1) BIN = $(BIN_UNCHECKED) -else - all: require_warning -endif OBJS = $(addsuffix .o, $(notdir $(FILES))) SRC = $(addsuffix .cpp, $(FILES)) ifneq ($(BIN),) all: idl_stubs - -# This rule forces make to run the idl_stubs -# target before building any of the source files. testC.cpp testS.cpp test_i.cpp server.cpp: idl_stubs endif @@ -76,7 +69,7 @@ include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU include $(ACE_ROOT)/include/makeinclude/rules.local.GNU include $(TAO_ROOT)/taoconfig.mk -CPPFLAGS += -I$(TAO_ROOT)/examples/Kokyu_dsrt_schedulers -I$(ACE_ROOT)/Kokyu -I$(TAO_ROOT) -I$(TAO_ROOT)/tao -I$(ACE_ROOT) +CPPFLAGS += -I../../../tao/RTScheduling -I../../../tao/RTCORBA -I../../../../Kokyu -I../../../examples/Kokyu_dsrt_schedulers -I../../.. -I../../../tao -I../../../.. ifeq ($(static_libs),1) ifneq ($(LIB),) CPPFLAGS += -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS @@ -84,18 +77,14 @@ ifeq ($(static_libs),1) endif -LDFLAGS += -L$(ACE_ROOT)/lib +LDFLAGS += -L../../../examples/Kokyu_dsrt_schedulers -L../../../tao/RTScheduling -L../../../tao/RTCORBA -L../../../tao/PortableServer -L../../../tao/IORInterceptor -L../../../tao/Valuetype -L../../../tao/ObjRefTemplate -L../../../../Kokyu -L../../../tao -L../../../../ace -L../../../../lib TAO_IDLFLAGS += -Gv -Ge 1 -Sc -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h #---------------------------------------------------------------------------- # Local targets #---------------------------------------------------------------------------- -require_warning: - @echo This project will not be built due to one of the following missing features: - @echo rt_corba - -$(ACE_ROOT)/lib: - -@mkdir -p "$(ACE_ROOT)/lib" +../../../../lib: + -@mkdir -p "../../../../lib" ADDITIONAL_IDL_TARGETS = @@ -107,13 +96,8 @@ endif .PRECIOUS: $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext))) -ifndef kylix $(BIN): $(addprefix $(VDIR), $(OBJS)) $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $@ $^ $(VLDLIBS) $(POSTLINK) -else -$(BIN): $(addprefix $(VDIR), $(OBJS)) - $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $(VLDLIBS) $(BORINITEXEOBJ) $(POSTLINK) $^, $@,, -endif realclean: clean -$(RM) $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext))) diff --git a/TAO/examples/Kokyu_dsrt_schedulers/mif_example/mif_example.mpc b/TAO/examples/Kokyu_dsrt_schedulers/mif_example/mif_example.mpc index 4a8fd295854..5b29a98e63d 100644 --- a/TAO/examples/Kokyu_dsrt_schedulers/mif_example/mif_example.mpc +++ b/TAO/examples/Kokyu_dsrt_schedulers/mif_example/mif_example.mpc @@ -1,13 +1,43 @@ -project(mif_server): kokyu_dsrt_scheduler_server { - exename = mif_server +project(mif_server): taoserver { + + includes +=$(TAO_ROOT) \ + $(TAO_ROOT)/tao/RTScheduling \ + $(TAO_ROOT)/tao/RTCORBA \ + $(ACE_ROOT)/Kokyu \ + $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers + + libs += TAO_RTScheduler Kokyu Kokyu_DSRT_Schedulers TAO_RTCORBA + libpaths += $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers \ + $(TAO_ROOT)/tao/RTScheduling \ + $(TAO_ROOT)/tao/RTCORBA \ + $(TAO_ROOT)/tao/PortableServer \ + $(TAO_ROOT)/tao/IORInterceptor \ + $(TAO_ROOT)/tao/Valuetype \ + $(TAO_ROOT)/tao/ObjRefTemplate \ + $(ACE_ROOT)/Kokyu \ + $(TAO_ROOT)/tao \ + $(ACE_ROOT)/ace + Source_Files { test_i.cpp server.cpp } } -project(mif_client): kokyu_dsrt_scheduler_client { - exename = mif_client +project(mif_client): taoclient { + + includes += $(TAO_ROOT)/tao/RTScheduling \ + $(TAO_ROOT)/tao/RTCORBA \ + $(ACE_ROOT)/Kokyu \ + $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers + libs += TAO_RTScheduler Kokyu Kokyu_DSRT_Schedulers TAO_RTCORBA + libpaths += $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers \ + $(TAO_ROOT)/tao/RTScheduling \ + $(TAO_ROOT)/tao/RTCORBA \ + $(ACE_ROOT)/Kokyu \ + $(TAO_ROOT)/tao \ + $(ACE_ROOT)/ace + Source_Files { testC.cpp client.cpp diff --git a/TAO/examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_client b/TAO/examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_client index ea4aff48aaa..061b740c685 100644 --- a/TAO/examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_client +++ b/TAO/examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_client @@ -11,7 +11,7 @@ #---------------------------------------------------------------------------- MAKEFILE = Makefile.muf_client DEPENDENCY_FILE = .depend.Makefile.muf_client -BIN_UNCHECKED = muf_client +BIN_UNCHECKED = client ifndef TAO_ROOT TAO_ROOT = $(ACE_ROOT)/TAO @@ -20,7 +20,7 @@ ifndef CIAO_ROOT CIAO_ROOT = $(TAO_ROOT)/CIAO endif -TAO_IDL = $(ACE_ROOT)/bin/tao_idl +TAO_IDL = ../../../../bin/tao_idl IDL_FILES = test IDL_SRC = $(foreach ext, C.cpp S.cpp, $(foreach file, $(IDL_FILES), $(file)$(ext))) @@ -31,7 +31,7 @@ FILES = \ #---------------------------------------------------------------------------- # Include macros and targets #---------------------------------------------------------------------------- -LDLIBS = -lKokyu_DSRT_Schedulers -lKokyu -lTAO_RTCORBA -lTAO -lACE +LDLIBS = -lTAO_RTScheduler -lKokyu -lKokyu_DSRT_Schedulers -lTAO_RTCORBA -lTAO_Svc_Utils -lTAO -lACE include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU ## We don't need the ACELIB setting from wrapper_macros.GNU ACELIB = @@ -50,12 +50,7 @@ $(TEMPINCDIR): endif -CURRENT_COMPONENTS := $(shell sh $(ACE_ROOT)/bin/ace_components --orbsvcs) -ifeq ($(rt_corba),1) BIN = $(BIN_UNCHECKED) -else - all: require_warning -endif OBJS = $(addsuffix .o, $(notdir $(FILES))) SRC = $(addsuffix .cpp, $(FILES)) @@ -75,26 +70,22 @@ include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU include $(ACE_ROOT)/include/makeinclude/rules.local.GNU include $(TAO_ROOT)/taoconfig.mk -CPPFLAGS += -I$(TAO_ROOT)/examples/Kokyu_dsrt_schedulers -I$(ACE_ROOT)/Kokyu -I$(TAO_ROOT)/orbsvcs -I$(TAO_ROOT) -I$(TAO_ROOT)/tao -I$(ACE_ROOT) +CPPFLAGS += -I../../../tao/RTScheduling -I../../../tao/RTCORBA -I../../../../Kokyu -I../../../examples/Kokyu_dsrt_schedulers -I../../../orbsvcs -I../../.. -I../../../tao -I../../../.. ifeq ($(static_libs),1) ifneq ($(LIB),) - CPPFLAGS += -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS + CPPFLAGS += -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS endif endif -LDFLAGS += -L$(ACE_ROOT)/lib +LDFLAGS += -L../../../examples/Kokyu_dsrt_schedulers -L../../../tao/RTScheduling -L../../../tao/RTCORBA -L../../../orbsvcs/orbsvcs -L../../../../Kokyu -L../../../tao -L../../../../ace -L../../../../lib TAO_IDLFLAGS += -Ge 1 -Sc -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h #---------------------------------------------------------------------------- # Local targets #---------------------------------------------------------------------------- -require_warning: - @echo This project will not be built due to one of the following missing features: - @echo rt_corba - -$(ACE_ROOT)/lib: - -@mkdir -p "$(ACE_ROOT)/lib" +.: + -@mkdir -p "." ADDITIONAL_IDL_TARGETS = @@ -106,13 +97,8 @@ endif .PRECIOUS: $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext))) -ifndef kylix $(BIN): $(addprefix $(VDIR), $(OBJS)) $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $@ $^ $(VLDLIBS) $(POSTLINK) -else -$(BIN): $(addprefix $(VDIR), $(OBJS)) - $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $(VLDLIBS) $(BORINITEXEOBJ) $(POSTLINK) $^, $@,, -endif realclean: clean -$(RM) $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext))) diff --git a/TAO/examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_server b/TAO/examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_server index 5c799b9b4e5..711990d0483 100644 --- a/TAO/examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_server +++ b/TAO/examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_server @@ -11,7 +11,7 @@ #---------------------------------------------------------------------------- MAKEFILE = Makefile.muf_server DEPENDENCY_FILE = .depend.Makefile.muf_server -BIN_UNCHECKED = muf_server +BIN_UNCHECKED = server ifndef TAO_ROOT TAO_ROOT = $(ACE_ROOT)/TAO @@ -20,7 +20,7 @@ ifndef CIAO_ROOT CIAO_ROOT = $(TAO_ROOT)/CIAO endif -TAO_IDL = $(ACE_ROOT)/bin/tao_idl +TAO_IDL = ../../../../bin/tao_idl IDL_FILES = test IDL_SRC = $(foreach ext, C.cpp S.cpp, $(foreach file, $(IDL_FILES), $(file)$(ext))) @@ -33,7 +33,7 @@ FILES = \ #---------------------------------------------------------------------------- # Include macros and targets #---------------------------------------------------------------------------- -LDLIBS = -lKokyu_DSRT_Schedulers -lKokyu -lTAO_RTCORBA -lTAO_PortableServer -lTAO_IORInterceptor -lTAO_Valuetype -lTAO_ObjRefTemplate -lTAO -lACE +LDLIBS = -lTAO_RTScheduler -lKokyu -lKokyu_DSRT_Schedulers -lTAO_RTCORBA -lTAO_PortableServer -lTAO_IORInterceptor -lTAO_Valuetype -lTAO_ObjRefTemplate -lTAO -lACE include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU ## We don't need the ACELIB setting from wrapper_macros.GNU ACELIB = @@ -52,11 +52,7 @@ $(TEMPINCDIR): endif -ifeq ($(rt_corba),1) BIN = $(BIN_UNCHECKED) -else - all: require_warning -endif OBJS = $(addsuffix .o, $(notdir $(FILES))) SRC = $(addsuffix .cpp, $(FILES)) @@ -76,7 +72,7 @@ include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU include $(ACE_ROOT)/include/makeinclude/rules.local.GNU include $(TAO_ROOT)/taoconfig.mk -CPPFLAGS += -I$(TAO_ROOT)/examples/Kokyu_dsrt_schedulers -I$(ACE_ROOT)/Kokyu -I$(TAO_ROOT) -I$(TAO_ROOT)/tao -I$(ACE_ROOT) +CPPFLAGS += -I../../../tao/RTScheduling -I../../../tao/RTCORBA -I../../../../Kokyu -I../../../orbsvcs -I../../../examples/Kokyu_dsrt_schedulers -I../../.. -I../../../tao -I../../../.. ifeq ($(static_libs),1) ifneq ($(LIB),) CPPFLAGS += -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS @@ -84,18 +80,14 @@ ifeq ($(static_libs),1) endif -LDFLAGS += -L$(ACE_ROOT)/lib +LDFLAGS += -L../../../examples/Kokyu_dsrt_schedulers -L../../../tao/RTScheduling -L../../../tao/RTCORBA -L../../../tao/PortableServer -L../../../tao/IORInterceptor -L../../../tao/Valuetype -L../../../tao/ObjRefTemplate -L../../../../Kokyu -L../../../tao -L../../../../ace -L../../../../lib TAO_IDLFLAGS += -Gv -Ge 1 -Sc -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h #---------------------------------------------------------------------------- # Local targets #---------------------------------------------------------------------------- -require_warning: - @echo This project will not be built due to one of the following missing features: - @echo rt_corba - -$(ACE_ROOT)/lib: - -@mkdir -p "$(ACE_ROOT)/lib" +../../../../lib: + -@mkdir -p "../../../../lib" ADDITIONAL_IDL_TARGETS = @@ -107,13 +99,8 @@ endif .PRECIOUS: $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext))) -ifndef kylix $(BIN): $(addprefix $(VDIR), $(OBJS)) $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $@ $^ $(VLDLIBS) $(POSTLINK) -else -$(BIN): $(addprefix $(VDIR), $(OBJS)) - $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $(VLDLIBS) $(BORINITEXEOBJ) $(POSTLINK) $^, $@,, -endif realclean: clean -$(RM) $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext))) diff --git a/TAO/examples/Kokyu_dsrt_schedulers/muf_example/muf_example.mpc b/TAO/examples/Kokyu_dsrt_schedulers/muf_example/muf_example.mpc index c6256212220..d950a394762 100644 --- a/TAO/examples/Kokyu_dsrt_schedulers/muf_example/muf_example.mpc +++ b/TAO/examples/Kokyu_dsrt_schedulers/muf_example/muf_example.mpc @@ -1,13 +1,47 @@ -project(muf_server): kokyu_dsrt_scheduler_server { - exename = muf_server +project(muf_server): taoserver { + + includes += $(TAO_ROOT) \ + $(TAO_ROOT)/tao/RTScheduling \ + $(TAO_ROOT)/tao/RTCORBA \ + $(ACE_ROOT)/Kokyu \ + $(TAO_ROOT)/orbsvcs \ + $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers + + libs += TAO_RTScheduler Kokyu Kokyu_DSRT_Schedulers TAO_RTCORBA + libpaths += $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers \ + $(TAO_ROOT)/tao/RTScheduling \ + $(TAO_ROOT)/tao/RTCORBA \ + $(TAO_ROOT)/tao/PortableServer \ + $(TAO_ROOT)/tao/IORInterceptor \ + $(TAO_ROOT)/tao/Valuetype \ + $(TAO_ROOT)/tao/ObjRefTemplate \ + $(ACE_ROOT)/Kokyu \ + $(TAO_ROOT)/tao \ + $(ACE_ROOT)/ace + Source_Files { test_i.cpp server.cpp } } -project(muf_client): orbsvcsexe, kokyu_dsrt_scheduler_client { - exename = muf_client +project(muf_client): taoclient { + + includes += $(TAO_ROOT)/tao/RTScheduling \ + $(TAO_ROOT)/tao/RTCORBA \ + $(ACE_ROOT)/Kokyu \ + $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers \ + $(TAO_ROOT)/orbsvcs + + libs += TAO_RTScheduler Kokyu Kokyu_DSRT_Schedulers TAO_RTCORBA TAO_Svc_Utils + libpaths += $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers \ + $(TAO_ROOT)/tao/RTScheduling \ + $(TAO_ROOT)/tao/RTCORBA \ + $(TAO_ROOT)/orbsvcs/orbsvcs \ + $(ACE_ROOT)/Kokyu \ + $(TAO_ROOT)/tao \ + $(ACE_ROOT)/ace + Source_Files { testC.cpp client.cpp diff --git a/TAO/examples/Kokyu_dsrt_schedulers/muf_example/server.cpp b/TAO/examples/Kokyu_dsrt_schedulers/muf_example/server.cpp index f22355074e1..7758d797ab0 100644 --- a/TAO/examples/Kokyu_dsrt_schedulers/muf_example/server.cpp +++ b/TAO/examples/Kokyu_dsrt_schedulers/muf_example/server.cpp @@ -82,7 +82,7 @@ Task_Stats task_stats; int main (int argc, char *argv[]) { - MUF_Scheduler* scheduler = 0; + MUF_Scheduler* scheduler; RTScheduling::Current_var current; long flags; int sched_policy = ACE_SCHED_RR; @@ -90,7 +90,7 @@ main (int argc, char *argv[]) if (sched_policy == ACE_SCHED_RR) flags = THR_NEW_LWP | THR_BOUND | THR_JOINABLE | THR_SCHED_RR; - else + else flags = THR_NEW_LWP | THR_BOUND | THR_JOINABLE | THR_SCHED_FIFO; task_stats.init (100000); @@ -142,9 +142,9 @@ main (int argc, char *argv[]) { disp_impl_type = Kokyu::DSRT_OS_BASED; } - + ACE_NEW_RETURN (scheduler, - MUF_Scheduler (orb.in (), + MUF_Scheduler (orb.in (), disp_impl_type, sched_policy, sched_scope), -1); @@ -161,9 +161,9 @@ main (int argc, char *argv[]) ACE_TRY_CHECK; } - Simple_Server_i server_impl (orb.in (), - current.in (), - task_stats, + Simple_Server_i server_impl (orb.in (), + current.in (), + task_stats, enable_yield); Simple_Server_var server = @@ -194,12 +194,12 @@ main (int argc, char *argv[]) Worker worker (orb.in ()); if (worker.activate (flags, - nthreads, + nthreads, 0, - ACE_Sched_Params::priority_max(sched_policy, + ACE_Sched_Params::priority_max(sched_policy, sched_scope)) != 0) { - ACE_ERROR ((LM_ERROR, + ACE_ERROR ((LM_ERROR, "Cannot activate threads in RT class.", "Trying to activate in non-RT class\n")); @@ -228,7 +228,7 @@ main (int argc, char *argv[]) ACE_ENDTRY; ACE_DEBUG ((LM_DEBUG, "Exiting main...\n")); - task_stats.dump_samples ("timeline.txt", + task_stats.dump_samples ("timeline.txt", "Time\t\tGUID", ACE_High_Res_Timer::global_scale_factor ()); return 0; diff --git a/TAO/examples/Kokyu_dsrt_schedulers/utils.h b/TAO/examples/Kokyu_dsrt_schedulers/utils.h index 87d37a888a2..ea29a7cb754 100644 --- a/TAO/examples/Kokyu_dsrt_schedulers/utils.h +++ b/TAO/examples/Kokyu_dsrt_schedulers/utils.h @@ -2,7 +2,7 @@ #include "ace/OS.h" #include "Kokyu_qosC.h" -#include "tao/RTScheduling/RTScheduler.h" +#include "RTScheduler.h" void guid_copy( Kokyu::GuidType& lhs, const RTScheduling::Current::IdType& rhs); void guid_copy( RTScheduling::Current::IdType& lhs, const Kokyu::GuidType& rhs); diff --git a/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.cpp b/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.cpp index b5da788d9fe..440a9bb9b8b 100644 --- a/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.cpp +++ b/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.cpp @@ -63,6 +63,6 @@ ACE_STATIC_SVC_DEFINE(FP_DT_Creator, ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ, 0) -ACE_FACTORY_DEFINE (ACE_Local_Service, FP_DT_Creator) +ACE_FACTORY_DEFINE (FP_DT_Creator, FP_DT_Creator) diff --git a/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.h b/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.h index 34a2fbb7e08..0df006bf9bb 100644 --- a/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.h +++ b/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.h @@ -6,7 +6,7 @@ #include "../DT_Creator.h" #include "fp_dt_creator_export.h" -class FP_DT_Creator: public DT_Creator +class FP_DT_Creator_Export FP_DT_Creator: public DT_Creator { public: FP_DT_Creator (void); @@ -30,7 +30,7 @@ public: }; -ACE_STATIC_SVC_DECLARE (FP_DT_Creator) -ACE_FACTORY_DECLARE (ACE_Local_Service, FP_DT_Creator) +ACE_STATIC_SVC_DECLARE_EXPORT (FP_DT_Creator, FP_DT_Creator) +ACE_FACTORY_DECLARE (FP_DT_Creator, FP_DT_Creator) #endif /*FP_DT_CREATOR_H*/ diff --git a/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/Fixed_Priority_Scheduler.dsp b/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/Fixed_Priority_Scheduler.dsp index 2d8a1b4d818..8d817ebd8fe 100644 --- a/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/Fixed_Priority_Scheduler.dsp +++ b/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/Fixed_Priority_Scheduler.dsp @@ -42,7 +42,7 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GR /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../../../" /I "../../../" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../../../" /I "../../../" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "FP_DT_CREATOR_BUILD_DLL" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
@@ -50,7 +50,7 @@ BSC32=bscmake.exe # 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 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 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ace.lib tao.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_RTScheduler.lib TAO_CosNaming.lib /nologo /subsystem:console /machine:I386 /libpath:"$(ACE_ROOT)\ace" /libpath:"../../../tao" /libpath:"../../../tao/RTCORBA" /libpath:"../../../tao/PortableServer" /libpath:"../../../tao/RTScheduling" /libpath:"../../../orbsvcs/orbsvcs/"
+# ADD 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 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ace.lib tao.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_RTScheduler.lib TAO_CosNaming.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "Fixed_Priority_Scheduler - Win32 Debug"
@@ -66,7 +66,7 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GR /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /Gm /GR /GX /Zi /Od /I "../../../../" /I "../../../" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /Gm /GR /GX /Zi /Od /I "../../../../" /I "../../../" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "FP_DT_CREATOR_BUILD_DLL" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
diff --git a/TAO/examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.cpp b/TAO/examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.cpp index bab97a4c297..42477b8cb29 100644 --- a/TAO/examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.cpp +++ b/TAO/examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.cpp @@ -90,4 +90,4 @@ ACE_STATIC_SVC_DEFINE(MIF_DT_Creator, ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ, 0) -ACE_FACTORY_DEFINE (ACE_Local_Service, MIF_DT_Creator) +ACE_FACTORY_DEFINE (MIF_DT_Creator, MIF_DT_Creator) diff --git a/TAO/examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.h b/TAO/examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.h index f76202b63f4..a286090d00c 100644 --- a/TAO/examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.h +++ b/TAO/examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.h @@ -6,7 +6,7 @@ #include "../DT_Creator.h" #include "mif_dt_creator_export.h" -class MIF_DT_Creator: public DT_Creator +class MIF_DT_Creator_Export MIF_DT_Creator: public DT_Creator { public: MIF_DT_Creator (void); @@ -29,8 +29,8 @@ public: }; -ACE_STATIC_SVC_DECLARE (MIF_DT_Creator) -ACE_FACTORY_DECLARE (ACE_Local_Service, MIF_DT_Creator) +ACE_STATIC_SVC_DECLARE_EXPORT (MIF_DT_Creator, MIF_DT_Creator) +ACE_FACTORY_DECLARE (MIF_DT_Creator, MIF_DT_Creator) #endif /*MIF_DT_CREATOR_H*/ diff --git a/TAO/examples/RTScheduling/MIF_Scheduler/MIF_Scheduler.dsp b/TAO/examples/RTScheduling/MIF_Scheduler/MIF_Scheduler.dsp index 781fa39244c..462eefd1263 100644 --- a/TAO/examples/RTScheduling/MIF_Scheduler/MIF_Scheduler.dsp +++ b/TAO/examples/RTScheduling/MIF_Scheduler/MIF_Scheduler.dsp @@ -42,7 +42,7 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GR /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../../../" /I "../../../" /I "../../../tao/RTScheduling" /I "../../../tao/RTCORBA" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../../../" /I "../../../" /I "../../../tao/RTScheduling" /I "../../../tao/RTCORBA" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "MIF_DT_CREATOR_BUILD_DLL" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
@@ -50,7 +50,7 @@ BSC32=bscmake.exe # 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 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 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ace.lib tao.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_RTScheduler.lib TAO_CosNaming.lib /nologo /subsystem:console /machine:I386 /libpath:"$(ACE_ROOT)\ace" /libpath:"../../../tao" /libpath:"../../../tao/RTCORBA" /libpath:"../../../tao/PortableServer" /libpath:"../../../tao/RTScheduling" /libpath:"../../../orbsvcs/orbsvcs/"
+# ADD 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 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ace.lib tao.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_RTScheduler.lib TAO_CosNaming.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "MIF_Scheduler - Win32 Debug"
@@ -66,7 +66,7 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GR /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /Gm /GR /GX /Zi /Od /I "../../../../" /I "../../../" /I "../../../tao/RTScheduling" /I "../../../tao/RTCORBA" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /Gm /GR /GX /Zi /Od /I "../../../../" /I "../../../" /I "../../../tao/RTScheduling" /I "../../../tao/RTCORBA" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "MIF_DT_CREATOR_BUILD_DLL" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
diff --git a/TAO/examples/RTScheduling/Starter.dsp b/TAO/examples/RTScheduling/Starter.dsp index 2ca25fb0683..df896db8bc1 100644 --- a/TAO/examples/RTScheduling/Starter.dsp +++ b/TAO/examples/RTScheduling/Starter.dsp @@ -40,8 +40,8 @@ RSC=rc.exe # PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GR /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "MIF_DT_CREATOR_BUILD_DLL" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../../" /I "../../" /I "../../tao/RTScheduling" /I "../../tao/RTCORBA" /I "../../orbsvcs" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE CPP /nologo /W3 /GX /GR /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "MIF_DT_CREATOR_BUILD_DLL" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /GR /O2 /I "../../../" /I "../../" /I "../../tao/RTScheduling" /I "../../tao/RTCORBA" /I "../../orbsvcs" /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
@@ -64,8 +64,8 @@ LINK32=link.exe # PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GR /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /Gm /GR /GX /Zi /Od /I "../../../" /I "../../" /I "../../tao/RTScheduling" /I "../../tao/RTCORBA" /I "../../orbsvcs" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "MIF_DT_CREATOR_BUILD_DLL" /YX /FD /c
+# ADD BASE CPP /nologo /W3 /Gm /GX /GR /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /Gm /GX /GR /Zi /Od /I "../../../" /I "../../" /I "../../tao/RTScheduling" /I "../../tao/RTCORBA" /I "../../orbsvcs" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "MIF_DT_CREATOR_BUILD_DLL" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
diff --git a/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FTRT_Event_Service.mpc b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FTRT_Event_Service.mpc new file mode 100644 index 00000000000..ad6d724e165 --- /dev/null +++ b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FTRT_Event_Service.mpc @@ -0,0 +1,9 @@ +project(FTRT_Event_Service) : orbsvcsexe, rtschedevent, ftrtevent, ftorbutils { + exename = ftrt_eventservice + includes += $(TAO_ROOT)/orbsvcs $(TAO_ROOT)/orbsvcs/FtRtEvent/Utils $(TAO_ROOT)/orbsvcs/FtRtEvent/EventChannel + after += FTRT_EventChannel + libs += TAO_Utils TAO_FTRT_EventChannel + specific(gnuace) { + lit_libs += TAO_Strategies + } +}
\ No newline at end of file diff --git a/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FT_EventService.cpp b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FT_EventService.cpp new file mode 100644 index 00000000000..d0c04d42f2e --- /dev/null +++ b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FT_EventService.cpp @@ -0,0 +1,295 @@ +// $Id$ + +#include "FT_EventService.h" +#include "ace/Argv_Type_Converter.h" +#include "ace/Thread_Manager.h" +#include "ace/Get_Opt.h" +#include "ace/INET_Addr.h" +#include "ace/SOCK_Connector.h" +#include "ace/SOCK_Stream.h" +#include "orbsvcs/Sched/Config_Scheduler.h" +#include "orbsvcs/Scheduler_Factory.h" +#include "orbsvcs/FtRtEvent/EventChannel/FTRTEC_ServiceActivate.h" + +ACE_RCSID (Event_Service, + FT_EventService, + "$Id$") + + +int ACE_TMAIN (int argc, ACE_TCHAR* argv[]) +{ + FT_EventService event_service; + return event_service.run (argc, argv); +} + +FT_EventService::FT_EventService() +: global_scheduler_(0) +, sched_impl_(0) +, membership_(TAO_FTEC_Event_Channel::NONE) +, num_threads_(1) +, task_(orb_) +{ +} + +FT_EventService::~FT_EventService() +{ + delete sched_impl_; +} + +int +FT_EventService::run(int argc, ACE_TCHAR* argv[]) +{ + ACE_TRY_NEW_ENV + { + // Make a copy of command line parameter. + ACE_Argv_Type_Converter command(argc, argv); + + // Initialize ORB. + orb_ = CORBA::ORB_init (command.get_argc(), + command.get_ASCII_argv(), + "" ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (this->parse_args (command.get_argc(), command.get_TCHAR_argv()) == -1) + return 1; + + CORBA::Object_var root_poa_object = + orb_->resolve_initial_references("RootPOA" + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + if (CORBA::is_nil (root_poa_object.in ())) + ACE_ERROR_RETURN ((LM_ERROR, + " (%P|%t) Unable to initialize the root POA.\n"), + 1); + + PortableServer::POA_var root_poa = + PortableServer::POA::_narrow (root_poa_object.in () ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + PortableServer::POAManager_var poa_manager = + root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + CORBA::Object_var naming_obj = + orb_->resolve_initial_references ("NameService" ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + if (CORBA::is_nil (naming_obj.in ())) + ACE_ERROR_RETURN ((LM_ERROR, + " (%P|%t) Unable to initialize the Naming Service.\n"), + 1); + + CosNaming::NamingContext_var naming_context = + CosNaming::NamingContext::_narrow (naming_obj.in () ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + setup_scheduler(naming_context.in() ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(-1); + + + poa_manager->activate(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + // Activate the Event channel implementation + + TAO_FTEC_Event_Channel ec(orb_, root_poa); + + FtRtecEventChannelAdmin::EventChannel_var ec_ior = + ec.activate(membership_ + ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (report_factory(orb_.in(), ec_ior.in())==-1) + return -1; + + orb_->run(ACE_ENV_SINGLE_ARG_PARAMETER); + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, "A CORBA Exception occurred."); + } + ACE_ENDTRY; + + ACE_CHECK_RETURN(-1); + + ACE_Thread_Manager::instance()->wait(); + return 0; +} + +int +FT_EventService::parse_args (int argc, ACE_TCHAR* argv []) +{ + /// get the membership from the environment variable + char* member = ACE_OS::getenv("FTEC_MEMBERSHIP"); + + membership_ = TAO_FTEC_Event_Channel::NONE; + + if (member) { + if (ACE_OS::strcasecmp(member, "PRIMARY")==0) { + membership_ = TAO_FTEC_Event_Channel::PRIMARY; + } + else if (ACE_OS::strcasecmp(member, "BACKUP")==0) { + membership_ = TAO_FTEC_Event_Channel::BACKUP; + } + } + + char* n_threads = ACE_OS::getenv("FTEC_NUM_THREAD"); + + this->num_threads_ = 1; + if (n_threads) + this->num_threads_ = ACE_OS::atoi(n_threads); + + ACE_Get_Opt get_opt (argc, argv, ACE_LIB_TEXT("jn:ps:")); + int opt; + + while ((opt = get_opt ()) != EOF) + { + switch (opt) + { + case 'j': + this->membership_ = TAO_FTEC_Event_Channel::BACKUP; + break; + case 'n': + this->num_threads_ = ACE_OS::atoi(get_opt.opt_arg ()); + break; + case 'p': + this->membership_ = TAO_FTEC_Event_Channel::PRIMARY; + break; + case 's': + // It could be just a flag (i.e. no "global" or "local" + // argument, but this is consistent with the EC_Multiple + // test and also allows for a runtime scheduling service. + + if (ACE_OS::strcasecmp (get_opt.opt_arg (), ACE_LIB_TEXT("global")) == 0) + { + this->global_scheduler_ = 1; + } + else if (ACE_OS::strcasecmp (get_opt.opt_arg (), ACE_LIB_TEXT("local")) == 0) + { + this->global_scheduler_ = 0; + } + else + { + ACE_DEBUG ((LM_DEBUG, + ACE_LIB_TEXT("Unknown scheduling type <%s> ") + ACE_LIB_TEXT("defaulting to local\n"), + get_opt.opt_arg ())); + this->global_scheduler_ = 0; + } + break; + + case '?': + default: + ACE_DEBUG ((LM_DEBUG, + ACE_LIB_TEXT("Usage: %s \n") + ACE_LIB_TEXT(" -j join the object group\n") + ACE_LIB_TEXT(" -p set as primary\n") + ACE_LIB_TEXT(" -s <global|local> \n") + ACE_LIB_TEXT("\n"), + argv[0])); + return -1; + } + } + + if (this->num_threads_ < 1) + ACE_ERROR_RETURN((LM_ERROR, "Invalid number of threads specified\n"), -1); + + return 0; +} + +void +FT_EventService::setup_scheduler(CosNaming::NamingContext_ptr naming_context + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + RtecScheduler::Scheduler_var scheduler; + if (CORBA::is_nil(naming_context)) { + ACE_NEW_THROW_EX (this->sched_impl_, + ACE_Config_Scheduler, + CORBA::NO_MEMORY()); + + scheduler = this->sched_impl_->_this (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (ACE_Scheduler_Factory::server(scheduler.in()) == -1) + ACE_ERROR((LM_ERROR,"Unable to install scheduler\n")); + } + else { + // This is the name we (potentially) register the Scheduling + // Service in the Naming Service. + CosNaming::Name schedule_name (1); + schedule_name.length (1); + schedule_name[0].id = CORBA::string_dup ("ScheduleService"); + + + if (1) + { + // We must find the scheduler object reference... + + if (this->global_scheduler_ == 0) + { + ACE_NEW_THROW_EX (this->sched_impl_, + ACE_Config_Scheduler, + CORBA::NO_MEMORY()); + + scheduler = this->sched_impl_->_this (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + // Register the servant with the Naming Context.... + naming_context->rebind (schedule_name, scheduler.in () + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + else + { + CORBA::Object_var tmp = + naming_context->resolve (schedule_name ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + scheduler = RtecScheduler::Scheduler::_narrow (tmp.in () + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + } + } +} + +int +FT_EventService::report_factory(CORBA::ORB_ptr orb, + FtRtecEventChannelAdmin::EventChannel_ptr ec) +{ + char* addr = ACE_OS::getenv("EventChannelFactoryAddr"); + + if (addr != NULL) { + // instaniated by object factory, report my ior back to the factory + ACE_INET_Addr factory_addr(addr); + ACE_SOCK_Connector connector; + ACE_SOCK_Stream stream; + + ACE_DEBUG((LM_DEBUG,"connecting to %s\n",addr)); + if (connector.connect(stream, factory_addr) == -1) + ACE_ERROR_RETURN((LM_ERROR, "(%P|%t) Invalid Factory Address\n"), -1); + + ACE_DEBUG((LM_DEBUG,"Factory connected\n")); + CORBA::String_var my_ior_string = orb->object_to_string(ec + ACE_ENV_ARG_PARAMETER); + + ACE_TRY_CHECK; + int len = strlen(my_ior_string.in()) ; + + if (stream.send_n(my_ior_string.in(), len) != len) + ACE_ERROR_RETURN((LM_ERROR, "(%P|%t) IOR Transmission Error\n"), -1); + + stream.close(); + } + return 0; +} + +void FT_EventService::become_primary() +{ + if (this->num_threads_ > 1) { + task_.activate(THR_NEW_LWP | THR_JOINABLE, num_threads_-1); + } +} + diff --git a/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FT_EventService.h b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FT_EventService.h new file mode 100644 index 00000000000..d65b67dc17c --- /dev/null +++ b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FT_EventService.h @@ -0,0 +1,52 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file FT_EventService.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= +#ifndef FT_EVENTSERVICE_H +#define FT_EVENTSERVICE_H + +#include "orbsvcs/CosNamingC.h" +#include "orbsvcs/FtRtecEventChannelAdminC.h" +#include "orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.h" +#include "orbsvcs/FtRtEvent/EventChannel/FTEC_Become_Primary_Listener.h" +#include "TP_Task.h" + +namespace POA_RtecScheduler +{ + class Scheduler; +}; + +class FT_EventService : private TAO_FTEC_Become_Primary_Listener +{ +public: + FT_EventService(); + ~FT_EventService(); + + int run(int argc, ACE_TCHAR* argv[]); + +private: + int parse_args (int argc, ACE_TCHAR* argv []); + void setup_scheduler(CosNaming::NamingContext_ptr naming_context + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + int report_factory(CORBA::ORB_ptr orb, + FtRtecEventChannelAdmin::EventChannel_ptr ec); + virtual void become_primary(); + + int global_scheduler_; + // Should we use a global scheduler or a local one? + POA_RtecScheduler::Scheduler *sched_impl_; + // The Scheduler implementation. + TAO_FTEC_Event_Channel::MEMBERSHIP membership_; + int num_threads_; + CORBA::ORB_var orb_; + TP_Task task_; +}; + +#endif diff --git a/TAO/orbsvcs/FTRT_Event_Service/Event_Service/TP_Task.h b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/TP_Task.h new file mode 100644 index 00000000000..f5f2d410cac --- /dev/null +++ b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/TP_Task.h @@ -0,0 +1,38 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file TP_Task.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= +#ifndef TP_TASK_H +#define TP_TASK_H + +#include "ace/Task.h" +#include "tao/corba.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class TP_Task : public ACE_Task_Base { +public: + TP_Task(CORBA::ORB_var& orb) + : orb_(orb) + { + } + + ~TP_Task(){} + virtual int svc() { + this->orb_->run(); + return 0; + } +private: + CORBA::ORB_var& orb_; +}; + +#endif diff --git a/TAO/orbsvcs/FTRT_Event_Service/Event_Service/svc.conf b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/svc.conf new file mode 100644 index 00000000000..d23c985de19 --- /dev/null +++ b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/svc.conf @@ -0,0 +1,20 @@ +## $Id$ + +## The value of FTEC_DETECTOR_TRANSPORT_PROTOCL should be either "sctp" or "tcp". +## The FTEC_HEART_BEAT is only meanful for stcp. It represents the heart beat in +## seconds for the connections between replicas. + +static FTRTEC_Fault_Detector "$FTEC_DETECTOR_TRANSPORT_PROTOCL -HeartBeat $FTEC_HEART_BEAT" + + +## If FTEC_REPLICATION_STRATEGY is set to AMI, then use AMI for replicating operations; +## otherwise, two-way CORBA call is used for replication. + +static FTRTEC_Replication "$FTEC_REPLICATION_STRATEGY" + +## FTEC_EVENT_SERVICE_NAME is used for the event channnel to register to the naming service. +## FTEC_OBJECT_ID should be a globally unique identifier defined in +## draft-leach-uuids-guids-01.txt. This value should be the same +## for the entire object group. + +static FTRTEC_Identification "-Name $FTEC_EVENT_SERVICE_NAME -Object_ID $FTEC_OBJECT_ID"
\ No newline at end of file diff --git a/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/EventChannelFactory_i.cpp b/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/EventChannelFactory_i.cpp new file mode 100644 index 00000000000..2ec8cf8f842 --- /dev/null +++ b/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/EventChannelFactory_i.cpp @@ -0,0 +1,201 @@ +// $Id$ + +#include "EventChannelFactory_i.h" +#include "ace/Process.h" +#include "ace/Read_Buffer.h" +#include "ace/SOCK_Acceptor.h" +#include "ace/SOCK_Stream.h" +#include "orbsvcs/FtRtEvent/Utils/ScopeGuard.h" +#include "orbsvcs/FtRtEvent/Utils/UUID.h" + +ACE_RCSID (Factory_Service, + EventChannelFactory_i, + "$Id$") + + +const int WAIT_FOR_REGISTRATION_TIME = 10; //sec +const int MAX_ID_STRING = 10; + +EventChannelFactory_i::EventChannelFactory_i(const char* conf_filename, CORBA::ORB_ptr orb_ptr) +: conf_file(conf_filename), id(0), orb(orb_ptr) +{ +} + +CORBA::Object_ptr EventChannelFactory_i::create_object ( + const char * type_id, + const FT::Criteria & the_criteria, + FT::GenericFactory::FactoryCreationId_out factory_creation_id + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + , FT::NoFactory + , FT::ObjectNotCreated + , FT::InvalidCriteria + , FT::InvalidProperty + , FT::CannotMeetCriteria + )) +{ + + ACE_DEBUG((LM_DEBUG,"EventChannelFactory_i::create_object\n")); + + FILE* file = fopen(conf_file, "r"); + if (file == NULL) + ACE_THROW_RETURN(FT::NoFactory(), CORBA::Object::_nil()); + + ScopeGuard file_guard = MakeGuard(fclose, file); + ACE_UNUSED_ARG(file_guard); + + char *id=0, *prog=0; + ACE_Read_Buffer read_buf(file); + ScopeGuard id_guard = MakeObjGuard(* ACE_Allocator::instance(), + &ACE_Allocator::free, id); + ACE_UNUSED_ARG(id_guard); + + ScopeGuard prog_guard = MakeObjGuard(* ACE_Allocator::instance(), + &ACE_Allocator::free, prog); + ACE_UNUSED_ARG(prog_guard); + + while ((id = read_buf.read(' ')) != NULL && + (prog = read_buf.read('\n')) != NULL) { + id[strlen(id)-1] = '\0'; + if (strcmp(id, type_id) == 0) { + return create_process(prog, the_criteria, factory_creation_id); + } + } + + ACE_THROW_RETURN(FT::ObjectNotCreated(), CORBA::Object::_nil()); +} + +void EventChannelFactory_i::delete_object ( + const FT::GenericFactory::FactoryCreationId & factory_creation_id + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + , FT::ObjectNotFound + )) +{ + ACE_TRACE("EventChannelFactory_i::delete_object"); + CORBA::ULong object_id; + factory_creation_id >>= object_id; + CORBA::Object_var obj; + if (objects.find(object_id, obj) == 0) { + objects.unbind(object_id); + //obj->shutdown(ACE_ENV_SINGLE_ARG_PARAMETER); + } +} + +CORBA::Object_ptr EventChannelFactory_i::create_process ( + char * process_str, + const FT::Criteria & the_criteria, + FT::GenericFactory::FactoryCreationId_out factory_creation_id) +{ + ACE_TRACE("EventChannelFactory_i::create_prcess"); + + CORBA::Object_ptr result = CORBA::Object::_nil(); + + // fill the factory_creation_id + + ACE_NEW_RETURN(factory_creation_id, + FT::GenericFactory::FactoryCreationId, + CORBA::Object::_nil()); + *factory_creation_id <<= (CORBA::ULong) ++id; + + // create an acceptor and get the listen address + + ACE_SOCK_Acceptor acceptor; + ACE_INET_Addr server_addr; + acceptor.open(server_addr); + acceptor.get_local_addr(server_addr); + + ACE_Process_Options options; + ACE_CString str; + + char* pos = ACE_OS::strrchr(process_str, '/'); + if (pos !=0) { // + *pos = '\0'; + options.working_directory(process_str); + *pos = '/'; + } + str = process_str; + + const int ENV_BUF_LEN = 512; + char buf[ENV_BUF_LEN]; + server_addr.addr_to_string(buf,ENV_BUF_LEN,0); + options.setenv("EventChannelFactoryAddr", buf); + + // extract the object ID from the criteria + for (size_t i = 0; i < the_criteria.length(); ++i) + { + const CosNaming::Name& name = the_criteria[i].nam; + if (name.length() > 0) { + const char* val; + const char* id = name[0].id.in(); + the_criteria[i].val >>= val; + if (id[0] != '-') // environment variable + options.setenv(id, "%s", val); + else {// command line option + ACE_OS::sprintf(buf, " %s %s", id, val); + str += buf; + } + } + } + + ACE_DEBUG((LM_DEBUG, "Command Line : %s\n", str.c_str())); + + options.command_line(str.c_str()); + + // Try to create a new process running date. + ACE_Process new_process; + + ACE_Time_Value timeout(WAIT_FOR_REGISTRATION_TIME); + timeout += ACE_OS::gettimeofday(); + if (new_process.spawn (options) == -1) + { + int error = ACE_OS::last_error (); + ACE_ERROR ((LM_ERROR, + "%p errno = %d.\n", + str.c_str(), + error)); + return result; + } + + ACE_INET_Addr client_addr; + ACE_SOCK_Stream stream; + + ACE_DEBUG((LM_DEBUG, "accepting connection from event channel\n")); + if (acceptor.accept(stream, &client_addr, &timeout) != -1) + { + ACE_DEBUG((LM_DEBUG, "Factory Connect established with %s:%d\n", + client_addr.get_host_name(), client_addr.get_port_number() )); + + // receive the ior string from the created object + + char ior[5000] = {'0'}; + int n = 0; + int byteRead=0; + while ((n = stream.recv(ior+byteRead, 5000-byteRead))) { + byteRead += n; + } + + if (strlen(ior) ==0) + return result; + + + CORBA::Object_var result = orb->string_to_object(ior + ACE_ENV_ARG_PARAMETER); + + ACE_CHECK_RETURN(result); + + if (objects.bind(id, result) ==0){ + return result._retn(); + } + } + else { + ACE_DEBUG((LM_DEBUG,"accept fail\n")); + } + + return result; +} + diff --git a/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/EventChannelFactory_i.h b/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/EventChannelFactory_i.h new file mode 100644 index 00000000000..9ceba6abc3b --- /dev/null +++ b/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/EventChannelFactory_i.h @@ -0,0 +1,65 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file EventChannelFactory_i.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef EVENTCHANNELFACTORY_I_H +#define EVENTCHANNELFACTORY_I_H + +#include "orbsvcs/FT_CORBAS.h" +#include "ace/Synch.h" +#include "ace/Hash_Map_Manager_T.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class EventChannelFactory_i : public POA_FT::GenericFactory { +public: + EventChannelFactory_i(const char* conf_filename, CORBA::ORB_ptr); + + virtual CORBA::Object_ptr create_object ( + const char * type_id, + const FT::Criteria & the_criteria, + FT::GenericFactory::FactoryCreationId_out factory_creation_id + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + , FT::NoFactory + , FT::ObjectNotCreated + , FT::InvalidCriteria + , FT::InvalidProperty + , FT::CannotMeetCriteria + )) ; + + virtual void delete_object ( + const FT::GenericFactory::FactoryCreationId & factory_creation_id + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + , FT::ObjectNotFound + )); + +private: + CORBA::Object_ptr create_process ( + char * process, + const FT::Criteria & the_criteria, + FT::GenericFactory::FactoryCreationId_out factory_creation_id); + + const char* conf_file; + int id; + CORBA::ORB_ptr orb; + typedef ACE_Hash_Map_Manager<int, CORBA::Object_var, ACE_Null_Mutex> Objects; + Objects objects; +}; +#endif + diff --git a/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/FTRTEC_Factory_Service.cpp b/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/FTRTEC_Factory_Service.cpp new file mode 100644 index 00000000000..0a68d5fcdf5 --- /dev/null +++ b/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/FTRTEC_Factory_Service.cpp @@ -0,0 +1,157 @@ +// $Id$ + +#include "EventChannelFactory_i.h" +#include "ace/Task.h" +#include "ace/SString.h" +#include "ace/Get_Opt.h" + +ACE_RCSID (Factory_Service, + FTRTEC_Factory_Service, + "$Id$") + +namespace { + ACE_CString id, kind, output; +} + +int parse_args(int argc, char* argv[]) +{ + ACE_Get_Opt get_opt (argc, argv, ACE_LIB_TEXT("i:k:o:")); + int opt; + + int result = 0; + while ((opt = get_opt ()) != EOF) + { + switch (opt) + { + case 'i': + id = get_opt.opt_arg (); + break; + case 'k': + kind = get_opt.opt_arg (); + break; + case 'o': + output = get_opt.opt_arg (); + break; + default: + result = -1; + break; + } + } + + if (result == -1 || (id.length() == 0 && output.length() == 0)) + { + ACE_DEBUG ((LM_DEBUG, + ACE_LIB_TEXT("Usage: %s \n") + ACE_LIB_TEXT(" [-i id] set the id that is used to register to the naming service\n") + ACE_LIB_TEXT(" [-k kind] set the kind that is used to register to the naming service\n") + ACE_LIB_TEXT(" [-o filename] set the output file name for the IOR\n") + ACE_LIB_TEXT("\n"), + argv[0])); + return -1; + } + return 0; +} + +int main(int argc, ACE_TCHAR* argv[]) +{ + + ACE_DECLARE_NEW_CORBA_ENV; + ACE_TRY { + CORBA::ORB_var orb = CORBA::ORB_init(argc, argv + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + + if (parse_args(argc, argv) == -1) + return -1; + + CORBA::Object_var obj = + orb->resolve_initial_references("RootPOA" + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + PortableServer::POA_var poa = + PortableServer::POA::_narrow(obj.in() + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + PortableServer::POAManager_var mgr = poa->the_POAManager(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + mgr->activate(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + EventChannelFactory_i servant("factory.cfg", orb.in()); + + FT::GenericFactory_var event_channel_factory = + servant._this(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + // register to the Event Service + + if (id.length()) { + CORBA::Object_var namng_contex_object = + orb->resolve_initial_references("NameService" + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + CosNaming::NamingContext_var naming_context = + CosNaming::NamingContext::_narrow(namng_contex_object.in() + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + // register to naming service + CosNaming::Name name(1); + name.length(1); + name[0].id = CORBA::string_dup(id.c_str()); + if (kind.length()) + name[0].kind = CORBA::string_dup(kind.c_str()); + + naming_context->bind(name, event_channel_factory.in() + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + ACE_DEBUG((LM_DEBUG, "Register to naming service with %s", id.c_str())); + if (kind.length()) + ACE_DEBUG((LM_DEBUG, ", %s", kind.c_str())); + ACE_DEBUG((LM_DEBUG,"\n")); + } + + if (output.length()) { + // get the IOR of factory + CORBA::String_var str = orb->object_to_string(event_channel_factory.in() + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (ACE_OS::strcmp(output.c_str(), "") != 0) + { + FILE *output_file= + ACE_OS::fopen (ACE_TEXT_CHAR_TO_TCHAR(output.c_str()), + ACE_LIB_TEXT("w")); + if (output_file == 0) + ACE_ERROR_RETURN ((LM_ERROR, + "Cannot open output file for writing IOR: %s", + output.c_str()), + 1); + ACE_OS::fprintf (output_file, "%s", str.in ()); + ACE_OS::fclose (output_file); + } + } + + ACE_TRY_CHECK; + + orb->run(ACE_ENV_SINGLE_ARG_PARAMETER); + + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, "A CORBA Exception occurred."); + } + ACE_ENDTRY; + + + ACE_CHECK_RETURN(1); + + return 0; +} + diff --git a/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/FTRTEC_Factory_Service.mpc b/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/FTRTEC_Factory_Service.mpc new file mode 100644 index 00000000000..55b7f390558 --- /dev/null +++ b/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/FTRTEC_Factory_Service.mpc @@ -0,0 +1,11 @@ +project(FTRTEC_Factory_Service): orbsvcsexe, ftorbutils, notify { + after += FaultTolerance + exename = ftrtec_factory_service + includes += $(TAO_ROOT)/orbsvcs + libs += TAO_FaultTolerance + + specific(gnuace) { + lit_libs += TAO_Strategies + } +} + diff --git a/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/factory.cfg b/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/factory.cfg new file mode 100644 index 00000000000..021110f6781 --- /dev/null +++ b/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/factory.cfg @@ -0,0 +1,2 @@ +IDL:FtRtecEventChannelAdmin/EventChannel:1.0 ../FTRT_Event_Service/ftrt_eventservice +IDL:RtecEventChannelAdmin/EventChannel:1.0 ../FTRT_Event_Service/ftrt_eventservice
\ No newline at end of file diff --git a/TAO/orbsvcs/FTRT_Event_Service/Gateway_Service/FTRTEC_Gateway_Service.cpp b/TAO/orbsvcs/FTRT_Event_Service/Gateway_Service/FTRTEC_Gateway_Service.cpp new file mode 100644 index 00000000000..9178b08b0be --- /dev/null +++ b/TAO/orbsvcs/FTRT_Event_Service/Gateway_Service/FTRTEC_Gateway_Service.cpp @@ -0,0 +1,134 @@ +// $Id$ + +#include "ace/Get_Opt.h" +#include "orbsvcs/FtRtEvent/Utils/FTEC_Gateway.h" +#include "orbsvcs/FtRtEvent/Utils/resolve_init.h" +/// include this file to statically linked with FT ORB +#include "orbsvcs/FaultTolerance/FT_ClientService_Activate.h" + +/// include this file to statically linked with Transaction Depth +#include "orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Loader.h" + +ACE_RCSID (Gateway_Service, + FTRTEC_Gateway_Service, + "$Id$") + + +namespace { + CORBA::ORB_var orb; + FtRtecEventChannelAdmin::EventChannel_var ftec; + ACE_CString ior_file_name; +} + +int parse_args(int argc, ACE_TCHAR** argv) +{ + ACE_TRY_NEW_ENV { + ACE_Get_Opt get_opt (argc, argv, ACE_LIB_TEXT("i:n:o:")); + int opt; + CosNaming::Name name(1); + name.length(1); + name[0].id = CORBA::string_dup("FT_EventService"); + + while ((opt = get_opt ()) != EOF) + { + switch (opt) + { + case 'i': + { + CORBA::Object_var obj = orb->string_to_object(get_opt.opt_arg () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + ftec = FtRtecEventChannelAdmin::EventChannel::_narrow(obj.in() + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + } + break; + case 'n': + name[0].id = CORBA::string_dup(get_opt.opt_arg ()); + break; + case 'o': + ior_file_name = get_opt.opt_arg (); + break; + } + } + + if (CORBA::is_nil(ftec.in())) { + /// we should get the ftec from Naming Service + + CosNaming::NamingContext_var naming_context = + resolve_init<CosNaming::NamingContext>(orb.in(), "NameService" + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + ftec = resolve<FtRtecEventChannelAdmin::EventChannel>(naming_context.in(), + name + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (CORBA::is_nil(ftec.in())) + ACE_ERROR_RETURN((LM_ERROR, "Cannot Find FT_EventService\n"), -1); + } + } + ACE_CATCHANY { + ACE_ERROR_RETURN((LM_ERROR, "Cannot Find FT_EventService\n"), -1); + } + ACE_ENDTRY; + return 0; +} + +int main(int argc, ACE_TCHAR** argv) +{ + ACE_TRY_NEW_ENV + { + orb = CORBA::ORB_init (argc, argv ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (parse_args(argc, argv)==-1) + return 1; + + PortableServer::POA_var + root_poa = resolve_init<PortableServer::POA>(orb.in(), "RootPOA" + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + // create POAManager + PortableServer::POAManager_var + mgr = root_poa->the_POAManager(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + + mgr->activate(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + TAO_FTRTEC::FTEC_Gateway gateway_servant(orb.in(), ftec.in()); + + RtecEventChannelAdmin::EventChannel_var gateway = + gateway_servant.activate(root_poa.in() ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (ior_file_name.length()) + { + CORBA::String_var str = orb->object_to_string(gateway.in() + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + FILE *output_file= + ACE_OS::fopen (ACE_TEXT_CHAR_TO_TCHAR(ior_file_name.c_str()), + ACE_LIB_TEXT("w")); + if (output_file == 0) + ACE_ERROR_RETURN ((LM_ERROR, + "Cannot open output file for writing IOR: %s", + ior_file_name.c_str()), + 1); + ACE_OS::fprintf (output_file, "%s", str.in ()); + ACE_OS::fclose (output_file); + } + + orb->run(ACE_ENV_SINGLE_ARG_PARAMETER); + } + ACE_CATCHANY { + return 1; + } + ACE_ENDTRY; + return 0; +} diff --git a/TAO/orbsvcs/FTRT_Event_Service/Gateway_Service/FTRTEC_Gateway_Service.mpc b/TAO/orbsvcs/FTRT_Event_Service/Gateway_Service/FTRTEC_Gateway_Service.mpc new file mode 100644 index 00000000000..7c21a4791f3 --- /dev/null +++ b/TAO/orbsvcs/FTRT_Event_Service/Gateway_Service/FTRTEC_Gateway_Service.mpc @@ -0,0 +1,9 @@ + project(FTRTEC_Gateway_Service): orbsvcsexe, ftrteventclient { + exename = ftrtec_gateway_service + includes += $(TAO_ROOT)/orbsvcs $(TAO_ROOT)/orbsvcs/FtRtEvent/Utils + + specific(gnuace) { + lit_libs += TAO_Strategies + } +} + diff --git a/TAO/orbsvcs/FTRT_Event_Service/Gateway_Service/FTRTEC_Gateway_Service.vcproj b/TAO/orbsvcs/FTRT_Event_Service/Gateway_Service/FTRTEC_Gateway_Service.vcproj new file mode 100644 index 00000000000..6118f0e5269 --- /dev/null +++ b/TAO/orbsvcs/FTRT_Event_Service/Gateway_Service/FTRTEC_Gateway_Service.vcproj @@ -0,0 +1,256 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.10" + Name="FTRTEC_Gateway_Service" + ProjectGUID="{D8031178-FECA-1BAD-5E2D-9A151D7DAA67}" + SccProjectName="" + SccLocalPath=""> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Release|Win32" + OutputDirectory="Release" + IntermediateDirectory="Release/FTRTEC_Gateway_Service" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="..\..\..\orbsvcs\FtRtEvent\Utils,..\..\..\orbsvcs,..\..\..,..\..\..\tao,..\..\..\.." + PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE" + MinimalRebuild="FALSE" + ExceptionHandling="TRUE" + RuntimeLibrary="2" + BufferSecurityCheck="TRUE" + EnableFunctionLevelLinking="TRUE" + TreatWChar_tAsBuiltInType="TRUE" + ForceConformanceInForLoopScope="TRUE" + RuntimeTypeInfo="TRUE" + WarningLevel="3" + SuppressStartupBanner="TRUE" + Detect64BitPortabilityProblems="FALSE" + DebugInformationFormat="3"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="TAO_FTRT_ClientORB.lib TAO_FtRtEvent.lib TAO_CosNaming.lib TAO_IORTable.lib TAO_RTEvent.lib TAO_Svc_Utils.lib TAO_Messaging.lib TAO_FT_ClientORB.lib TAO_FTORB_Utils.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO_IORManip.lib TAO.lib ACE.lib" + OutputFile="$(OutDir)/ftrtec_gateway_service.exe" + Version="1.3.4" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="..\..\..\..\lib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile="$(OutDir)/ftrtec_gateway_service.pdb" + SubSystem="1" + OptimizeReferences="2" + EnableCOMDATFolding="2" + /> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033" + AdditionalIncludeDirectories="..\..\..\orbsvcs\FtRtEvent\Utils,..\..\..\orbsvcs,..\..\..,..\..\..\tao,..\..\..\.."/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + </Configuration> + <Configuration + Name="Debug|Win32" + OutputDirectory="." + IntermediateDirectory="Debug/FTRTEC_Gateway_Service" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="..\..\..\orbsvcs\FtRtEvent\Utils,..\..\..\orbsvcs,..\..\..,..\..\..\tao,..\..\..\.." + PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE" + MinimalRebuild="FALSE" + ExceptionHandling="TRUE" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + BufferSecurityCheck="TRUE" + EnableFunctionLevelLinking="TRUE" + TreatWChar_tAsBuiltInType="TRUE" + ForceConformanceInForLoopScope="TRUE" + RuntimeTypeInfo="TRUE" + WarningLevel="3" + SuppressStartupBanner="TRUE" + Detect64BitPortabilityProblems="FALSE" + DebugInformationFormat="3"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="TAO_FTRT_ClientORBd.lib TAO_FtRtEventd.lib TAO_CosNamingd.lib TAO_IORTabled.lib TAO_RTEventd.lib TAO_Svc_Utilsd.lib TAO_Messagingd.lib TAO_FT_ClientORBd.lib TAO_FTORB_Utilsd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAO_IORManipd.lib TAOd.lib ACEd.lib" + OutputFile="$(OutDir)/ftrtec_gateway_service.exe" + Version="1.3.4" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="..\..\..\..\lib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile="$(OutDir)/ftrtec_gateway_service.pdb" + SubSystem="1" + /> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033" + AdditionalIncludeDirectories="..\..\..\orbsvcs\FtRtEvent\Utils,..\..\..\orbsvcs,..\..\..,..\..\..\tao,..\..\..\.."/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + </Configuration> + <Configuration + Name="Static Release|Win32" + OutputDirectory="Static_Release" + IntermediateDirectory="Static_Release/FTRTEC_Gateway_Service" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="..\..\..\orbsvcs\FtRtEvent\Utils,..\..\..\orbsvcs,..\..\..,..\..\..\tao,..\..\..\.." + PreprocessorDefinitions="TAO_AS_STATIC_LIBS;TAO_AS_STATIC_LIBS;ACE_AS_STATIC_LIBS;NDEBUG;WIN32;_CONSOLE" + MinimalRebuild="FALSE" + ExceptionHandling="TRUE" + RuntimeLibrary="2" + BufferSecurityCheck="TRUE" + EnableFunctionLevelLinking="TRUE" + TreatWChar_tAsBuiltInType="TRUE" + ForceConformanceInForLoopScope="TRUE" + RuntimeTypeInfo="TRUE" + WarningLevel="3" + SuppressStartupBanner="TRUE" + Detect64BitPortabilityProblems="FALSE" + DebugInformationFormat="3"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="TAO_FTRT_ClientORBs.lib TAO_FtRtEvents.lib TAO_CosNamings.lib TAO_IORTables.lib TAO_RTEvents.lib TAO_Svc_Utilss.lib TAO_Messagings.lib TAO_FT_ClientORBs.lib TAO_FTORB_Utilss.lib TAO_PortableServers.lib TAO_IORInterceptors.lib TAO_Valuetypes.lib TAO_ObjRefTemplates.lib TAO_IORManips.lib TAOs.lib ACEs.lib" + OutputFile="$(OutDir)/ftrtec_gateway_service.exe" + Version="1.3.4" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="..\..\..\..\lib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile="$(OutDir)/ftrtec_gateway_service.pdb" + SubSystem="1" + OptimizeReferences="2" + EnableCOMDATFolding="2" + /> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033" + AdditionalIncludeDirectories="..\..\..\orbsvcs\FtRtEvent\Utils,..\..\..\orbsvcs,..\..\..,..\..\..\tao,..\..\..\.."/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + </Configuration> + <Configuration + Name="Static Debug|Win32" + OutputDirectory="Static_Debug" + IntermediateDirectory="Static_Debug/FTRTEC_Gateway_Service" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="..\..\..\orbsvcs\FtRtEvent\Utils,..\..\..\orbsvcs,..\..\..,..\..\..\tao,..\..\..\.." + PreprocessorDefinitions="TAO_AS_STATIC_LIBS;TAO_AS_STATIC_LIBS;ACE_AS_STATIC_LIBS;_DEBUG;WIN32;_CONSOLE" + MinimalRebuild="FALSE" + ExceptionHandling="TRUE" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + BufferSecurityCheck="TRUE" + EnableFunctionLevelLinking="TRUE" + TreatWChar_tAsBuiltInType="TRUE" + ForceConformanceInForLoopScope="TRUE" + RuntimeTypeInfo="TRUE" + WarningLevel="3" + SuppressStartupBanner="TRUE" + Detect64BitPortabilityProblems="FALSE" + DebugInformationFormat="3"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="TAO_FTRT_ClientORBsd.lib TAO_FtRtEventsd.lib TAO_CosNamingsd.lib TAO_IORTablesd.lib TAO_RTEventsd.lib TAO_Svc_Utilssd.lib TAO_Messagingsd.lib TAO_FT_ClientORBsd.lib TAO_FTORB_Utilssd.lib TAO_PortableServersd.lib TAO_IORInterceptorsd.lib TAO_Valuetypesd.lib TAO_ObjRefTemplatesd.lib TAO_IORManipsd.lib TAOsd.lib ACEsd.lib" + OutputFile="$(OutDir)/ftrtec_gateway_service.exe" + Version="1.3.4" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="..\..\..\..\lib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile="$(OutDir)/ftrtec_gateway_service.pdb" + SubSystem="1" + /> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033" + AdditionalIncludeDirectories="..\..\..\orbsvcs\FtRtEvent\Utils,..\..\..\orbsvcs,..\..\..,..\..\..\tao,..\..\..\.."/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + </Configuration> + </Configurations> + <Files> + <Filter + Name="Source Files" + Filter="cpp;cxx;cc;C;c"> + <File + RelativePath=".\FTRTEC_Gateway_Service.cpp"> + </File> + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/TAO/orbsvcs/FTRT_Event_Service/NameService b/TAO/orbsvcs/FTRT_Event_Service/NameService new file mode 100755 index 00000000000..4e599cf9a44 --- /dev/null +++ b/TAO/orbsvcs/FTRT_Event_Service/NameService @@ -0,0 +1,17 @@ +#!/bin/sh + +case $# in + 0) ARG="-multicast";; + 1) ARG=$1 +esac + +case "$ARG" in + -multicast) PARAM="-m 1";; + -iiop) PARAM=iiop://`hostname`:${ORBNameServicePort=10000};; + -sciop) PARAM=sciop://`hostname`:${ORBNameServicePort=10000};; + *) + @echo Usage : NameService [-iiop | -sciop] 2&>1 ; exit 2 + +esac + +$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service -d -d -d -ORBEndPoint "$PARAM" diff --git a/TAO/orbsvcs/FTRT_Event_Service/Readme b/TAO/orbsvcs/FTRT_Event_Service/Readme new file mode 100644 index 00000000000..90d8280b3a0 --- /dev/null +++ b/TAO/orbsvcs/FTRT_Event_Service/Readme @@ -0,0 +1,147 @@ + +This directory contains the following programs: + + ftrt_eventservice : Implements the functionality of fault tolerant event channel. + It can be started directly or be started by the ft_factory. + + ftrtec_factory_service : A program used to spawn the ftrt_eventservice process. The process it + create can be controled through "test.cfg" whose contents should begin with the + repository id of EventChannel followed by the executable path of + ftrt_eventservice. + + ftrtec_gateway_service : An intermediator program between the ftrt_eventservice and the clients which do not support FT CORBA. + + consumer : A shell script to start the consumer test program. The actual consumer pragram is in orbsvcs/tests/FtRtEvent. + + supplier : A shell script to start the supplier test program. The actual supplier pragram is in orbsvcs/tests/FtRtEvent. + + ftec : a shell script to start ftrt_eventservice. + +Quick start: + + Run the applications as follows: + + + 1. Start Naming_Service + $ $TAO_ROOT/orbsvcs/Naming_Service/Naming_Service -m 1 + or you can use the shell script NameService in this directory to start it. + + 2. Start the ftrt_eventservice. Use the "-p" option to start it as a primary and + use the "-j" option to start it as a backup. + + $ ./ftec -p + $ ./ftec -j + $ ./ftec -j + + + 3. Start the consumer and supplier. + $ ./consumer + $ ./supplier + +How do we add a new FTRTEC to the system? + + Just use + + ./ftec -j + + The newly created process will contact to the naming service and then join to + the existing object group. + +Is there any adjustable options for FTRTEC? + + Here is the list of options for the ftec script + + -sciop Use SCIOP for CORBA communication + -sctp Use SCTP for fault detection + -hb n Specify the heart beat interval in sec + for SCTP connection, this option also activate sctp option. + -ami Use AMI call for replication messages (The default is + two-way CORBA call for replication) + -p activate as a primary replica. + -j activate as a backup replica. + + + Below are some options that are used for the consumer and supplier + test scripts. + + -sciop Use SCIOP for CORBA communication. This requires that the Naming + Service and ftec are also started using SCIOP transport protocol. + + -d n Specify the transaction depth. The transaction depth indicates the + number of replicas that must complete the subscription request before + the request can return. + + -t f.f For supplier only. Specify the time interval between event sending + in seconds, this value should be a float point. + + If you the naming service are not running at the same machine with above programs, + you can always set the environmental variables NameServiceIOR before starting the + ftec, consumer or supplier. + + + How do I start the FTRTEC using ftrtec_factory_service? + + The ftrtec_factory_service is a small program that can instaniate a ftrt_eventservice on demand. + It exports the FT::GenericFactory interface to its client. There are two ways that + you can get the IOR for the factory object. 1) specify the name you want the factory + register to the naming service and then get the IOR from the naming service by + the name. 2) output the IOR to a file when the factory starts. Here are the options + + ftrtec_factory_service : + + -i id_string The id field of the name that is used to register to the naming service + -k kind_string The kind field of the name that is used to register to the naming service + -o output_filename The output file name for the factory IOR. + +Once you get the IOR for the factory, you can use create_object to intantiate the ftrt_eventservice. +Here are the parameters in create_object() to control how ftrt_eventservice is created. + + type_id : this value should be "IDL:FtRtecEventChannelAdmin/EventChannel:1.0" + the_criteria : the_criteria is a sequence of Property which in term consists of + "nam" and "value". Below a a list of possible nam and values. + + nam value + ========================================================================== + FTEC_MEMBERSHIP PRIMARY + BACKUP + NONE + ---------------------------------------------------------------------- + FTEC_DETECTOR_TRANSPORT_PROTOCL TCP + SCTP + ----------------------------------------------------------------------- + FTEC_HEART_BEAT the heart beat value in sec. + (Note, you have to specify it using string, i.e. + the_criteria[0].value <<= "5"); + --------------------------------------------------------------------------------- + FTEC_REPLICATION_STRATEGY AMI + + (If not specified, the ftrt_eventservice use default + two-way call for replication) + ---------------------------------------------------------------------------------- + NameServieIOR the corbaloc representation for the + naming service + ======================================================================================= + + Any nam string started with "-" will be used as a command line option to start ftrt_eventservice. + For example, if you specfiy the name as "-ORBEndpoint" and value as "sciop://" then the + ftrt_eventservice can be started using sciop. + +How do I use the ftrtec_gateway_service program ? + + The FTRTEC uses some features in FT CORBA that requires every client to use FT ORB to work. If your + client is written based other ORBs other than TAO. You cannot get the desired fault tolerance feature. + In this case you can have the ftec_gateway as an intermediator between the FTRTEC and you client program. + For example, if you have an existing client called my_supplier. + + # setting up the event channel group as previously stated. + + $ftrtec_gateway_service -o gateway.ior ## start the gateway and output the IOR of the gateway to a file + $my_supplier -i file://gateway.ior ## start the supplier using the gateway + + + + + + + + diff --git a/TAO/orbsvcs/FTRT_Event_Service/consumer b/TAO/orbsvcs/FTRT_Event_Service/consumer new file mode 100755 index 00000000000..eec89bc5e69 --- /dev/null +++ b/TAO/orbsvcs/FTRT_Event_Service/consumer @@ -0,0 +1,22 @@ +#!/bin/sh + +HOSTNAME=`hostname` +EndpintParam= +FTEC_TransactionDepth=${FTEC_TransactionDepth=1} + + +while test "$1" != "" +do + case "$1" in + -sciop) ORBNameServicePort=${ORBNameServicePort=10000} + export NameServiceIOR=${NameServiceIOR=corbaloc:sciop:$HOSTNAME:$ORBNameServicePort/NameService} + EndpointParam="-ORBEndpoint sciop://";; + -d) $FTEC_TransactionDepth=$2 + shift;; + esac + shift +done + +cd $TAO_ROOT/orbsvcs/tests/FtRtEvent +export FTEC_TransactionDepth +./consumer $EndpointParam diff --git a/TAO/orbsvcs/FTRT_Event_Service/ftec b/TAO/orbsvcs/FTRT_Event_Service/ftec new file mode 100755 index 00000000000..390c1af594a --- /dev/null +++ b/TAO/orbsvcs/FTRT_Event_Service/ftec @@ -0,0 +1,25 @@ +#!/bin/sh +HOSTNAME=`hostname` +ARGS= + +while test "$1" != "" +do + case "$1" in + -sciop) ORBNameServicePort=${ORBNameServicePort=10000} + export NameServiceIOR=${NameServiceIOR=corbaloc:sciop:$HOSTNAME:$ORBNameServicePort/NameService} + ARGS="$ARGS -ORBEndpoint sciop:// ";; + -sctp) export FTEC_DETECTOR_TRANSPORT_PROTOCOL=sctp ;; + -hb) export FTEC_DETECTOR_TRANSPORT_PROTOCOL=sctp + export FTEC_HEART_BEAT=$2 + shift;; + -ami) export FTEC_REPLCATION_STRATEGY=AMI;; + -p) ARGS="$ARGS -p";; + -j) ARGS="$ARGS -j";; + -ns) ORBNameServicePort=${ORBNameServicePort=10000} + export NameServiceIOR=${NameServiceIOR=corbaloc:iiop:$2:$ORBNameServicePort/NameService}; + shift;; + esac + shift +done +cd ./Event_Service +./ftrt_eventservice $ARGS diff --git a/TAO/orbsvcs/FTRT_Event_Service/supplier b/TAO/orbsvcs/FTRT_Event_Service/supplier new file mode 100755 index 00000000000..96c63a29e90 --- /dev/null +++ b/TAO/orbsvcs/FTRT_Event_Service/supplier @@ -0,0 +1,21 @@ +#!/bin/sh + +HOSTNAME=`hostname` +EndpintParam= +FTEC_TransactionDepth=${FTEC_TransactionDepth=1} + +while test "$1" != "" +do + case "$1" in + -sciop) ORBNameServicePort=${ORBNameServicePort=10000} + export NameServiceIOR=${NameServiceIOR=corbaloc:sciop:$HOSTNAME:$ORBNameServicePort/NameService} + EndpointParam="-ORBEndpoint sciop://";; + -d) $FTEC_TransactionDepth=$2 + shift;; + esac + shift +done + +cd $TAO_ROOT/orbsvcs/tests/FtRtEvent +export FTEC_TransactionDepth +./supplier $EndpointParam diff --git a/TAO/orbsvcs/LoadBalancer/LoadMonitor.cpp b/TAO/orbsvcs/LoadBalancer/LoadMonitor.cpp index 45a1685ec94..79c705426db 100644 --- a/TAO/orbsvcs/LoadBalancer/LoadMonitor.cpp +++ b/TAO/orbsvcs/LoadBalancer/LoadMonitor.cpp @@ -2,7 +2,6 @@ #include "Monitor_Signal_Handler.h" #include "orbsvcs/LoadBalancing/LB_CPU_Monitor.h" -#include "orbsvcs/LoadBalancing/LB_conf.h" #include "tao/ORB_Core.h" @@ -19,10 +18,7 @@ static const char * location_kind = 0; static const char * mtype = "CPU"; static const char * mstyle = "PUSH"; static const char * custom_monitor_ior = 0; - -// For the sake of consistency, make default push monitoring interval -// the same as the pull monitoring interval. -static long push_interval = TAO_LB_PULL_HANDLER_INTERVAL; +static long push_interval = 15; void usage (const ACE_TCHAR * cmd) @@ -38,6 +34,7 @@ usage (const ACE_TCHAR * cmd) ACE_TEXT (" and requires \"PUSH\" style monitoring)\n") ACE_TEXT (" -m <custom_monitor_ior>") ACE_TEXT (" (overrides \"-t\", \"-l\" and \"-k\")\n") + ACE_TEXT (" -o <ior_output_file>\n") ACE_TEXT (" -h\n") ACE_TEXT ("\n"), cmd)); @@ -281,6 +278,7 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; + CosLoadBalancing::LoadMonitor_var load_monitor = ::get_load_monitor (orb.in (), root_poa.in () diff --git a/TAO/orbsvcs/PSS/Makefile.parser b/TAO/orbsvcs/PSS/Makefile.parser index 0322e1acc2b..0c0786c15a1 100644 --- a/TAO/orbsvcs/PSS/Makefile.parser +++ b/TAO/orbsvcs/PSS/Makefile.parser @@ -10,7 +10,7 @@ endif # ! TAO_ROOT MAKEFILE = Makefile.parser SRC = Dump_Visitor.cpp psdl_tao.cpp -LDLIBS = -lTAO_PSDL -lTAO_PortableServer -lTAO_ObjRefTemplate -lTAO_Valuetype -lTAO_IORInterceptor -lTAO -lACE +LDLIBS = -lTAO_PSDL -lTAO_PortableServer -lTAO -lACE BIN = psdl_tao diff --git a/TAO/orbsvcs/Scheduling_Service/Scheduling_Service.cpp b/TAO/orbsvcs/Scheduling_Service/Scheduling_Service.cpp index bfe7bbc8d9f..39e96a45d3b 100644 --- a/TAO/orbsvcs/Scheduling_Service/Scheduling_Service.cpp +++ b/TAO/orbsvcs/Scheduling_Service/Scheduling_Service.cpp @@ -337,15 +337,15 @@ template class ACE_RB_Tree_Node<const char *, TAO_RT_Info_Ex*>; template class ACE_RB_Tree_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>; template class ACE_RB_Tree_Iterator_Base<char const *, TAO_RT_Info_Ex*, ACE_Less_Than<char const *>, TAO_SYNCH_MUTEX>; template class ACE_RB_Tree_Reverse_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>; -template class TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Dependency_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_DFS_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Priority_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_Tuple_Admission_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy>; -template class TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Dependency_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_DFS_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Priority_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_Tuple_Admission_Visitor<TAO_MUF_Reconfig_Sched_Strategy>; +template class TAO_RSE_SCC_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; # endif /* __GNUC__ */ #elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) #if (! defined (__GNUC__)) || (__GNUC__ > 2) || \ @@ -386,14 +386,14 @@ template class TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYN #pragma instantiate ACE_RB_Tree_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX> #pragma instantiate ACE_RB_Tree_Iterator_Base<char const *, TAO_RT_Info_Ex*, ACE_Less_Than<char const *>, TAO_SYNCH_MUTEX> #pragma instantiate ACE_RB_Tree_Reverse_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Dependency_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_DFS_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Priority_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_Tuple_Admission_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy> -#pragma instantiate TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Dependency_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_DFS_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Priority_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_Tuple_Admission_Visitor<TAO_MUF_Reconfig_Sched_Strategy> +#pragma instantiate TAO_RSE_SCC_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> # endif /* __GNUC__ */ #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/Scheduling_Service/Scheduling_Service.h b/TAO/orbsvcs/Scheduling_Service/Scheduling_Service.h index e76f5c63b15..d0abe1c26fd 100644 --- a/TAO/orbsvcs/Scheduling_Service/Scheduling_Service.h +++ b/TAO/orbsvcs/Scheduling_Service/Scheduling_Service.h @@ -66,7 +66,7 @@ private: #if (! defined (__GNUC__)) || (__GNUC__ > 2) || \ (__GNUC__ == 2 && defined (__GNUC_MINOR__) && __GNUC_MINOR__ >= 8) - typedef TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy, + typedef TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> RECONFIG_SCHED_TYPE; #endif /* __GNUC__ */ diff --git a/TAO/orbsvcs/examples/RtEC/Kokyu/Service.cpp b/TAO/orbsvcs/examples/RtEC/Kokyu/Service.cpp index c0f6314a1b3..80162528463 100644 --- a/TAO/orbsvcs/examples/RtEC/Kokyu/Service.cpp +++ b/TAO/orbsvcs/examples/RtEC/Kokyu/Service.cpp @@ -35,9 +35,9 @@ inline RtecScheduler::Period_t time_val_to_period (const ACE_Time_Value &tv) int parse_args (int argc, char *argv[]); -typedef TAO_Reconfig_Scheduler<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> RECONFIG_RMS_SCHED_TYPE; +typedef TAO_Reconfig_Scheduler<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> RECONFIG_RMS_SCHED_TYPE; -typedef TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> RECONFIG_MUF_SCHED_TYPE; +typedef TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> RECONFIG_MUF_SCHED_TYPE; int main (int argc, char* argv[]) @@ -574,24 +574,24 @@ template class ACE_RB_Tree_Node<const char *, TAO_RT_Info_Ex*>; template class ACE_RB_Tree_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>; template class ACE_RB_Tree_Iterator_Base<char const *, TAO_RT_Info_Ex*, ACE_Less_Than<char const *>, TAO_SYNCH_MUTEX>; template class ACE_RB_Tree_Reverse_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>; -template class TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Dependency_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_DFS_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Priority_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_Tuple_Admission_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy>; -template class TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_Reconfig_Scheduler<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Dependency_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_DFS_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Priority_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Criticality_Propagation_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Forward_Propagation_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Reverse_Propagation_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_Tuple_Admission_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy>; -template class TAO_RSE_SCC_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Dependency_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_DFS_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Priority_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_Tuple_Admission_Visitor<TAO_MUF_Reconfig_Sched_Strategy>; +template class TAO_RSE_SCC_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_Reconfig_Scheduler<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Dependency_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_DFS_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Priority_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Criticality_Propagation_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Forward_Propagation_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Reverse_Propagation_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_Tuple_Admission_Visitor<TAO_RMS_Reconfig_Sched_Strategy>; +template class TAO_RSE_SCC_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; # endif /* __GNUC__ */ #elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) #if (! defined (__GNUC__)) || (__GNUC__ > 2) || \ @@ -632,24 +632,24 @@ template class TAO_RSE_SCC_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYN #pragma instantiate ACE_RB_Tree_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX> #pragma instantiate ACE_RB_Tree_Iterator_Base<char const *, TAO_RT_Info_Ex*, ACE_Less_Than<char const *>, TAO_SYNCH_MUTEX> #pragma instantiate ACE_RB_Tree_Reverse_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Dependency_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_DFS_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Priority_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_Tuple_Admission_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy> -#pragma instantiate TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_Reconfig_Scheduler<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Dependency_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_DFS_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Priority_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Criticality_Propagation_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Forward_Propagation_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Reverse_Propagation_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_Tuple_Admission_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy> -#pragma instantiate TAO_RSE_SCC_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Dependency_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_DFS_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Priority_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_Tuple_Admission_Visitor<TAO_MUF_Reconfig_Sched_Strategy> +#pragma instantiate TAO_RSE_SCC_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_Reconfig_Scheduler<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Dependency_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_DFS_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Priority_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Criticality_Propagation_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Forward_Propagation_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Reverse_Propagation_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_Tuple_Admission_Visitor<TAO_RMS_Reconfig_Sched_Strategy> +#pragma instantiate TAO_RSE_SCC_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> # endif /* __GNUC__ */ #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/examples/RtEC/Schedule/Service.cpp b/TAO/orbsvcs/examples/RtEC/Schedule/Service.cpp index 9567a44a984..a2999d22f50 100644 --- a/TAO/orbsvcs/examples/RtEC/Schedule/Service.cpp +++ b/TAO/orbsvcs/examples/RtEC/Schedule/Service.cpp @@ -23,7 +23,7 @@ int config_run = 0; int parse_args (int argc, char *argv[]); -typedef TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> RECONFIG_SCHED_TYPE; +typedef TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> RECONFIG_SCHED_TYPE; int main (int argc, char* argv[]) @@ -464,15 +464,15 @@ template class ACE_RB_Tree_Node<const char *, TAO_RT_Info_Ex*>; template class ACE_RB_Tree_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>; template class ACE_RB_Tree_Iterator_Base<char const *, TAO_RT_Info_Ex*, ACE_Less_Than<char const *>, TAO_SYNCH_MUTEX>; template class ACE_RB_Tree_Reverse_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>; -template class TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Dependency_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_DFS_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Priority_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_Tuple_Admission_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy>; -template class TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Dependency_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_DFS_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Priority_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_Tuple_Admission_Visitor<TAO_MUF_Reconfig_Sched_Strategy>; +template class TAO_RSE_SCC_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; # endif /* __GNUC__ */ #elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) #if (! defined (__GNUC__)) || (__GNUC__ > 2) || \ @@ -513,14 +513,14 @@ template class TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYN #pragma instantiate ACE_RB_Tree_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX> #pragma instantiate ACE_RB_Tree_Iterator_Base<char const *, TAO_RT_Info_Ex*, ACE_Less_Than<char const *>, TAO_SYNCH_MUTEX> #pragma instantiate ACE_RB_Tree_Reverse_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Dependency_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_DFS_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Priority_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_Tuple_Admission_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy> -#pragma instantiate TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Dependency_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_DFS_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Priority_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_Tuple_Admission_Visitor<TAO_MUF_Reconfig_Sched_Strategy> +#pragma instantiate TAO_RSE_SCC_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> # endif /* __GNUC__ */ #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushSupplier.cpp b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushSupplier.cpp index 14855d5de9a..f6153df1220 100644 --- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushSupplier.cpp +++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushSupplier.cpp @@ -142,10 +142,10 @@ TAO_CEC_ProxyPushSupplier::shutdown (ACE_ENV_SINGLE_ARG_DECL) if (CORBA::is_nil (typed_consumer.in ())) return; - ACE_TRY_EX (typed) + ACE_TRY { typed_consumer->disconnect_push_consumer (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK_EX (typed); + ACE_TRY_CHECK; } ACE_CATCHANY { @@ -154,7 +154,7 @@ TAO_CEC_ProxyPushSupplier::shutdown (ACE_ENV_SINGLE_ARG_DECL) } ACE_ENDTRY; } /* this->is_typed_ec */ - else + else { #endif /* TAO_HAS_TYPED_EVENT_CHANNEL */ @@ -355,13 +355,13 @@ TAO_CEC_ProxyPushSupplier::connect_push_consumer ( // declared and obtained before the Guard to avoid deadlock during the // _is_a (during _narrow) and get_typed_consumer invocations. // They are eventually assigned onto this object inside the Guard. - CosTypedEventComm::TypedPushConsumer_var local_typed_consumer = + CosTypedEventComm::TypedPushConsumer_var local_typed_consumer = CosTypedEventComm::TypedPushConsumer::_narrow (push_consumer ACE_ENV_ARG_PARAMETER); ACE_CHECK; // Obtain the typed object interface from the consumer - CORBA::Object_var local_typed_consumer_obj = + CORBA::Object_var local_typed_consumer_obj = CORBA::Object::_duplicate (local_typed_consumer->get_typed_consumer ( ACE_ENV_SINGLE_ARG_PARAMETER) ); ACE_CHECK; @@ -373,7 +373,7 @@ TAO_CEC_ProxyPushSupplier::connect_push_consumer ( // @@ CosEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); ACE_CHECK; - if (this->is_connected_i ()) + if (this->is_connected_i ()) { if (this->typed_event_channel_->consumer_reconnect () == 0) ACE_THROW (CosEventChannelAdmin::AlreadyConnected ()); @@ -401,12 +401,12 @@ TAO_CEC_ProxyPushSupplier::connect_push_consumer ( } - this->typed_consumer_ = + this->typed_consumer_ = CosTypedEventComm::TypedPushConsumer::_duplicate (local_typed_consumer.in () ); ACE_CHECK; // Store the typed object interface from the consumer - this->typed_consumer_obj_ = + this->typed_consumer_obj_ = CORBA::Object::_duplicate (local_typed_consumer_obj.in () ); ACE_CHECK; } @@ -530,10 +530,10 @@ TAO_CEC_ProxyPushSupplier::disconnect_push_supplier ( { if (this->typed_event_channel_->disconnect_callbacks ()) { - ACE_TRY_EX (typed) + ACE_TRY { typed_consumer->disconnect_push_consumer (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK_EX (typed); + ACE_TRY_CHECK; } ACE_CATCHANY { @@ -689,7 +689,7 @@ TAO_CEC_ProxyPushSupplier::invoke_to_consumer (const TAO_CEC_TypedEvent &typed_e CORBA::Object::_duplicate (this->typed_consumer_obj_.in ()); } - // Create the DII request + // Create the DII request ACE_TRY { typed_consumer_obj_->_create_request (0, // ctx diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.cpp b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.cpp index caba8ab004f..01c2f4fd1e9 100644 --- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.cpp +++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.cpp @@ -18,7 +18,7 @@ TAO_CEC_TypedConsumerAdmin::TAO_CEC_TypedConsumerAdmin (TAO_CEC_TypedEventChanne this->default_POA_ = this->typed_event_channel_->typed_consumer_poa (); } - + // Implementation skeleton destructor TAO_CEC_TypedConsumerAdmin::~TAO_CEC_TypedConsumerAdmin (void) { @@ -67,7 +67,6 @@ TAO_CEC_TypedConsumerAdmin::shutdown (ACE_ENV_SINGLE_ARG_DECL) CosTypedEventChannelAdmin::TypedProxyPullSupplier_ptr TAO_CEC_TypedConsumerAdmin::obtain_typed_pull_supplier ( const char * /*supported_interface*/ - ACE_ENV_ARG_DECL ) ACE_THROW_SPEC (( CORBA::SystemException, @@ -77,11 +76,10 @@ TAO_CEC_TypedConsumerAdmin::obtain_typed_pull_supplier ( { ACE_THROW (CosTypedEventChannelAdmin::InterfaceNotSupported ()); } - + CosEventChannelAdmin::ProxyPushSupplier_ptr TAO_CEC_TypedConsumerAdmin::obtain_typed_push_supplier ( const char * uses_interface - ACE_ENV_ARG_DECL ) ACE_THROW_SPEC (( CORBA::SystemException, @@ -90,7 +88,7 @@ TAO_CEC_TypedConsumerAdmin::obtain_typed_push_supplier ( { // Register the consumer uses_interface with the EC - int result = this->typed_event_channel_->consumer_register_uses_interace (uses_interface ACE_ENV_ARG_PARAMETER); + int result = this->typed_event_channel_->consumer_register_uses_interace (uses_interface ACE_ENV_ARG_DECL); if (result == -1) { diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.h index 5c943a8d301..1b933ea3d1d 100644 --- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.h +++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.h @@ -63,11 +63,11 @@ public: // = The CosTypedEventChannelAdmin::TypedConsumerAdmin methods... virtual CosEventChannelAdmin::ProxyPushSupplier_ptr - obtain_typed_push_supplier (const char * uses_interface ACE_ENV_ARG_DECL) + obtain_typed_push_supplier (const char * uses_interface) ACE_THROW_SPEC ((CORBA::SystemException, CosTypedEventChannelAdmin::NoSuchImplementation)); virtual CosTypedEventChannelAdmin::TypedProxyPullSupplier_ptr - obtain_typed_pull_supplier (const char * supported_interface ACE_ENV_ARG_DECL) + obtain_typed_pull_supplier (const char * supported_interface) ACE_THROW_SPEC ((CORBA::SystemException, CosTypedEventChannelAdmin::InterfaceNotSupported)); diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.cpp b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.cpp index 05feab2c306..240946f5b75 100644 --- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.cpp +++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.cpp @@ -112,17 +112,17 @@ TAO_CEC_TypedEventChannel::shutdown (ACE_ENV_SINGLE_ARG_DECL) // Deactivate the Typed EC PortableServer::POA_var t_poa = this->_default_POA (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - + ACE_TRY_CHECK; + PortableServer::ObjectId_var t_id = t_poa->servant_to_id (this ACE_ENV_ARG_PARAMETER); - ACE_CHECK; + ACE_TRY_CHECK; t_poa->deactivate_object (t_id.in () ACE_ENV_ARG_PARAMETER); - ACE_CHECK; + ACE_TRY_CHECK; this->orb_->shutdown(0); - ACE_CHECK; + ACE_TRY_CHECK; } } @@ -252,12 +252,12 @@ TAO_CEC_TypedEventChannel::cache_interface_description (const char *interface_ // Lookup the Interface Name in the IFR CORBA::Contained_var contained = this->interface_repository_->lookup_id (interface_ ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; + ACE_CHECK; // Narrow the interface CORBA::InterfaceDef_var interface = CORBA::InterfaceDef::_narrow (contained.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; + ACE_CHECK; if (CORBA::is_nil (interface.in () )) { @@ -272,7 +272,7 @@ TAO_CEC_TypedEventChannel::cache_interface_description (const char *interface_ // Obtain the full interface description CORBA::InterfaceDef::FullInterfaceDescription_var fid = interface->describe_interface (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; + ACE_CHECK; // Obtain the base interfaces this->base_interfaces_ = fid->base_interfaces; @@ -416,9 +416,7 @@ TAO_CEC_TypedEventChannel::consumer_register_uses_interace (const char *uses_int else { // Neither a consumer nor a supplier has connected yet - int result = cache_interface_description (uses_interface_ ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - + int result = cache_interface_description (uses_interface_); if (result == 0) { this->uses_interface_ = uses_interface_; @@ -480,9 +478,7 @@ TAO_CEC_TypedEventChannel::supplier_register_supported_interface (const char *su else { // Neither a consumer nor a supplier has connected yet - int result = cache_interface_description (supported_interface_ ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - + int result = cache_interface_description (supported_interface_); if (result == 0) { this->supported_interface_ = supported_interface_; @@ -533,14 +529,14 @@ TAO_CEC_TypedEventChannel::for_consumers (ACE_ENV_SINGLE_ARG_DECL) { return this->typed_consumer_admin_->_this (ACE_ENV_SINGLE_ARG_PARAMETER); } - + CosTypedEventChannelAdmin::TypedSupplierAdmin_ptr TAO_CEC_TypedEventChannel::for_suppliers (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) { return this->typed_supplier_admin_->_this (ACE_ENV_SINGLE_ARG_PARAMETER); } - + void TAO_CEC_TypedEventChannel::destroy (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)) diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.h index d9aefc5817d..3e07e5e198e 100644 --- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.h +++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.h @@ -107,16 +107,17 @@ class TAO_Event_Export TAO_CEC_TypedEventChannel : public virtual POA_CosTypedEv public: /** - * Constructor + * constructor * If <own_factory> is not 0 it assumes ownership of the factory. * If the factory is <nil> it uses the Service_Configurator to load * the Factory, if not found it uses TAO_CEC_Default_Resource_Factory */ + //Constructor TAO_CEC_TypedEventChannel (const TAO_CEC_TypedEventChannel_Attributes& attributes, TAO_CEC_Factory* factory = 0, int own_factory = 0); - /// Destructor + //Destructor virtual ~TAO_CEC_TypedEventChannel (void); /// Start the internal threads (if any), etc. @@ -204,7 +205,7 @@ public: typedef ACE_Hash_Map_Manager_Ex<const char *, TAO_CEC_Operation_Params *, ACE_Hash<const char *>, ACE_Equal_To<const char *>, ACE_Null_Mutex> InterfaceDescription; typedef InterfaceDescription::iterator Iterator; - /// Finds a operation/parameter from the IFR cache + // Finds a operation/parameter from the IFR cache TAO_CEC_Operation_Params * find_from_ifr_cache (const char *operation); /// Function allows consumer admin to register the uses interface @@ -245,13 +246,13 @@ public: ACE_THROW_SPEC ((CORBA::SystemException)); protected: - /// Function caches the full interface description from the IFR + // Function caches the full interface description from the IFR int cache_interface_description (const char *interface ACE_ENV_ARG_DECL); - /// Insert a operation/parameter into the IFR cache + // Insert a operation/parameter into the IFR cache int insert_into_ifr_cache (const char *operation, TAO_CEC_Operation_Params *parameters); - /// Function clears the IFR cache + // Function clears the IFR cache int clear_ifr_cache (void); private: @@ -320,10 +321,10 @@ private: class TAO_Event_Export TAO_CEC_Param { public: - /// Constructor + /// constructor TAO_CEC_Param (void); - /// Destructor + /// destructor ~TAO_CEC_Param (void); private: diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedProxyPushConsumer.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedProxyPushConsumer.h index 224e687c698..95a54d4cc0d 100644 --- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedProxyPushConsumer.h +++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedProxyPushConsumer.h @@ -116,7 +116,7 @@ private: /// The typed supplier.... CosEventComm::PushSupplier_var typed_supplier_; - /// The DSI impl + // The DSI impl TAO_CEC_DynamicImplementationServer* dsi_impl_; /// The DSI Portable Server OID diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.cpp b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.cpp index 9f488611cae..69ff0cc5ff1 100644 --- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.cpp +++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.cpp @@ -18,7 +18,7 @@ TAO_CEC_TypedSupplierAdmin::TAO_CEC_TypedSupplierAdmin (TAO_CEC_TypedEventChanne this->default_POA_ = this->typed_event_channel_->typed_supplier_poa (); } - + // Implementation skeleton destructor TAO_CEC_TypedSupplierAdmin::~TAO_CEC_TypedSupplierAdmin (void) { @@ -61,7 +61,6 @@ TAO_CEC_TypedSupplierAdmin::shutdown (ACE_ENV_SINGLE_ARG_DECL) CosTypedEventChannelAdmin::TypedProxyPushConsumer_ptr TAO_CEC_TypedSupplierAdmin::obtain_typed_push_consumer ( const char * supported_interface - ACE_ENV_ARG_DECL ) ACE_THROW_SPEC (( CORBA::SystemException, @@ -69,7 +68,7 @@ TAO_CEC_TypedSupplierAdmin::obtain_typed_push_consumer ( )) { - int result = this->typed_event_channel_->supplier_register_supported_interface (supported_interface ACE_ENV_ARG_PARAMETER); + int result = this->typed_event_channel_->supplier_register_supported_interface (supported_interface); if (result == -1) { @@ -78,11 +77,10 @@ TAO_CEC_TypedSupplierAdmin::obtain_typed_push_consumer ( return this->typed_push_admin_.obtain (ACE_ENV_SINGLE_ARG_PARAMETER); } - + CosEventChannelAdmin::ProxyPullConsumer_ptr TAO_CEC_TypedSupplierAdmin::obtain_typed_pull_consumer ( const char * /* uses_interface */ - ACE_ENV_ARG_DECL ) ACE_THROW_SPEC (( CORBA::SystemException, diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.h index b987261b037..b04010c2cdd 100644 --- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.h +++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.h @@ -57,14 +57,12 @@ public: // = The CosTypedEventChannelAdmin::TypedSupplierAdmin methods... virtual CosTypedEventChannelAdmin::TypedProxyPushConsumer_ptr - obtain_typed_push_consumer (const char * supported_interface - ACE_ENV_ARG_DECL) + obtain_typed_push_consumer (const char * supported_interface) ACE_THROW_SPEC ((CORBA::SystemException, CosTypedEventChannelAdmin::InterfaceNotSupported)); virtual CosEventChannelAdmin::ProxyPullConsumer_ptr - obtain_typed_pull_consumer (const char * uses_interface - ACE_ENV_ARG_DECL) + obtain_typed_pull_consumer (const char * uses_interface) ACE_THROW_SPEC ((CORBA::SystemException, CosTypedEventChannelAdmin::NoSuchImplementation)); diff --git a/TAO/orbsvcs/orbsvcs/FTRT.idl b/TAO/orbsvcs/orbsvcs/FTRT.idl new file mode 100644 index 00000000000..4ae2530a225 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FTRT.idl @@ -0,0 +1,82 @@ +// -*- IDL -*- + +//============================================================================= +/** + * @file FTRT.idl + * + * $Id$ + * + * @author Huang-Ming Huang + */ +//============================================================================= + +#ifndef FTRT_H +#define FTRT_H + +#include "tao/IOP.pidl" + +module FTRT +{ + + typedef long TransactionDepth; + typedef unsigned long SequenceNumber; + + const IOP::ServiceId FT_TRANSACTION_DEPTH = 30; + const IOP::ServiceId FT_SEQUENCE_NUMBER = 31; + const IOP::ServiceId FT_FORWARD = 32; + + /// this service context is used by FTRT client + /// to information the server the depth of replication + /// which has to be complete before the request returns. + struct FTTransactionDepthServiceContext { + TransactionDepth transaction_depth; + }; + + /// this service context is used by replicas for detecting + /// the loss of replication messages in soft-replication. + struct FTSequenceNumberServiceContext { + SequenceNumber sequence_number; + }; + + /// In the FTCORBA standard, if the server receive a request + /// from a client with an object_group_ref_version less than + /// the one known to the server. The server should reply a + /// LOCATION_FORARD_PERM exception. However, if the server is + /// also the primary, the server have to wait until the client + /// issue a new request with the new object_group_ref_version + /// before it can return the result. This will cause unnecessary + /// delay for processing the request. The service context is used + /// by the primary to inform the client the lastest version of + /// IOGR known to the primary in the reply. The client can thus + /// upates the object reference in the next method invocation without + /// extra round trip delay. + struct FTForwardServiceContext { + Object forward; + }; + + exception OutOfSequence + { + SequenceNumber current; + }; + + exception TransactionDepthTooHigh + { + }; + + typedef sequence<octet> State; + + exception InvalidUpdate {}; + + interface Updateable + { + /// used for assured replication + void set_update(in State s) + raises(InvalidUpdate, OutOfSequence, TransactionDepthTooHigh); + + /// used for soft replication + oneway void oneway_set_update(in State s); + }; +}; + +#endif + diff --git a/TAO/orbsvcs/orbsvcs/FTRT_GroupManager.idl b/TAO/orbsvcs/orbsvcs/FTRT_GroupManager.idl new file mode 100644 index 00000000000..3290d1f2225 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FTRT_GroupManager.idl @@ -0,0 +1,71 @@ +// -*- IDL -*- + +//============================================================================= +/** + * @file FTRT_GroupManager.idl + * + * $Id$ + * + * @author Huang-Ming Huang + */ +//============================================================================= + +#ifndef TAO_FTRT_GROUPMANAGER_IDL +#define TAO_FTRT_GROUPMANAGER_IDL + +#include "orbsvcs/RtecEventChannelAdmin.idl" +#include "orb.idl" +#include "orbsvcs/CosNaming.idl" +#include "FTRT.idl" + +module FTRT +{ + typedef CosNaming::Name Location; + + interface FaultListener { + /// called by the replica which detect the loss of connection with its + /// predecessor to the primary + oneway void replica_crashed(in Location location); + }; + + interface ObjectGroupManager; + + struct ManagerInfo { + Location the_location; + ObjectGroupManager ior; + }; + + exception PredecessorUnreachable {}; + + typedef sequence<ManagerInfo> ManagerInfoList; + exception InvalidState{}; + + interface ObjectGroupManager : FaultListener { + boolean start(in FaultListener listener, + out Location the_location); + + void create_group(in ManagerInfoList info_list, + in unsigned long object_group_ref_version) + raises(PredecessorUnreachable); + + /// called by a newly created replica to the primary + // for requesting for joining a object group + oneway void join_group(in ManagerInfo info); + + /// called by primary to replicas + /// for adding a new member to the group + void add_member(in ManagerInfo info, + in unsigned long object_group_ref_version); + + /// called by the primary to backups for deleting a member from + /// the group + oneway void remove_member(in Location crashed_location, + in unsigned long object_group_ref_version); + + void set_state(in State stat) + raises (InvalidState); + + }; +}; + +#endif diff --git a/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp b/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp index 48386226378..24ede03819a 100644 --- a/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp +++ b/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp @@ -55,6 +55,7 @@ namespace TAO FT_ClientRequest_Interceptor::destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) ACE_THROW_SPEC ((CORBA::SystemException)) { + delete this; } void @@ -100,7 +101,7 @@ namespace TAO ACE_ENV_ARG_DECL_NOT_USED) ACE_THROW_SPEC ((CORBA::SystemException)) { - this->tss_resources ()->clean_flag_ = true; + this->tss_resources ()->clean_flag_ = false; } void @@ -223,9 +224,9 @@ namespace TAO cdr.reset_byte_order (ACE_static_cast (int,byte_order)); - FT::FTGroupVersionServiceContext gvsc; + FT::TagFTGroupTaggedComponent gtc; - if ((cdr >> gvsc) == 0) + if ((cdr >> gtc) == 0) ACE_THROW (CORBA::BAD_PARAM (CORBA::OMGVMCID | 28, CORBA::COMPLETED_NO)); @@ -236,7 +237,7 @@ namespace TAO if (!(ocdr << ACE_OutputCDR::from_boolean (TAO_ENCAP_BYTE_ORDER))) ACE_THROW (CORBA::MARSHAL ()); - if (!(ocdr << gvsc)) + if (!(ocdr << gtc.object_group_ref_version)) ACE_THROW (CORBA::MARSHAL ()); CORBA::ULong length = @@ -322,10 +323,6 @@ namespace TAO ftrsc.retention_id = ++this->retention_id_; tss->retention_id_ = ftrsc.retention_id; - - // Generated one already. We don't generate another - // till we get a rely for this. - tss->clean_flag_ = false; } else { diff --git a/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ServerRequest_Interceptor.cpp b/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ServerRequest_Interceptor.cpp index d5de621e2df..e86f798dbf1 100644 --- a/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ServerRequest_Interceptor.cpp +++ b/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ServerRequest_Interceptor.cpp @@ -27,13 +27,14 @@ namespace TAO FT_ServerRequest_Interceptor::name (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) ACE_THROW_SPEC ((CORBA::SystemException)) { - return CORBA::string_dup ("TAO_FT_ServerRequest_Interceptor"); + return CORBA::string_dup ("FT_ServerRequest_Interceptor"); } void FT_ServerRequest_Interceptor::destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) ACE_THROW_SPEC ((CORBA::SystemException)) { + delete this; } void @@ -123,7 +124,7 @@ namespace TAO const IOP::ServiceContext &svc ACE_ENV_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException, - PortableInterceptor::ForwardRequest)) + PortableInterceptor::ForwardRequest)) { TAO_InputCDR cdr (ACE_reinterpret_cast (const char*, svc.context_data.get_buffer () diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent.mpc b/TAO/orbsvcs/orbsvcs/FtRtEvent.mpc new file mode 100644 index 00000000000..5c4c2aae53a --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent.mpc @@ -0,0 +1,80 @@ +project (FtRtEvent) : orbsvcslib, core, ftorbutils, rtevent, naming { + + Define_Custom(AMI_IDL) { + automatic = 0; + libpath = $(ACE_ROOT)/lib + command = $(ACE_ROOT)/bin/tao_idl + commandflags += -GC -Sc -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h + inputext = .idl + header_outputext = C.h,S.h + } + + sharedname = TAO_FtRtEvent + idlflags += -Wb,export_macro=TAO_FtRtEvent_Export -Wb,export_include=FtRtEvent/Utils/ftrtevent_export.h + dynamicflags = TAO_FTRTEVENT_BUILD_DLL + tagchecks = FtRtEvent + includes += $(TAO_ROOT)/orbsvcs/orbsvcs + + AMI_IDL_Files { + commandflags += -I$(TAO_ROOT) -I$(TAO_ROOT)/orbsvcs -Wb,export_macro=TAO_FtRtEvent_Export -Wb,export_include=FtRtEvent/Utils/ftrtevent_export.h + FTRT.idl + FtRtecEventComm.idl + } + + IDL_Files { + FtRtecEventChannelAdmin.idl + FTRT_GroupManager.idl + } + + Source_Files (ORBSVCS_COMPONENTS) { + FtRtEvent { + FTRTC.cpp + FTRTS.cpp + FtRtecEventCommC.cpp + FtRtecEventCommS.cpp + FTRT_GroupManagerC.cpp + FTRT_GroupManagerS.cpp + FtRtecEventChannelAdminC.cpp + FtRtecEventChannelAdminS.cpp + FtRtEvent/Utils + } + } +} + +project (FTRT_ClientORB) : messaging, orbsvcslib, core { + sharedname = TAO_FTRT_ClientORB + dynamicflags = TAO_FTRT_BUILD_DLL + tagchecks = FTRT_ClientORB + includes += $(TAO_ROOT)/orbsvcs/orbsvcs/FtRtEvent/ClientORB + IDL_Files { + } + Source_Files (ORBSVCS_COMPONENTS) { + FTRT_ClientORB { + FtRtEvent/ClientORB + } + } +} + +project (FTRT_EventChannel) : orbsvcslib, ftrtevent { + sharedname = TAO_FTRT_EventChannel + dynamicflags = TAO_FTRTEC_BUILD_DLL + tagchecks = FTRT_EventChannel + includes += $(TAO_ROOT)/orbsvcs/orbsvcs/FtRtEvent/EventChannel + after += Utils + libs += TAO_Utils + IDL_Files { + } + + Source_Files (ORBSVCS_COMPONENTS) { + FTRT_EventChannel { + FtRtEvent/EventChannel + } + } + Template_Files { + default { + FtRtEvent/EventChannel/ConnectionHandler_T.cpp + FtRtEvent/EventChannel/Fault_Detector_T.cpp + FtRtEvent/EventChannel/FT_ProxyAdmin_T.cpp + } + } +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Initializer.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Initializer.cpp new file mode 100644 index 00000000000..6c7191ebbd8 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Initializer.cpp @@ -0,0 +1,36 @@ +// $Id$ + +#include "FTRT_ClientORB_Initializer.h" +#include "FTRT_ClientORB_Interceptor.h" + +ACE_RCSID (ClientORB, + FTRT_ClientORB_Initializer, + "$Id$") + +#include "tao/debug.h" + + +FTRT_ClientORB_Initializer::FTRT_ClientORB_Initializer (int transaction_depth) +: client_interceptor_ ( new FTRT_ClientORB_Interceptor(transaction_depth) ) +{ +} + +void +FTRT_ClientORB_Initializer::pre_init ( + PortableInterceptor::ORBInitInfo_ptr + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ +} + +void +FTRT_ClientORB_Initializer::post_init ( + PortableInterceptor::ORBInitInfo_ptr info + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + info->add_client_request_interceptor (client_interceptor_.in() + ACE_ENV_ARG_PARAMETER); +} + + diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Initializer.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Initializer.h new file mode 100644 index 00000000000..f980e9a973a --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Initializer.h @@ -0,0 +1,65 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file FTRT_ClientORB_Initializer.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + + +#ifndef FTRT_CLIENTORB_INITIALIZER_H +#define FTRT_CLIENTORB_INITIALIZER_H + +#include /**/ "ace/pre.h" + +#include "tao/corbafwd.h" + + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/PortableInterceptorC.h" +#include "tao/LocalObject.h" + +// This is to remove "inherits via dominance" warnings from MSVC. +// MSVC is being a little too paranoid. +#if defined(_MSC_VER) +#if (_MSC_VER >= 1200) +#pragma warning(push) +#endif /* _MSC_VER >= 1200 */ +#pragma warning(disable:4250) +#endif /* _MSC_VER */ + +/// RTCORBA ORB initializer. +class FTRT_ClientORB_Initializer : + public virtual PortableInterceptor::ORBInitializer, + public virtual TAO_Local_RefCounted_Object +{ +public: + /// Priority mapping types + FTRT_ClientORB_Initializer (int transaction_depth); + + virtual void pre_init (PortableInterceptor::ORBInitInfo_ptr info + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void post_init (PortableInterceptor::ORBInitInfo_ptr info + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); +private: + PortableInterceptor::ClientRequestInterceptor_var client_interceptor_; +}; + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +#pragma warning(pop) +#endif /* _MSC_VER */ + + +#include /**/ "ace/post.h" + +#endif /* FTRT_CLIENTORB_INITIALIZER_H */ diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Interceptor.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Interceptor.cpp new file mode 100644 index 00000000000..f6820db4526 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Interceptor.cpp @@ -0,0 +1,146 @@ +// $Id$ + +#include "FTRT_ClientORB_Interceptor.h" +#include "tao/MProfile.h" +#include "tao/Stub.h" + +ACE_RCSID (ClientORB, + FTRT_ClientORB_Interceptor, + "$Id$") + +namespace FTRT { + const unsigned FT_TRANSACTION_DEPTH = 30; + const unsigned FT_FORWARD = 32; +}; + +FTRT_ClientORB_Interceptor:: +FTRT_ClientORB_Interceptor (CORBA::Long transaction_depth) + : myname_ ("FTRT_ClientORB_Interceptor") + , transaction_depth_(transaction_depth) +{ +} + +FTRT_ClientORB_Interceptor::~FTRT_ClientORB_Interceptor (void) +{ +} + +char * +FTRT_ClientORB_Interceptor::name (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + return CORBA::string_dup (this->myname_); +} + +void +FTRT_ClientORB_Interceptor::destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ +} + +void +FTRT_ClientORB_Interceptor::send_poll ( + PortableInterceptor::ClientRequestInfo_ptr + ACE_ENV_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + // Do Nothing +} + +void +FTRT_ClientORB_Interceptor::send_request ( + PortableInterceptor::ClientRequestInfo_ptr ri + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)) +{ + ACE_TRACE("FTRT_ClientORB_Interceptor::send_request"); + ACE_TRY + { + IOP::ServiceContext_var sc = + ri->get_request_service_context (FTRT::FT_TRANSACTION_DEPTH + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + } + ACE_CATCH (CORBA::BAD_PARAM, ex) + { + // Add FT_REQUEST context + IOP::ServiceContext sc; + TAO_OutputCDR cdr; + + if ((cdr << ACE_OutputCDR::from_boolean (TAO_ENCAP_BYTE_ORDER)) ==0) + ACE_THROW (CORBA::MARSHAL ()); + + // Add Transaction Depth Context + if ((cdr << transaction_depth_) == 0) + ACE_THROW (CORBA::MARSHAL ()); + sc.context_id = FTRT::FT_TRANSACTION_DEPTH; + + ACE_Message_Block mb; + ACE_CDR::consolidate(&mb, cdr.begin()); + sc.context_data.replace(mb.length(), &mb); + + ri->add_request_service_context (sc, 0 ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + ACE_ENDTRY; +} + +void +FTRT_ClientORB_Interceptor::receive_reply ( + PortableInterceptor::ClientRequestInfo_ptr ri + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + ACE_TRACE("FTRT_ClientORB_Interceptor::receive_reply"); + + + IOP::ServiceContext_var service_context; + ACE_TRY { + service_context = + ri->get_reply_service_context(FTRT::FT_FORWARD + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + } + ACE_CATCHANY { + return; + } + ACE_ENDTRY; + ACE_CHECK; + + + const char * buf = + ACE_reinterpret_cast (const char *, + service_context->context_data.get_buffer ()); + + TAO_InputCDR cdr (buf, + service_context->context_data.length ()); + + + CORBA::Object_var obj; + + if (cdr >> obj) { + // update the target + CORBA::Object_var target = ri->target(ACE_ENV_SINGLE_ARG_PARAMETER); + target->_stubobj ()->base_profiles ( obj->_stubobj()->base_profiles() ); + ACE_DEBUG((LM_DEBUG, "target object updated\n")); + } +} + +void +FTRT_ClientORB_Interceptor::receive_other ( + PortableInterceptor::ClientRequestInfo_ptr + ACE_ENV_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)) +{ +} + +void +FTRT_ClientORB_Interceptor::receive_exception ( + PortableInterceptor::ClientRequestInfo_ptr ri + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)) +{ + ACE_UNUSED_ARG(ri); +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Interceptor.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Interceptor.h new file mode 100644 index 00000000000..d4075109c96 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Interceptor.h @@ -0,0 +1,84 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file FTRT_ClientORB_Interceptor.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + + +#ifndef TAO_FTRT_CLIENTORB_INTERCEPTOR_H +#define TAO_FTRT_CLIENTORB_INTERCEPTOR_H + +#include /**/ "ace/pre.h" + +#include "tao/corbafwd.h" + + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/PortableInterceptorC.h" +#include "tao/LocalObject.h" + +// This is to remove "inherits via dominance" warnings from MSVC. +// MSVC is being a little too paranoid. +#if defined(_MSC_VER) +#if (_MSC_VER >= 1200) +#pragma warning(push) +#endif /* _MSC_VER >= 1200 */ +#pragma warning(disable:4250) +#endif /* _MSC_VER */ + + +class FTRT_ClientORB_Interceptor + : public virtual PortableInterceptor::ClientRequestInterceptor, + public virtual TAO_Local_RefCounted_Object +{ +public: + FTRT_ClientORB_Interceptor (CORBA::Long transaction_depth); + // ctor. + + virtual ~FTRT_ClientORB_Interceptor (); + // dtor. + + virtual char * name (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + // Canonical name of the interceptor. + + virtual void destroy (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void send_poll (PortableInterceptor::ClientRequestInfo_ptr + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void send_request (PortableInterceptor::ClientRequestInfo_ptr ri + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)); + + virtual void receive_reply (PortableInterceptor::ClientRequestInfo_ptr ri + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void receive_other (PortableInterceptor::ClientRequestInfo_ptr + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)); + + virtual void receive_exception (PortableInterceptor::ClientRequestInfo_ptr ri + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)); +private: + const char *myname_; + CORBA::Long transaction_depth_; +}; + +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Loader.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Loader.cpp new file mode 100644 index 00000000000..053c1f1832c --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Loader.cpp @@ -0,0 +1,96 @@ +// $Id$ + +#include "FTRT_ClientORB_Loader.h" + +#include "FTRT_ClientORB_Initializer.h" + +#include "tao/debug.h" + +ACE_RCSID (ClientORB, + FTRT_ClientORB_Loader, + "$Id$") + + +namespace TAO_FTRT { + FTRT_ClientORB_Loader::FTRT_ClientORB_Loader (void) + { + } + + FTRT_ClientORB_Loader::~FTRT_ClientORB_Loader (void) + { + } + + int FTRT_ClientORB_Loader::init (int argc, + ACE_TCHAR* argv[]) + { + ACE_TRACE ("FTRT_ClientORB_Loader::init"); + + static int initialized = 0; + + // Only allow initialization once. + if (initialized) + return 0; + + initialized = 1; + + // Set defaults. + int transaction_depth = 1; + int curarg = 0; + + // Parse any service configurator parameters. + for (curarg = 0; curarg < argc; curarg++) + if (ACE_OS::strcasecmp (argv[curarg], + ACE_LIB_TEXT("-ORBTransactionDepth")) == 0) + { + curarg++; + if (curarg < argc) + transaction_depth = atoi(argv[curarg]); + } + + + // Register the ORB initializer. + ACE_TRY_NEW_ENV + { + PortableInterceptor::ORBInitializer_ptr temp_orb_initializer = + PortableInterceptor::ORBInitializer::_nil (); + PortableInterceptor::ORBInitializer_var orb_initializer; + + /// Register the RTCORBA ORBInitializer. + ACE_NEW_THROW_EX (temp_orb_initializer, + FTRT_ClientORB_Initializer(transaction_depth), + CORBA::NO_MEMORY ( + CORBA::SystemException::_tao_minor_code ( + TAO_DEFAULT_MINOR_CODE, + ENOMEM), + CORBA::COMPLETED_NO)); + ACE_TRY_CHECK; + orb_initializer = temp_orb_initializer; + + PortableInterceptor::register_orb_initializer (orb_initializer.in () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, + "Unexpected exception caught while " + "initializing the TransactionDepth"); + return 1; + } + ACE_ENDTRY; + + return 0; + } + + ///////////////////////////////////////////////////////////////////// + + ACE_FACTORY_DEFINE (TAO_FTRT, FTRT_ClientORB_Loader); + ACE_STATIC_SVC_DEFINE (FTRT_ClientORB_Loader, + ACE_TEXT ("FTRT_ClientORB_Service"), + ACE_SVC_OBJ_T, + &ACE_SVC_NAME (FTRT_ClientORB_Loader), + ACE_Service_Type::DELETE_THIS + | ACE_Service_Type::DELETE_OBJ, + 0); +} + diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Loader.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Loader.h new file mode 100644 index 00000000000..ed3162b5e96 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Loader.h @@ -0,0 +1,54 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file FTRT_ClientORB_Loader.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef FTRT_CLIENTORB_LOADER_H +#define FTRT_CLIENTORB_LOADER_H + +#include "ace/pre.h" + +#include "ftrt_clientorb_export.h" + +#include "tao/orbconf.h" + +#include "ace/Service_Object.h" +#include "ace/Service_Config.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class TAO_ORB_Core; + +namespace TAO_FTRT { + + class TAO_FTRT_Export FTRT_ClientORB_Loader : public ACE_Service_Object + { + public: + /// Constructor. + FTRT_ClientORB_Loader (void); + + /// Destructor. + virtual ~FTRT_ClientORB_Loader (void); + + /// Initialize the TransactionDepth loader hooks. + virtual int init (int argc, + ACE_TCHAR* []); + }; + + + ACE_STATIC_SVC_DECLARE_EXPORT (TAO_FTRT, FTRT_ClientORB_Loader) + ACE_STATIC_SVC_REQUIRE(FTRT_ClientORB_Loader); + ACE_FACTORY_DECLARE (TAO_FTRT, FTRT_ClientORB_Loader) +} + +#include "ace/post.h" +#endif //FTRT_CLIENTORB_LOADER_H diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/ftrt_clientorb_export.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/ftrt_clientorb_export.h new file mode 100644 index 00000000000..18701dc1277 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/ftrt_clientorb_export.h @@ -0,0 +1,54 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl TAO_FTRT +// ------------------------------ +#ifndef TAO_FTRT_EXPORT_H +#define TAO_FTRT_EXPORT_H + +#include "ace/config-all.h" + +#if !defined (TAO_FTRT_HAS_DLL) +# define TAO_FTRT_HAS_DLL 1 +#endif /* ! TAO_FTRT_HAS_DLL */ + +#if defined (TAO_FTRT_HAS_DLL) && (TAO_FTRT_HAS_DLL == 1) +# if defined (TAO_FTRT_BUILD_DLL) +# define TAO_FTRT_Export ACE_Proper_Export_Flag +# define TAO_FTRT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define TAO_FTRT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* TAO_FTRT_BUILD_DLL */ +# define TAO_FTRT_Export ACE_Proper_Import_Flag +# define TAO_FTRT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define TAO_FTRT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* TAO_FTRT_BUILD_DLL */ +#else /* TAO_FTRT_HAS_DLL == 1 */ +# define TAO_FTRT_Export +# define TAO_FTRT_SINGLETON_DECLARATION(T) +# define TAO_FTRT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* TAO_FTRT_HAS_DLL == 1 */ + +// Set TAO_FTRT_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (TAO_FTRT_NTRACE) +# if (ACE_NTRACE == 1) +# define TAO_FTRT_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define TAO_FTRT_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !TAO_FTRT_NTRACE */ + +#if (TAO_FTRT_NTRACE == 1) +# define TAO_FTRT_TRACE(X) +#else /* (TAO_FTRT_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define TAO_FTRT_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (TAO_FTRT_NTRACE == 1) */ + +#endif /* TAO_FTRT_EXPORT_H */ + +// End of auto generated file. diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Primary_Replication_Strategy.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Primary_Replication_Strategy.cpp new file mode 100644 index 00000000000..07aad98ce30 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Primary_Replication_Strategy.cpp @@ -0,0 +1,172 @@ +// $Id$ + +#include "AMI_Primary_Replication_Strategy.h" +#include "ace/Synch_T.h" +#include "GroupInfoPublisher.h" +#include "../Utils/ScopeGuard.h" +#include "Request_Context_Repository.h" +#include "../Utils/resolve_init.h" +#include "create_persistent_poa.h" +#include "Update_Manager.h" +#include "tao/Utils/PolicyList_Destroyer.h" + +ACE_RCSID (EventChannel, + AMI_Primary_Replication_Strategy, + "$Id$") + +AMI_Primary_Replication_Strategy::AMI_Primary_Replication_Strategy() +: handler_(this) +{ +} + +AMI_Primary_Replication_Strategy::~AMI_Primary_Replication_Strategy() +{ + running_= false; + this->wait(); +} + +int AMI_Primary_Replication_Strategy::acquire_read (void) +{ + return mutex_.acquire_read(); +} + +int AMI_Primary_Replication_Strategy::acquire_write (void) +{ + return mutex_.acquire_write(); +} + +int AMI_Primary_Replication_Strategy::release (void) +{ + return mutex_.release(); +} + + +int AMI_Primary_Replication_Strategy::init(ACE_ENV_SINGLE_ARG_DECL) +{ + return this->activate(ACE_ENV_SINGLE_ARG_PARAMETER); +} + +int AMI_Primary_Replication_Strategy::svc() +{ + ACE_TRY_NEW_ENV { + int argc = 0; + char** argv = 0; + orb_ = CORBA::ORB_init (argc, argv ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + PortableServer::POA_var + root_poa = resolve_init<PortableServer::POA>(orb_.in(), "RootPOA" + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + // create POAManager + mgr_ = root_poa->the_POAManager(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + + mgr_->activate(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + PortableServer::IdUniquenessPolicy_var id_uniqueness_policy = + root_poa->create_id_uniqueness_policy(PortableServer::MULTIPLE_ID + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK + + TAO::Utils::PolicyList_Destroyer policy_list(3); + policy_list.length(1); + policy_list[0] = PortableServer::IdUniquenessPolicy::_duplicate( + id_uniqueness_policy.in() + ); + poa_ = create_persistent_poa(root_poa, mgr_, "AMI_Update", policy_list + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + id_uniqueness_policy->destroy(); + + running_ = true; + while (running_) { + if (orb_->work_pending()) + orb_->perform_work(); + } + orb_->destroy(); + } + ACE_CATCHANY { + ACE_PRINT_EXCEPTION(ex, "AMI_Primary_Replication_Strategy::svc"); + running_ = false; + return -1; + } + ACE_ENDTRY; + running_ = false; + return 0; +} + +void +AMI_Primary_Replication_Strategy::replicate_request( + const FTRT::State& state, + RollbackOperation rollback, + const FtRtecEventChannelAdmin::ObjectId& oid + ACE_ENV_ARG_DECL) +{ + ACE_Auto_Event event; + Update_Manager* manager; + bool success; + + FTRT::TransactionDepth transaction_depth = + Request_Context_Repository().get_transaction_depth(); + + const FtRtecEventChannelAdmin::EventChannelList& backups = + GroupInfoPublisher::instance()->backups(); + + size_t num_backups = backups.length(); + + if ((size_t)transaction_depth > num_backups) + ACE_THROW(FTRT::TransactionDepthTooHigh()); + + ACE_NEW_THROW_EX(manager, + Update_Manager(event, backups.length(), transaction_depth-1, success), + CORBA::NO_MEMORY()); + + + Request_Context_Repository().set_transaction_depth(0); + for (size_t i = 0; i < num_backups; ++i) { + ACE_TRY_NEW_ENV { + PortableServer::ObjectId oid; + FTRT::AMI_UpdateableHandler_ptr handler = handler_.activate(manager, i, oid + ACE_ENV_ARG_PARAMETER); + + ScopeGuard guard = MakeObjGuard(*poa_.in(), + &PortableServer::POA::deactivate_object, + oid) + ACE_TRY_CHECK; + FtRtecEventChannelAdmin::EventChannel_ptr obj = backups[i]; + // send set_update request to all the backup replicas + + obj->sendc_set_update(handler, state + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + guard.Dismiss(); + } + ACE_CATCHANY { + ACE_PRINT_EXCEPTION(ex, "AMI_Primary_Replication_Strategy::replicate_request : "); + manager->handle_exception(i); + } + ACE_ENDTRY; + } + // wait until the first transaction_depth replicas replied. + event.wait(); + + if (!success) { // replication failed, transaction depth too high + for (size_t i =0; i < num_backups; ++i) { + ACE_TRY_NEW_ENV { + (backups[i]->*rollback)(oid ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + } + ACE_CATCHALL { + } + ACE_ENDTRY; + } + + ACE_THROW(FTRT::TransactionDepthTooHigh()); + } + +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Primary_Replication_Strategy.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Primary_Replication_Strategy.h new file mode 100644 index 00000000000..38dd300ad1a --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Primary_Replication_Strategy.h @@ -0,0 +1,51 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file AMI_Primary_Replication_Strategy.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef AMI_PRIMARY_REPLICATION_STRATEGY_H +#define AMI_PRIMARY_REPLICATION_STRATEGY_H + +#include "UpdateableHandler.h" +#include "Replication_Strategy.h" +#include "orbsvcs/FtRtecEventChannelAdminC.h" +#include "ace/Task.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class AMI_Primary_Replication_Strategy : public Replication_Strategy + , public ACE_Task_Base +{ +public: + AMI_Primary_Replication_Strategy(); + virtual ~AMI_Primary_Replication_Strategy(); + virtual int init(); + virtual void replicate_request(const FTRT::State& state, + RollbackOperation rollback, + const FtRtecEventChannelAdmin::ObjectId& oid + ACE_ENV_ARG_DECL); + virtual int acquire_read (void); + virtual int acquire_write (void); + virtual int release (void); + PortableServer::POA_ptr poa() { return poa_.in(); } + CORBA::ORB_ptr orb() { return orb_.in();} +private: + virtual int svc (void); + CORBA::ORB_var orb_; + PortableServer::POA_var poa_; + PortableServer::POAManager_var mgr_; + bool running_; + ACE_RW_Thread_Mutex mutex_; + UpdateableHandler handler_; +}; + +#endif // AMI_PRIMARY_REPLICATION_STRATEGY_H diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Replication_Strategy.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Replication_Strategy.cpp new file mode 100644 index 00000000000..b024636d962 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Replication_Strategy.cpp @@ -0,0 +1,52 @@ +// $Id$ + +#include "AMI_Replication_Strategy.h" +#include "AMI_Primary_Replication_Strategy.h" + +ACE_RCSID (EventChannel, + AMI_Replication_Strategy, + "$Id$") + +AMI_Replication_Strategy::AMI_Replication_Strategy() +{ +} + +void +AMI_Replication_Strategy::replicate_request( + const FTRT::State& state, + RollbackOperation rollback, + const FtRtecEventChannelAdmin::ObjectId& oid + ACE_ENV_ARG_DECL) +{ + ACE_UNUSED_ARG(state); + ACE_UNUSED_ARG(rollback); + ACE_UNUSED_ARG(oid); +} + + +Replication_Strategy* +AMI_Replication_Strategy::make_primary_strategy() +{ + AMI_Primary_Replication_Strategy* result; + ACE_NEW_RETURN(result, AMI_Primary_Replication_Strategy, 0); + auto_ptr<AMI_Primary_Replication_Strategy> holder(result); + if (result->activate() == 0) + return holder.release(); + return 0; +} + +int AMI_Replication_Strategy::acquire_read (void) +{ + return 0; +} + +int AMI_Replication_Strategy::acquire_write (void) +{ + return 0; +} + +int AMI_Replication_Strategy::release (void) +{ + return 0; +} + diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Replication_Strategy.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Replication_Strategy.h new file mode 100644 index 00000000000..da132b47708 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Replication_Strategy.h @@ -0,0 +1,43 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file AMI_Replication_Strategy.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef AMI_REPLICATION_STRATEGY_H +#define AMI_REPLICATION_STRATEGY_H + +#include "ace/Task.h" +#include "tao/PortableServer/PortableServerC.h" +#include "orbsvcs/FTRT_GroupManagerC.h" +#include "Replication_Strategy.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class AMI_Replication_Strategy: public Replication_Strategy +{ +public: + AMI_Replication_Strategy(); + virtual void replicate_request( + const FTRT::State& state, + RollbackOperation rollback, + const FtRtecEventChannelAdmin::ObjectId& oid + ACE_ENV_ARG_DECL); + virtual Replication_Strategy* make_primary_strategy(); + + virtual int acquire_read (void); + virtual int acquire_write (void); + virtual int release (void); + +}; + + +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Basic_Replication_Strategy.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Basic_Replication_Strategy.cpp new file mode 100644 index 00000000000..edc5424edbc --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Basic_Replication_Strategy.cpp @@ -0,0 +1,100 @@ +// $Id$ + +#include "Basic_Replication_Strategy.h" +#include "GroupInfoPublisher.h" +#include "FTEC_Event_Channel.h" +#include "Request_Context_Repository.h" + +ACE_RCSID (EventChannel, + Basic_Replication_Strategy, + "$Id$") + +Basic_Replication_Strategy::Basic_Replication_Strategy() +: sequence_num_(0) +{ +} + +void +Basic_Replication_Strategy::check_validity(ACE_ENV_SINGLE_ARG_DECL) +{ + FTRT::SequenceNumber seq_no = Request_Context_Repository().get_sequence_number(); + ACE_DEBUG((LM_DEBUG, "check_validity : sequence no = %d\n", sequence_num_)); + + if (this->sequence_num_ == 0) { + // this is the first set_update received from the primary + // sync the sequence number with the primary + this->sequence_num_ = seq_no; + } + else if (seq_no != this->sequence_num_+1) { + // out of sync, we missed some set_update() request already + // throw exception + // client_interceptor_->sequence_num_--; + FTRT::OutOfSequence exception; + exception.current = this->sequence_num_; + ACE_THROW(FTRT::OutOfSequence(exception)); + } + else + this->sequence_num_++; +} + + +void +Basic_Replication_Strategy::replicate_request( + const FTRT::State& state, + RollbackOperation rollback, + const FtRtecEventChannelAdmin::ObjectId& oid + ACE_ENV_ARG_DECL) +{ + ACE_UNUSED_ARG(rollback); + ACE_UNUSED_ARG(oid); + + FTRT::TransactionDepth transaction_depth = + Request_Context_Repository().get_transaction_depth(); + + GroupInfoPublisherBase * info_publisher = GroupInfoPublisher::instance(); + FtRtecEventChannelAdmin::EventChannel_var successor = info_publisher->successor(); + if (!CORBA::is_nil(successor.in())) { + if (info_publisher->is_primary()) + this->sequence_num_++; + + ACE_DEBUG((LM_DEBUG, "replicate_request : sequence no = %d\n", sequence_num_)); + Request_Context_Repository().set_sequence_number(sequence_num_ + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + Request_Context_Repository().set_transaction_depth(transaction_depth-1); + + if (transaction_depth > 1) { + successor->set_update(state + ACE_ENV_ARG_PARAMETER); + } + else { + ACE_TRY { + successor->oneway_set_update(state + ACE_ENV_ARG_PARAMETER); + } + ACE_CATCHANY { + } + ACE_ENDTRY; + } + } + else if (transaction_depth > 1) + ACE_THROW(FTRT::TransactionDepthTooHigh()); +} + + +int Basic_Replication_Strategy::acquire_read (void) +{ + return mutex_.acquire_read(); +} + +int Basic_Replication_Strategy::acquire_write (void) +{ + return mutex_.acquire_write(); +} + +int Basic_Replication_Strategy::release (void) +{ + return mutex_.release(); +} + diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Basic_Replication_Strategy.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Basic_Replication_Strategy.h new file mode 100644 index 00000000000..282f4b97d56 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Basic_Replication_Strategy.h @@ -0,0 +1,43 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Basic_Replication_Strategy.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= +#ifndef BASIC_REPLICATION_STRATEGY_H +#define BASIC_REPLICATION_STRATEGY_H +#include "Replication_Strategy.h" +#include "ace/Synch.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class Basic_Replication_Strategy : public Replication_Strategy +{ +public: + Basic_Replication_Strategy(); + + virtual void check_validity(ACE_ENV_SINGLE_ARG_DECL); + + virtual void replicate_request( + const FTRT::State& state, + RollbackOperation rollback, + const FtRtecEventChannelAdmin::ObjectId& oid + ACE_ENV_ARG_DECL); + + virtual int acquire_read (void); + virtual int acquire_write (void); + virtual int release (void); + +private: + FTRT::SequenceNumber sequence_num_; + ACE_Thread_Mutex mutex_; +}; + +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ConnectionHandler_T.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ConnectionHandler_T.cpp new file mode 100644 index 00000000000..71c6ee1169e --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ConnectionHandler_T.cpp @@ -0,0 +1,93 @@ +// $Id$ + +template <ACE_PEER_STREAM_1> +int ConnectionAcceptHandler<ACE_PEER_STREAM_2>::open (void * acceptor) +{ + + ACE_TRACE("ConnectionAcceptHandler::open\n"); + ACE_INET_Addr addr; + + if (this->peer ().get_remote_addr (addr) == -1) + return -1; + + reactor_ = static_cast<ACE_Service_Object*>(acceptor)->reactor(); + + if (reactor_->register_handler (this, + ACE_Event_Handler::READ_MASK) == -1) + ACE_ERROR_RETURN ((LM_ERROR, + "(%P|%t) can't register with reactor\n"), + -1); + + ACE_DEBUG ((LM_DEBUG, + "(%P|%t) connected with %s\n", + addr.get_host_name ())); + + return 0; +} + +template <ACE_PEER_STREAM_1> +void ConnectionAcceptHandler<ACE_PEER_STREAM_2>::destroy (void) +{ + // Remove ourselves from the reactor + reactor_->remove_handler + (this, + ACE_Event_Handler::READ_MASK | ACE_Event_Handler::DONT_CALL); + + // Shut down the connection to the client. + this->peer ().close (); + + // Free our memory. + delete this; +} + +// If somebody doesn't like us, they will close() us. Actually, if +// our open() method returns -1, the Acceptor<> will invoke close() +// on us for cleanup. +template <ACE_PEER_STREAM_1> +int ConnectionAcceptHandler<ACE_PEER_STREAM_2>::close (u_long flags) +{ + ACE_UNUSED_ARG (flags); + + this->destroy (); + return 0; +} + + +template <ACE_PEER_STREAM_1> +int ConnectionAcceptHandler<ACE_PEER_STREAM_2>::handle_input (ACE_HANDLE) +{ + char buf[8]; + if (this->peer().recv(buf, sizeof(buf))) + return -1; + return 0; +} + +// Clean ourselves up when handle_input() (or handle_timer()) returns -1 + +template <ACE_PEER_STREAM_1> +int ConnectionAcceptHandler<ACE_PEER_STREAM_2>::handle_close (ACE_HANDLE, + ACE_Reactor_Mask) +{ + this->destroy (); + return 0; +} + + +template <ACE_PEER_STREAM_1> +int ConnectionDetectHandler<ACE_PEER_STREAM_2>::handle_close (ACE_HANDLE, + ACE_Reactor_Mask) +{ + ACE_TRACE("ConnectionDetectHandler::handle_close\n"); + close(); + return 0; +} + +template <ACE_PEER_STREAM_1> +int ConnectionDetectHandler<ACE_PEER_STREAM_2>::close (u_long ) +{ + if (listener_) + listener_->connection_closed(); + delete this; + return 0; +} + diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ConnectionHandler_T.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ConnectionHandler_T.h new file mode 100644 index 00000000000..580cfe57a94 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ConnectionHandler_T.h @@ -0,0 +1,65 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file ConnectionAcceptHandler.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= +#ifndef CONNECTIONACCEPTHANDLER_H +#define CONNECTIONACCEPTHANDLER_H + +#include "ace/Event_Handler.h" +#include "ace/Svc_Handler.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +template <ACE_PEER_STREAM_1> +class ConnectionAcceptHandler : public ACE_Svc_Handler <ACE_PEER_STREAM_2, ACE_NULL_SYNCH> +{ +public: + virtual int open (void *); + virtual void destroy (void); + virtual int close (u_long flags = 0); +protected: + + virtual int handle_input (ACE_HANDLE); + virtual int handle_close (ACE_HANDLE, + ACE_Reactor_Mask); + ~ConnectionAcceptHandler(){} +private: + ACE_Reactor* reactor_; +}; + +class TAO_FTEC_Fault_Listener; + +template <ACE_PEER_STREAM_1> +class ConnectionDetectHandler : public ACE_Svc_Handler <ACE_PEER_STREAM_2, ACE_NULL_SYNCH> +{ +public: + ConnectionDetectHandler(TAO_FTEC_Fault_Listener* listener = NULL) + : listener_(listener){} + + virtual int close (u_long flags = 0); + + virtual int handle_close (ACE_HANDLE, + ACE_Reactor_Mask); +private: + TAO_FTEC_Fault_Listener* listener_; +}; + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "ConnectionHandler_T.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("ConnectionHandler_T.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + +#endif + diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Dynamic_Bitset.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Dynamic_Bitset.cpp new file mode 100644 index 00000000000..f90a2287765 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Dynamic_Bitset.cpp @@ -0,0 +1,118 @@ +// $Id$ + +#include "Dynamic_Bitset.h" +#include <assert.h> +#include <algorithm> + + +inline unsigned ceil(unsigned numerator, unsigned denominator) +{ + return numerator/denominator+ (numerator%denominator ? 1 : 0); +} + +Dynamic_Bitset::Dynamic_Bitset(Dynamic_Bitset::size_type size) +: buffer_(new block[buffer_size_]) +, buffer_size_(ceil(size,BITS_PER_BLOCK)) +, bit_size_(size) +{ + memset(buffer_, 0, buffer_size_*BYTES_PER_BLOCK); +} + + +Dynamic_Bitset& Dynamic_Bitset::operator = (const Dynamic_Bitset& other) +{ + Dynamic_Bitset temp(other); + // swap buffer + block* tmp_blk = temp.buffer_; + temp.buffer_ = this->buffer_; + this->buffer_= tmp_blk; + + this->buffer_size_ = other.buffer_size_; + this->bit_size_ = other.bit_size_; + return *this; +} + +Dynamic_Bitset& Dynamic_Bitset::operator &=(const Dynamic_Bitset& other) +{ + assert(other.bit_size_ == this->bit_size_); + size_type len = ceil(bit_size_,BITS_PER_BLOCK); + for (size_type i = 0; i < len; ++i) + buffer_[i] &= other.buffer_[i]; + return *this; +} + +bool Dynamic_Bitset::test(Dynamic_Bitset::size_type bit) const +{ + size_type block_pos = bit/BITS_PER_BLOCK; + size_type bit_pos = bit%BITS_PER_BLOCK; + block mask = 1 << bit_pos; + return (buffer_[block_pos] & mask) !=0; +} + +void Dynamic_Bitset::set(Dynamic_Bitset::size_type bit, bool val) +{ + size_type block_pos = bit/BITS_PER_BLOCK; + size_type bit_pos = bit%BITS_PER_BLOCK; + block mask = 1 << bit_pos; + if (val == false) + mask ^= static_cast<block>(-1); + buffer_[block_pos] |= mask; +} + +void Dynamic_Bitset::flip() +{ + size_type len = ceil(bit_size_,BITS_PER_BLOCK); + block mask = static_cast<block>(-1); + for (size_type i = 0; i < len; ++i) + buffer_[i] ^= mask; +} + +void Dynamic_Bitset::resize(Dynamic_Bitset::size_type num_bits, bool value) +{ + size_type len = ceil(num_bits, BITS_PER_BLOCK); + if (len > this->buffer_size_) { + Dynamic_Bitset tmp(num_bits); + memcpy(tmp.buffer_, this->buffer_, this->buffer_size_*BYTES_PER_BLOCK); + block mask = static_cast<block>(-1); + + size_type block_pos = this->bit_size_/BITS_PER_BLOCK; + size_type bit_pos = this->bit_size_%BITS_PER_BLOCK; + + if (value) { + mask <<= bit_pos; + tmp.buffer_[block_pos] |= mask; + } + else { + mask >>= (BITS_PER_BLOCK-bit_pos); + tmp.buffer_[block_pos] &= mask; + } + + + for (size_type i = block_pos +1; i < len; ++i) { + mask = value ? static_cast<block>(-1) : 0; + tmp.buffer_[i] = mask; + } + + std::swap(tmp.buffer_, this->buffer_); + this->buffer_size_ = tmp.buffer_size_; + this->bit_size_ = tmp.bit_size_; + } + else + bit_size_ = num_bits; +} + +bool operator == (const Dynamic_Bitset& lhs, const Dynamic_Bitset& rhs) +{ + Dynamic_Bitset::size_type bit_size = lhs.size(); + if (bit_size != rhs.size()) + return false; + Dynamic_Bitset::size_type block_pos = bit_size/Dynamic_Bitset::BITS_PER_BLOCK; + Dynamic_Bitset::size_type bit_pos = bit_size%Dynamic_Bitset::BITS_PER_BLOCK; + Dynamic_Bitset::size_type i; + for (i = 0; i < block_pos; ++i) + if (lhs.buffer_[i] != rhs.buffer_[i]) + return false; + Dynamic_Bitset::block mask = static_cast<Dynamic_Bitset::block>(-1); + mask >>= (Dynamic_Bitset::BITS_PER_BLOCK-bit_pos); + return ((lhs.buffer_[i] ^ rhs.buffer_[i]) & mask ) == 0; +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Dynamic_Bitset.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Dynamic_Bitset.h new file mode 100644 index 00000000000..cc7a0410df6 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Dynamic_Bitset.h @@ -0,0 +1,117 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Dynamic_Bitset.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= +#ifndef DYNAMIC_BITSET_H +#define DYNAMIC_BITSET_H + +#include <memory.h> + +/** + * + */ + +class Dynamic_Bitset +{ + typedef unsigned block; + typedef unsigned size_type; + enum { + BYTES_PER_BLOCK = sizeof(block), + BITS_PER_BLOCK = sizeof(block)*8 + }; +public: + class reference { + public: + reference(Dynamic_Bitset* bitset, size_type bit); + reference operator = (bool val); + operator bool () const; + private: + Dynamic_Bitset* bitset_; + size_type bit_; + }; + + Dynamic_Bitset(size_type size=0); + ~Dynamic_Bitset(); + Dynamic_Bitset(const Dynamic_Bitset& other); + Dynamic_Bitset& operator = (const Dynamic_Bitset& other); + Dynamic_Bitset& operator &=(const Dynamic_Bitset& other); + + reference operator[](size_type bit); + + size_type size() const; + bool test(size_type bit) const; + + void set(size_type bit, bool val = true); + void flip(); + void resize(size_type num_bits, bool value = false); + friend bool operator == (const Dynamic_Bitset& lhs, const Dynamic_Bitset& rhs); +private: + block* buffer_; + size_type buffer_size_; + size_type bit_size_; +}; + +bool operator == (const Dynamic_Bitset& lhs, const Dynamic_Bitset& rhs); + +inline Dynamic_Bitset operator & (const Dynamic_Bitset& lhs, const Dynamic_Bitset& rhs) +{ + Dynamic_Bitset tmp(lhs); + tmp &= rhs; + return tmp; +} + + + +inline Dynamic_Bitset::reference::reference(Dynamic_Bitset* bitset, size_type bit) +: bitset_(bitset), bit_(bit) +{ +} + +inline Dynamic_Bitset::reference Dynamic_Bitset::reference::operator = (bool val) +{ + bitset_->set(bit_, val); + return *this; +} + +inline Dynamic_Bitset::reference::operator bool () const +{ + return bitset_->test(bit_); +} + + + +inline Dynamic_Bitset::~Dynamic_Bitset() +{ + delete[] buffer_; +} + +inline Dynamic_Bitset::Dynamic_Bitset(const Dynamic_Bitset& other) +: buffer_(new block[other.buffer_size_]) +, buffer_size_(other.buffer_size_) +, bit_size_(other.bit_size_) +{ + memcpy(buffer_, other.buffer_, buffer_size_*BYTES_PER_BLOCK); +} + + + + +inline Dynamic_Bitset::size_type Dynamic_Bitset::size() const +{ + return bit_size_; +} + +inline Dynamic_Bitset::reference Dynamic_Bitset::operator[](size_type bit) +{ + return Dynamic_Bitset::reference(this, bit); +} + + +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Become_Primary_Listener.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Become_Primary_Listener.cpp new file mode 100644 index 00000000000..b378fb7d71c --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Become_Primary_Listener.cpp @@ -0,0 +1,8 @@ +// $Id$ + +#include "FTEC_Become_Primary_Listener.h" + + +TAO_FTEC_Become_Primary_Listener::~TAO_FTEC_Become_Primary_Listener() +{ +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Become_Primary_Listener.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Become_Primary_Listener.h new file mode 100644 index 00000000000..87f4f8cb889 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Become_Primary_Listener.h @@ -0,0 +1,25 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file FTEC_Become_Primary_Listener.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef TAO_FTEC_BECOME_PRIMARY_LISTENER_H +#define TAO_FTEC_BECOME_PRIMARY_LISTENER_H + +#include "ftrtec_export.h" + +class TAO_FTRTEC_Export TAO_FTEC_Become_Primary_Listener +{ +public: + virtual ~TAO_FTEC_Become_Primary_Listener(); + virtual void become_primary()=0; +}; + +#endif // TAO_FTEC_BECOME_PRIMARY_LISTENER_H diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ConsumerAdmin.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ConsumerAdmin.cpp new file mode 100644 index 00000000000..c601355e0ed --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ConsumerAdmin.cpp @@ -0,0 +1,47 @@ +// $Id$ + +#include "orbsvcs/Event/EC_ProxyConsumer.h" +#include "orbsvcs/Event/EC_Event_Channel_Base.h" +#include "FTEC_ConsumerAdmin.h" +#include "FTEC_ProxySupplier.h" +#include "ProxySupplierStateWorker.h" + +ACE_RCSID (EventChannel, + TAO_FTEC_ConsumerAdmin, + "$Id$") + +const FtRtecEventChannelAdmin::OperationType +TAO_FTEC_ConsumerAdmin::OBTAIN_ID = FtRtecEventChannelAdmin::OBTAIN_PUSH_SUPPLIER; + + +TAO_FTEC_ConsumerAdmin::TAO_FTEC_ConsumerAdmin (TAO_EC_Event_Channel_Base *ec) + : TAO_EC_ConsumerAdmin (ec) + , FT_Aspect(this, this->event_channel_->consumer_poa ()) +{ +} + +TAO_FTEC_ConsumerAdmin::~TAO_FTEC_ConsumerAdmin (void) +{ +} + + + +RtecEventChannelAdmin::ProxyPushSupplier_ptr +TAO_FTEC_ConsumerAdmin::obtain_push_supplier (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + ACE_DEBUG((LM_DEBUG,"obtain_push_supplier\n" )); + return obtain_proxy(ACE_ENV_SINGLE_ARG_PARAMETER); +} + +void +TAO_FTEC_ConsumerAdmin::disconnect(RtecEventChannelAdmin::ProxyPushSupplier_ptr obj) +{ + ACE_TRY_NEW_ENV { + obj->disconnect_push_supplier(ACE_ENV_SINGLE_ARG_PARAMETER); + } + ACE_CATCHALL { + } + ACE_ENDTRY; +} + diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ConsumerAdmin.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ConsumerAdmin.h new file mode 100644 index 00000000000..25da063586a --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ConsumerAdmin.h @@ -0,0 +1,69 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file FTEC_ConsumerAdmin.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= +#ifndef TAO_FTEC_CONSUMERADMIN_H +#define TAO_FTEC_CONSUMERADMIN_H +#include "ace/pre.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "orbsvcs/Event/EC_ConsumerAdmin.h" +#include "FT_ProxyAdmin_T.h" +#include "ProxySupplierStateWorker.h" + +namespace FtRtecEventChannelAdmin { + struct ConsumerAdminState; +}; + + +class TAO_FTEC_Event_Channel_Impl; +class TAO_FTEC_ProxyPushSupplier; +/** + * @class TAO_FTEC_ConsumerAdmin + * + * @brief Implements the ConsumerAdmin interface, i.e. the factory for + * TAO_FTEC_ProxyPushSupplier objects. + * + */ +class TAO_FTEC_ConsumerAdmin + : public TAO_EC_ConsumerAdmin + , public FT_ProxyAdmin<TAO_FTEC_ConsumerAdmin, + TAO_FTEC_ProxyPushSupplier, + RtecEventChannelAdmin::ProxyPushSupplier, + FtRtecEventChannelAdmin::ConsumerAdminState> +{ +public: + static const FtRtecEventChannelAdmin::OperationType OBTAIN_ID ; + + typedef FT_ProxyAdmin<TAO_FTEC_ConsumerAdmin, + TAO_FTEC_ProxyPushSupplier, + RtecEventChannelAdmin::ProxyPushSupplier, + FtRtecEventChannelAdmin::ConsumerAdminState> + FT_Aspect; + + typedef ProxySupplierStateWorker StateWorker; + TAO_FTEC_ConsumerAdmin (TAO_EC_Event_Channel_Base* event_channel); + + /// destructor... + virtual ~TAO_FTEC_ConsumerAdmin (void); + + // = The RtecEventChannelAdmin::ConsumerAdmin methods... + virtual RtecEventChannelAdmin::ProxyPushSupplier_ptr + obtain_push_supplier (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)); + + void disconnect(RtecEventChannelAdmin::ProxyPushSupplier_ptr obj); +}; + +#include "ace/post.h" +#endif /* TAO_EC_CONSUMERADMIN_H */ diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.cpp new file mode 100644 index 00000000000..f10dcae7493 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.cpp @@ -0,0 +1,427 @@ +// $Id$ + +#include "ace/Dynamic_Service.h" +#include "FTEC_Event_Channel.h" +#include "FTEC_Event_Channel_Impl.h" +#include "../Utils/activate_with_id.h" +#include "../Utils/resolve_init.h" +#include "../Utils/UUID.h" +#include "Fault_Detector_Loader.h" +#include "Fault_Detector.h" +#include "Request_Context_Repository.h" +#include "Replication_Service.h" +#include "Identification_Service.h" +#include "create_persistent_poa.h" +#include "tao/Utils/PolicyList_Destroyer.h" +#include "GroupInfoPublisher.h" + +ACE_RCSID (EventChannel, + TAO_FTEC_Event_Channel, + "$Id$") + +TAO_FTEC_Event_Channel::TAO_FTEC_Event_Channel(CORBA::ORB_var orb, + PortableServer::POA_var poa) +: orb_(orb) +, poa_(poa) +, ec_impl_(NULL) +{ +} + +TAO_FTEC_Event_Channel::~TAO_FTEC_Event_Channel() +{ + delete ec_impl_; +} + + +void setup_object_group(TAO_FTEC_Event_Channel* es, + CosNaming::NamingContext_ptr naming_context, + TAO_FTEC_Event_Channel::MEMBERSHIP membership, + FtRtecEventChannelAdmin::EventChannel_ptr ec + ACE_ENV_ARG_DECL) +{ + if (membership != TAO_FTEC_Event_Channel::NONE) {// register to naming service + FTRT::ManagerInfoList member_list; + member_list.length(1); + member_list[0].the_location = Fault_Detector::instance()->my_location(); + member_list[0].ior = FTRT::ObjectGroupManager::_duplicate(ec); + + if (membership == TAO_FTEC_Event_Channel::PRIMARY) + es->create_group(member_list, 0 + ACE_ENV_ARG_PARAMETER); + + else { // BACKUP + FtRtecEventChannelAdmin::EventChannel_var primary = + resolve<FtRtecEventChannelAdmin::EventChannel>(naming_context, + FTRTEC::Identification_Service::instance()->name() + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + ACE_DEBUG((LM_DEBUG, "Got Primary address from Naming Service\n")); + + primary->join_group(member_list[0] ACE_ENV_ARG_PARAMETER); + } + ACE_CHECK; + } +} + + +FtRtecEventChannelAdmin::EventChannel_ptr +TAO_FTEC_Event_Channel::activate(TAO_FTEC_Event_Channel::MEMBERSHIP membership + ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) +{ + FTRTEC::Fault_Detector_Loader* detector_loader = + ACE_Dynamic_Service<FTRTEC::Fault_Detector_Loader>::instance("FTRTEC_Fault_Detector"); + + detector_loader->init(0, 0); + + if (FTRTEC::Identification_Service::instance() == 0) + ACE_ERROR_RETURN((LM_ERROR, "No Identification\n"), 0); + + // initialize naming_contex + CosNaming::NamingContext_var naming_context + = resolve_init<CosNaming::NamingContext>(orb_.in(), "NameService" + ACE_ENV_ARG_PARAMETER); + // initialize group info publisher + GroupInfoPublisher::instance()->set_naming_context(naming_context); + + if (FTRTEC::Replication_Service::instance()->init(0,0) == -1) + return 0; + + GroupInfoPublisher::instance()->subscribe(FTRTEC::Replication_Service::instance()); + + Request_Context_Repository().init(orb_.in()); + + // get POAManager + PortableServer::POAManager_var mgr = poa_->the_POAManager(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + + TAO::Utils::PolicyList_Destroyer policy_list(2); + + persistent_poa_ = + create_persistent_poa(poa_, mgr, "FTEC_Persistant_POA", policy_list ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + + // Activate the Event channel implementation + + TAO_EC_Event_Channel_Attributes attr (persistent_poa_.in (), + persistent_poa_.in ()); + + + TAO_FTEC_Event_Channel_Impl* ec; + ACE_NEW_THROW_EX (ec, + TAO_FTEC_Event_Channel_Impl (attr), + CORBA::NO_MEMORY()); + + this->ec_impl_ = ec; + + const PortableServer::ObjectId& object_id + = FTRTEC::Identification_Service::instance()->object_id(); + + PortableServer::ObjectId consumer_admin_object_id(object_id); + consumer_admin_object_id[9]++; + + PortableServer::ObjectId supplier_admin_object_id(consumer_admin_object_id); + supplier_admin_object_id[9]++; + + ec->activate(orb_, + supplier_admin_object_id, + consumer_admin_object_id + ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + + FtRtecEventChannelAdmin::EventChannel_var result; + activate_object_with_id(result.out(), persistent_poa_, this, object_id + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + + + setup_object_group(this, + naming_context.in(), + membership, + result.in() + ACE_ENV_ARG_PARAMETER); + return result._retn(); +} + + +void TAO_FTEC_Event_Channel::set_listener(TAO_FTEC_Become_Primary_Listener* listener) +{ + GroupInfoPublisher::instance()->subscribe(listener); +} + +void TAO_FTEC_Event_Channel::set_update ( + const FTRT::State & s + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + , FTRT::InvalidUpdate + , FTRT::OutOfSequence + )) +{ + ec_impl_->set_update(s ACE_ENV_ARG_PARAMETER); +} + +void TAO_FTEC_Event_Channel::oneway_set_update ( + const FTRT::State & s + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )) +{ + ec_impl_->set_update(s ACE_ENV_ARG_PARAMETER); +} + + +RtecEventChannelAdmin::ConsumerAdmin_ptr +TAO_FTEC_Event_Channel::for_consumers (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + return ec_impl_->for_consumers(ACE_ENV_SINGLE_ARG_PARAMETER); +} + +RtecEventChannelAdmin::SupplierAdmin_ptr +TAO_FTEC_Event_Channel::for_suppliers (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + return ec_impl_->for_suppliers(ACE_ENV_SINGLE_ARG_PARAMETER); +} + + +void +TAO_FTEC_Event_Channel::set_state (const FTRT::State & s ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, FTRT::InvalidState)) +{ + ACE_DEBUG((LM_DEBUG, "TAO_FTEC_Event_Channel::set_state\n")); + ec_impl_->set_state(s ACE_ENV_ARG_PARAMETER); +} + +void +TAO_FTEC_Event_Channel::destroy (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + if (Fault_Detector::instance()) + Fault_Detector::instance()->stop(); + + ec_impl_->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + this->orb_->shutdown (); +} + +RtecEventChannelAdmin::Observer_Handle +TAO_FTEC_Event_Channel::append_observer (RtecEventChannelAdmin::Observer_ptr observer + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC (( + CORBA::SystemException, + RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR, + RtecEventChannelAdmin::EventChannel::CANT_APPEND_OBSERVER)) +{ + /// we have yet to implement the replication of observers + /// throw an exception for the moment + ACE_THROW(RtecEventChannelAdmin::EventChannel::CANT_APPEND_OBSERVER()); + ACE_CHECK; + + return this->ec_impl_->append_observer (observer ACE_ENV_ARG_PARAMETER); +} + +void +TAO_FTEC_Event_Channel::remove_observer (RtecEventChannelAdmin::Observer_Handle handle + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC (( + CORBA::SystemException, + RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR, + RtecEventChannelAdmin::EventChannel::CANT_REMOVE_OBSERVER)) +{ + /// we have yet to implement the replication of observers + /// throw an exception for the moment + ACE_THROW(RtecEventChannelAdmin::EventChannel::CANT_REMOVE_OBSERVER()); + ACE_CHECK; + + ec_impl_->remove_observer (handle ACE_ENV_ARG_PARAMETER); +} + + + +CORBA::Boolean +TAO_FTEC_Event_Channel::start ( + FTRT::FaultListener_ptr listener, + FTRT::Location_out location + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )) +{ + return ec_impl_->start(listener, location); +} + +void +TAO_FTEC_Event_Channel::create_group ( + const FTRT::ManagerInfoList & info_list, + CORBA::ULong object_group_ref_version + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + , FTRT::PredecessorUnreachable + )) +{ + ec_impl_->create_group(info_list, object_group_ref_version ACE_ENV_ARG_PARAMETER); +} + +void +TAO_FTEC_Event_Channel::join_group ( + const FTRT::ManagerInfo & info + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )) +{ + ec_impl_->join_group(info ACE_ENV_ARG_PARAMETER); +} + +void +TAO_FTEC_Event_Channel::add_member ( + const FTRT::ManagerInfo & info, + CORBA::ULong object_group_ref_version + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )) +{ + ec_impl_->add_member(info, object_group_ref_version ACE_ENV_ARG_PARAMETER); +} + +void +TAO_FTEC_Event_Channel::remove_member ( + const FTRT::Location & crashed_location, + CORBA::ULong object_group_ref_version + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )) +{ + ec_impl_->remove_member(crashed_location, + object_group_ref_version + ACE_ENV_ARG_PARAMETER); +} + +void +TAO_FTEC_Event_Channel::replica_crashed ( + const FTRT::Location & location + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )) +{ + ec_impl_->replica_crashed(location ACE_ENV_ARG_PARAMETER); +} + + + /// EventChannelFacade Interface + +::FtRtecEventChannelAdmin::ObjectId * +TAO_FTEC_Event_Channel::connect_push_consumer ( + RtecEventComm::PushConsumer_ptr push_consumer, + const RtecEventChannelAdmin::ConsumerQOS & qos + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + , RtecEventChannelAdmin::TypeError + )) +{ + return ec_impl_->connect_push_consumer(push_consumer, qos + ACE_ENV_ARG_PARAMETER); +} + + +::FtRtecEventChannelAdmin::ObjectId * +TAO_FTEC_Event_Channel::connect_push_supplier ( + RtecEventComm::PushSupplier_ptr push_supplier, + const RtecEventChannelAdmin::SupplierQOS & qos + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )) +{ + return ec_impl_->connect_push_supplier(push_supplier, qos + ACE_ENV_ARG_PARAMETER); + +} + +void +TAO_FTEC_Event_Channel::disconnect_push_supplier ( + const FtRtecEventChannelAdmin::ObjectId & oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )) +{ + ec_impl_->disconnect_push_supplier(oid + ACE_ENV_ARG_PARAMETER); +} + +void +TAO_FTEC_Event_Channel::disconnect_push_consumer ( + const FtRtecEventChannelAdmin::ObjectId & oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )) +{ + ec_impl_->disconnect_push_consumer(oid + ACE_ENV_ARG_PARAMETER); +} + +void +TAO_FTEC_Event_Channel::suspend_push_supplier ( + const FtRtecEventChannelAdmin::ObjectId & oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + , FtRtecEventComm::InvalidObjectID + )) +{ + ec_impl_->suspend_push_supplier(oid + ACE_ENV_ARG_PARAMETER); +} + +void +TAO_FTEC_Event_Channel::resume_push_supplier ( + const FtRtecEventChannelAdmin::ObjectId & oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + , FtRtecEventComm::InvalidObjectID + )) +{ + ec_impl_->resume_push_supplier(oid + ACE_ENV_ARG_PARAMETER); +} + +void +TAO_FTEC_Event_Channel::push ( + const FtRtecEventChannelAdmin::ObjectId & oid, + const RtecEventComm::EventSet & data + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + , FtRtecEventComm::InvalidObjectID + )) +{ + ec_impl_->push(oid, data + ACE_ENV_ARG_PARAMETER); +} + diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.h new file mode 100644 index 00000000000..52971b9304e --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.h @@ -0,0 +1,180 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file FTEC_Event_Channel.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= +#ifndef FTEC_EVENT_CHANNEL_H +#define FTEC_EVENT_CHANNEL_H + +#include "ftrtec_export.h" +#include "orbsvcs/FtRtecEventChannelAdminS.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class TAO_FTEC_Event_Channel_Impl; +class TAO_FTEC_Become_Primary_Listener; + +class TAO_FTRTEC_Export TAO_FTEC_Event_Channel + : public POA_FtRtecEventChannelAdmin::EventChannel +{ +public: + + + TAO_FTEC_Event_Channel(CORBA::ORB_var orb, + PortableServer::POA_var poa); + + ~TAO_FTEC_Event_Channel(); + + enum MEMBERSHIP { + NONE, + PRIMARY, + BACKUP + }; + + /** + * Activates the FT Event Channel. + * + * If the FT EC is activated as a primary, the EC will register itself to the NameService. + * If it is activated as a backup, it will try to look up the primary from the NameService + * and then join the object group. + * + * @param membership Specify the role the activated event channel in an object group. + * + */ + FtRtecEventChannelAdmin::EventChannel_ptr + activate(MEMBERSHIP membership ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS); + + /** + * Registers a listener to accept the notication when this object + * becomes the primary of the object group. + */ + void set_listener(TAO_FTEC_Become_Primary_Listener* listener); + + + /// RtecEventChannelAdmin::EventChannel Interface + + virtual RtecEventChannelAdmin::ConsumerAdmin_ptr + for_consumers (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual RtecEventChannelAdmin::SupplierAdmin_ptr + for_suppliers (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual RtecEventChannelAdmin::Observer_Handle + append_observer (RtecEventChannelAdmin::Observer_ptr observer ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException, RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR, + RtecEventChannelAdmin::EventChannel::CANT_APPEND_OBSERVER)); + + virtual void remove_observer (RtecEventChannelAdmin::Observer_Handle ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException,RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR, + RtecEventChannelAdmin::EventChannel::CANT_REMOVE_OBSERVER)); + + /// EventChannelFacade Interface, used by FTEC gateway + + virtual ::FtRtecEventChannelAdmin::ObjectId * connect_push_consumer ( + RtecEventComm::PushConsumer_ptr push_consumer, + const RtecEventChannelAdmin::ConsumerQOS & qos + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC (( CORBA::SystemException, RtecEventChannelAdmin::TypeError)) ; + + + virtual ::FtRtecEventChannelAdmin::ObjectId * connect_push_supplier ( + RtecEventComm::PushSupplier_ptr push_supplier, + const RtecEventChannelAdmin::SupplierQOS & qos + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)) ; + + virtual void disconnect_push_supplier ( + const FtRtecEventChannelAdmin::ObjectId & oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void disconnect_push_consumer ( + const FtRtecEventChannelAdmin::ObjectId & oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)) ; + + virtual void suspend_push_supplier ( + const FtRtecEventChannelAdmin::ObjectId & oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, FtRtecEventComm::InvalidObjectID)); + + virtual void resume_push_supplier ( + const FtRtecEventChannelAdmin::ObjectId & oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, FtRtecEventComm::InvalidObjectID)) ; + + virtual void push ( + const FtRtecEventChannelAdmin::ObjectId & oid, + const RtecEventComm::EventSet & data + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, FtRtecEventComm::InvalidObjectID)); + + /// FTRT::GroupManager Interfaces + /// These are used for inter-replica communications + + void set_state ( + const FTRT::State & s ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, FTRT::InvalidState)); + + virtual void set_update (const FTRT::State & s ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, FTRT::InvalidUpdate, FTRT::OutOfSequence)); + + virtual void oneway_set_update (const FTRT::State & s ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + + virtual CORBA::Boolean start ( + FTRT::FaultListener_ptr listener, + FTRT::Location_out cur + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void create_group ( + const FTRT::ManagerInfoList & info_list, + CORBA::ULong object_group_ref_version + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, FTRT::PredecessorUnreachable)) ; + + virtual void join_group ( + const FTRT::ManagerInfo & info + ACE_ENV_ARG_DECL_WITH_DEFAULTS + )ACE_THROW_SPEC ((CORBA::SystemException)) ; + + virtual void add_member ( + const FTRT::ManagerInfo & info, + CORBA::ULong object_group_ref_version + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)) ; + + virtual void remove_member ( + const FTRT::Location & crashed_location, + CORBA::ULong object_group_ref_version + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void replica_crashed ( + const FTRT::Location & location + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)) ; + + +private: + CORBA::ORB_var orb_; + PortableServer::POA_var poa_, persistent_poa_; + TAO_FTEC_Event_Channel_Impl* ec_impl_; +}; + +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel_Impl.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel_Impl.cpp new file mode 100644 index 00000000000..6b35312b2aa --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel_Impl.cpp @@ -0,0 +1,571 @@ +// $Id$ + +#include "FTEC_Event_Channel_Impl.h" +#include "FTEC_Factory.h" +#include "FTEC_SupplierAdmin.h" +#include "FTEC_ConsumerAdmin.h" +#include "FTEC_ProxyConsumer.h" +#include "FTEC_ProxySupplier.h" +#include "../Utils/ScopeGuard.h" +#include "FtEventServiceInterceptor.h" +#include "FT_ProxyAdmin_Base.h" +#include "IOGR_Maker.h" +#include "Replication_Service.h" + +ACE_RCSID (EventChannel, + FTEC_Event_Channel_Impl, + "$Id$") + +void obtain_push_supplier(TAO_FTEC_Event_Channel_Impl* ec, + FtRtecEventChannelAdmin::Operation& op + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + ec->consumer_admin()->obtain_proxy(op ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; +} + +void obtain_push_consumer(TAO_FTEC_Event_Channel_Impl* ec, + FtRtecEventChannelAdmin::Operation& op + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + ec->supplier_admin()->obtain_proxy(op ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; +} + +void obtain_push_consumer_and_connect(TAO_FTEC_Event_Channel_Impl* ec, + const FtRtecEventChannelAdmin::ObjectId& oid, + RtecEventComm::PushSupplier_ptr push_supplier, + const RtecEventChannelAdmin::SupplierQOS & qos + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + Request_Context_Repository().set_object_id(oid); + + RtecEventChannelAdmin::ProxyPushConsumer_var consumer = + ec->supplier_admin()->obtain(ACE_ENV_SINGLE_ARG_PARAMETER); + + ACE_CHECK_RETURN(0); + + ScopeGuard guard = MakeObjGuard(*ec->supplier_admin(), + &TAO_FTEC_SupplierAdmin::disconnect, + consumer.in()); + + consumer->connect_push_supplier(push_supplier, qos + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + guard.Dismiss(); +} + + +void connect_push_supplier(TAO_FTEC_Event_Channel_Impl* ec, + FtRtecEventChannelAdmin::Operation& op + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + PortableServer::POA_var poa= ec->supplier_poa(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + FtRtecEventChannelAdmin::Connect_push_supplier_param& param + = op.param.connect_supplier_param(); + + TAO_FTEC_ProxyPushConsumer* proxy + = ec->find_proxy_push_consumer(op.object_id); + + if (proxy == NULL) { + obtain_push_consumer_and_connect(ec, + op.object_id, + param.push_supplier.in(), + param.qos + ACE_ENV_ARG_PARAMETER); + } + else { + proxy->connect_push_supplier(param.push_supplier.in(), + param.qos + ACE_ENV_ARG_PARAMETER); + } + ACE_CHECK; +} + +void obtain_push_supplier_and_connect(TAO_FTEC_Event_Channel_Impl* ec, + const FtRtecEventChannelAdmin::ObjectId& oid, + RtecEventComm::PushConsumer_ptr push_consumer, + const RtecEventChannelAdmin::ConsumerQOS & qos + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + Request_Context_Repository().set_object_id(oid); + + RtecEventChannelAdmin::ProxyPushSupplier_var supplier = + ec->consumer_admin()->obtain(ACE_ENV_SINGLE_ARG_PARAMETER); + + ACE_CHECK_RETURN(0); + + ScopeGuard guard = MakeObjGuard(*ec->consumer_admin(), + &TAO_FTEC_ConsumerAdmin::disconnect, + supplier.in()); + + supplier->connect_push_consumer(push_consumer, qos + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + guard.Dismiss(); +} + + +void connect_push_consumer(TAO_FTEC_Event_Channel_Impl* ec, + FtRtecEventChannelAdmin::Operation& op + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + PortableServer::POA_var poa= ec->consumer_poa(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + FtRtecEventChannelAdmin::Connect_push_consumer_param& param + = op.param.connect_consumer_param(); + + TAO_FTEC_ProxyPushSupplier* proxy = ec->find_proxy_push_supplier(op.object_id); + + if (proxy == NULL){ + obtain_push_supplier_and_connect(ec, + op.object_id, + param.push_consumer.in(), + param.qos + ACE_ENV_ARG_PARAMETER); + } + else { + proxy->connect_push_consumer(param.push_consumer.in(), + param.qos + ACE_ENV_ARG_PARAMETER); + } + ACE_CHECK; +} + +void disconnect_push_supplier(TAO_FTEC_Event_Channel_Impl* ec, + FtRtecEventChannelAdmin::Operation& op + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + PortableServer::POA_var poa= ec->consumer_poa(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + TAO_FTEC_ProxyPushSupplier* proxy = ec->find_proxy_push_supplier(op.object_id); + + + if (proxy == NULL) // proxy not found + ACE_THROW(FTRT::InvalidUpdate()); + + ACE_CHECK; + proxy->disconnect_push_supplier(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; +} + +void disconnect_push_consumer(TAO_FTEC_Event_Channel_Impl* ec, + FtRtecEventChannelAdmin::Operation& op + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + PortableServer::POA_var poa= ec->supplier_poa(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + TAO_FTEC_ProxyPushConsumer* proxy = ec->find_proxy_push_consumer(op.object_id); + + if (proxy == NULL) // proxy not found + ACE_THROW(FTRT::InvalidUpdate()); + + ACE_CHECK; + proxy->disconnect_push_consumer(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; +} + + +void suspend_connection (TAO_FTEC_Event_Channel_Impl* ec, + FtRtecEventChannelAdmin::Operation& op + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + PortableServer::POA_var poa= ec->consumer_poa(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + TAO_FTEC_ProxyPushSupplier* proxy = ec->find_proxy_push_supplier(op.object_id); + + + if (proxy == NULL) // proxy not found + ACE_THROW(FTRT::InvalidUpdate()); + + ACE_CHECK; + proxy->suspend_connection(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; +} + +void resume_connection(TAO_FTEC_Event_Channel_Impl* ec, + FtRtecEventChannelAdmin::Operation& op + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + PortableServer::POA_var poa= ec->consumer_poa(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + TAO_FTEC_ProxyPushSupplier* proxy = ec->find_proxy_push_supplier(op.object_id); + + + if (proxy == NULL) // proxy not found + ACE_THROW(FTRT::InvalidUpdate()); + + ACE_CHECK; + proxy->resume_connection(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; +} + + +typedef void (*Set_update_fun)(TAO_FTEC_Event_Channel_Impl* ec, + FtRtecEventChannelAdmin::Operation& op + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + +Set_update_fun update_table[] = { + &obtain_push_supplier, + &obtain_push_consumer, + &disconnect_push_supplier, + &disconnect_push_consumer, + &suspend_connection, + &resume_connection, + &connect_push_supplier, + &connect_push_consumer +}; + +TAO_FTEC_Event_Channel_Impl::TAO_FTEC_Event_Channel_Impl( + const TAO_EC_Event_Channel_Attributes& attributes) + : TAO_EC_Event_Channel_Base(attributes, new TAO_FTEC_Basic_Factory, false) +{ + this->scheduler_ = + CORBA::Object::_duplicate (attributes.scheduler); + + this->create_strategies (); + +} + +TAO_FTEC_Event_Channel_Impl::~TAO_FTEC_Event_Channel_Impl() +{ +} + + +TAO_FTEC_Basic_Factory* +TAO_FTEC_Event_Channel_Impl::factory() +{ + return static_cast<TAO_FTEC_Basic_Factory*>(TAO_EC_Event_Channel_Base::factory()); +} + + +/// Start the internal threads (if any), etc. +/// After this call the EC can be used. +void +TAO_FTEC_Event_Channel_Impl::activate ( + CORBA::ORB_var orb, + const PortableServer::ObjectId& supplier_admin_oid, + const PortableServer::ObjectId& consumer_admin_oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + + iogr_maker_.init(orb.in() ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + TAO_EC_Event_Channel_Base::activate(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + supplier_admin()->activate(supplier_admin_oid ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + consumer_admin()->activate(consumer_admin_oid ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + + + +// = The RtecEventChannelAdmin::EventChannel methods... +/// The default implementation is: +/// this->consumer_admin ()->_this (ACE_ENV_SINGLE_ARG_PARAMETER); +RtecEventChannelAdmin::ConsumerAdmin_ptr +TAO_FTEC_Event_Channel_Impl::for_consumers (ACE_ENV_SINGLE_ARG_DECL) +ACE_THROW_SPEC ((CORBA::SystemException)) +{ + CORBA::Object_var obj = consumer_admin()->reference(ACE_ENV_SINGLE_ARG_PARAMETER); + obj = IOGR_Maker::instance()->forge_iogr(obj.in() + ACE_ENV_ARG_PARAMETER); + return RtecEventChannelAdmin::ConsumerAdmin::_narrow(obj.in() ACE_ENV_ARG_PARAMETER); +} + + +/// The default implementation is: +/// this->supplier_admin ()->_this (ACE_ENV_SINGLE_ARG_PARAMETER); +RtecEventChannelAdmin::SupplierAdmin_ptr +TAO_FTEC_Event_Channel_Impl::for_suppliers (ACE_ENV_SINGLE_ARG_DECL) +ACE_THROW_SPEC ((CORBA::SystemException)) +{ + CORBA::Object_var obj = supplier_admin()->reference(ACE_ENV_SINGLE_ARG_PARAMETER); + obj = IOGR_Maker::instance()->forge_iogr(obj.in() + ACE_ENV_ARG_PARAMETER); + return RtecEventChannelAdmin::SupplierAdmin::_narrow(obj.in() ACE_ENV_ARG_PARAMETER); +} + + +::FtRtecEventChannelAdmin::ObjectId * +TAO_FTEC_Event_Channel_Impl::connect_push_consumer ( + RtecEventComm::PushConsumer_ptr push_consumer, + const RtecEventChannelAdmin::ConsumerQOS & qos + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) +{ + CORBA::Any_var any + = Request_Context_Repository().get_cached_result(); + + FtRtecEventChannelAdmin::ObjectId *oid; + + if (*any >>= oid) { + FtRtecEventChannelAdmin::ObjectId* result; + ACE_NEW_THROW_EX(result, + FtRtecEventChannelAdmin::ObjectId(*oid), + CORBA::NO_MEMORY()); + return result; + } + + + ACE_NEW_THROW_EX(oid, FtRtecEventChannelAdmin::ObjectId, CORBA::NO_MEMORY()); + + FtRtecEventChannelAdmin::ObjectId_var object_id = oid; + + Request_Context_Repository().generate_object_id(*oid); + + obtain_push_supplier_and_connect(this, + object_id.in(), + push_consumer, + qos + ACE_ENV_ARG_PARAMETER); + + ACE_CHECK_RETURN(0); + + return object_id._retn(); +} + + +::FtRtecEventChannelAdmin::ObjectId * +TAO_FTEC_Event_Channel_Impl::connect_push_supplier ( + RtecEventComm::PushSupplier_ptr push_supplier, + const RtecEventChannelAdmin::SupplierQOS & qos + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) +{ + CORBA::Any_var any + = Request_Context_Repository().get_cached_result(); + + FtRtecEventChannelAdmin::ObjectId *oid; + + if (*any >>= oid) { + FtRtecEventChannelAdmin::ObjectId* result; + ACE_NEW_THROW_EX(result, + FtRtecEventChannelAdmin::ObjectId(*oid), + CORBA::NO_MEMORY()); + return result; + } + + + ACE_NEW_THROW_EX(oid, FtRtecEventChannelAdmin::ObjectId, CORBA::NO_MEMORY()); + FtRtecEventChannelAdmin::ObjectId_var object_id = oid; + + Request_Context_Repository().generate_object_id(*oid); + + obtain_push_consumer_and_connect(this, + object_id.in(), + push_supplier, + qos + ACE_ENV_ARG_PARAMETER); + + ACE_CHECK_RETURN(0); + + return object_id._retn(); + +} + +void TAO_FTEC_Event_Channel_Impl::disconnect_push_supplier ( + const FtRtecEventChannelAdmin::ObjectId & oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) +{ + if (Request_Context_Repository().is_executed_request()) + return; + + TAO_FTEC_ProxyPushSupplier* proxy = this->find_proxy_push_supplier(oid); + + if (proxy == NULL) // proxy not found + return; + + ACE_CHECK; + proxy->disconnect_push_supplier(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; +} + +void TAO_FTEC_Event_Channel_Impl::disconnect_push_consumer ( + const FtRtecEventChannelAdmin::ObjectId & oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) +{ + if (Request_Context_Repository().is_executed_request()) + return; + + TAO_FTEC_ProxyPushConsumer* proxy = this->find_proxy_push_consumer(oid); + + if (proxy == NULL) // proxy not found + return; + + ACE_CHECK; + proxy->disconnect_push_consumer(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; +} + +void TAO_FTEC_Event_Channel_Impl::suspend_push_supplier ( + const FtRtecEventChannelAdmin::ObjectId & oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) +{ + if (Request_Context_Repository().is_executed_request()) + return; + + TAO_FTEC_ProxyPushSupplier* proxy = this->find_proxy_push_supplier(oid); + + if (proxy == NULL) // proxy not found + ACE_THROW(FtRtecEventComm::InvalidObjectID()); + + ACE_CHECK; + proxy->suspend_connection(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; +} + + +void TAO_FTEC_Event_Channel_Impl::resume_push_supplier ( + const FtRtecEventChannelAdmin::ObjectId & oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) +{ + if (Request_Context_Repository().is_executed_request()) + return; + + TAO_FTEC_ProxyPushSupplier* proxy = this->find_proxy_push_supplier(oid); + + if (proxy == NULL) // proxy not found + ACE_THROW(FtRtecEventComm::InvalidObjectID()); + + ACE_CHECK; + proxy->resume_connection(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; +} + +void TAO_FTEC_Event_Channel_Impl::push ( + const FtRtecEventChannelAdmin::ObjectId & oid, + const RtecEventComm::EventSet & data + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) +{ + TAO_FTEC_ProxyPushConsumer* proxy = this->find_proxy_push_consumer(oid); + + if (proxy == NULL) // proxy not found + ACE_THROW(FtRtecEventComm::InvalidObjectID()); + + proxy->push(data ACE_ENV_ARG_PARAMETER); +} + + + + +void TAO_FTEC_Event_Channel_Impl::get_state ( + FtRtecEventChannelAdmin::EventChannelState & state + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) +{ + FtEventServiceInterceptor::instance()->get_state(state.cached_operation_results); + this->supplier_admin()->get_state(state.supplier_admin_state); + this->consumer_admin()->get_state(state.consumer_admin_state); +} + + + +void TAO_FTEC_Event_Channel_Impl::set_state (const FTRT::State & stat + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + +{ + FtRtecEventChannelAdmin::EventChannelState state; + + TAO_InputCDR cdr((const char*)stat.get_buffer(), stat.length()); + cdr >> state; + + FtEventServiceInterceptor::instance()->set_state(state.cached_operation_results); + this->supplier_admin()->set_state(state.supplier_admin_state); + this->consumer_admin()->set_state(state.consumer_admin_state); +} + + +void TAO_FTEC_Event_Channel_Impl::set_update (const FTRT::State & s + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, FTRT::InvalidUpdate)) +{ + FTRTEC::Replication_Service::instance()->check_validity(ACE_ENV_ARG_PARAMETER); + + if (!Request_Context_Repository().is_executed_request()) { + TAO_InputCDR cdr((const char*)s.get_buffer(), s.length()); + + FtRtecEventChannelAdmin::Operation_var op(new FtRtecEventChannelAdmin::Operation); + if (!(cdr >> *op)) { + ACE_THROW(FTRT::InvalidUpdate() ); + } + + (update_table[op->param._d()])(this, *op ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + } +} + + +TAO_FTEC_ConsumerAdmin* TAO_FTEC_Event_Channel_Impl::consumer_admin (void) const +{ + return static_cast<TAO_FTEC_ConsumerAdmin*>(TAO_EC_Event_Channel_Base::consumer_admin()); +} + +/// Access the supplier admin implementation, useful for controlling +/// the activation... +TAO_FTEC_SupplierAdmin* TAO_FTEC_Event_Channel_Impl::supplier_admin (void) const +{ + return static_cast<TAO_FTEC_SupplierAdmin*>(TAO_EC_Event_Channel_Base::supplier_admin()); +} + + +TAO_FTEC_ProxyPushSupplier* +TAO_FTEC_Event_Channel_Impl::find_proxy_push_supplier(const PortableServer::ObjectId& id) +{ + ACE_TRY_NEW_ENV { + PortableServer::POA_var poa= consumer_poa(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + PortableServer::Servant servant = poa->id_to_servant(id + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + POA_RtecEventChannelAdmin::ProxyPushSupplier_ptr obj = + ACE_reinterpret_cast ( + POA_RtecEventChannelAdmin::ProxyPushSupplier_ptr, + servant->_downcast ("IDL:RtecEventChannelAdmin/ProxyPushSupplier:1.0") + ); + + return ACE_static_cast(TAO_FTEC_ProxyPushSupplier*, obj); + } + ACE_CATCHALL { + } + ACE_ENDTRY; + return 0; +} + +TAO_FTEC_ProxyPushConsumer* +TAO_FTEC_Event_Channel_Impl::find_proxy_push_consumer(const PortableServer::ObjectId& id) +{ + ACE_TRY_NEW_ENV { + PortableServer::POA_var poa= supplier_poa(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + PortableServer::Servant servant = poa->id_to_servant(id + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + POA_RtecEventChannelAdmin::ProxyPushConsumer_ptr obj = + ACE_reinterpret_cast ( + POA_RtecEventChannelAdmin::ProxyPushConsumer_ptr, + servant->_downcast ("IDL:RtecEventChannelAdmin/ProxyPushConsumer:1.0") + ); + + return ACE_static_cast(TAO_FTEC_ProxyPushConsumer*, obj); + } + ACE_CATCHALL { + } + ACE_ENDTRY; + return 0; +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel_Impl.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel_Impl.h new file mode 100644 index 00000000000..7f23a208cad --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel_Impl.h @@ -0,0 +1,131 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file FTEC_Event_Channel_Impl.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= +#ifndef TAO_FTEC_EVENT_CHANNEL_H +#define TAO_FTEC_EVENT_CHANNEL_H + +#include "ace/Synch_T.h" +#include "orbsvcs/Event/EC_Event_Channel_Base.h" +#include "orbsvcs/FtRtecEventChannelAdminC.h" +#include "FTEC_Factory.h" +#include "FTEC_Group_Manager.h" +#include "IOGR_Maker.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class TAO_FTEC_ProxyPushSupplier; +class TAO_FTEC_ProxyPushConsumer; +class TAO_FTEC_SupplierAdmin; +class TAO_FTEC_ConsumerAdmin; +class FT_ProxyAdmin_Base; + +class TAO_FTEC_Event_Channel_Impl : public TAO_EC_Event_Channel_Base + , public TAO_FTEC_Group_Manager +{ +public: + TAO_FTEC_Event_Channel_Impl(const TAO_EC_Event_Channel_Attributes& attributes); + + ~TAO_FTEC_Event_Channel_Impl(); + + /// Start the internal threads (if any), etc. + /// After this call the EC can be used. + virtual void activate ( + CORBA::ORB_var orb, + const PortableServer::ObjectId& supplier_admin_oid, + const PortableServer::ObjectId& consumer_admin_oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + + + // = The RtecEventChannelAdmin::EventChannel methods... + virtual RtecEventChannelAdmin::ConsumerAdmin_ptr + for_consumers (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + + + virtual RtecEventChannelAdmin::SupplierAdmin_ptr + for_suppliers (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + + void get_state (FtRtecEventChannelAdmin::EventChannelState & s + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + + void set_state (const FTRT::State & stat ACE_ENV_ARG_DECL_WITH_DEFAULTS); + + void set_update (const FTRT::State & s ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, FTRT::InvalidUpdate)); + + /// EventChannelFacade Interface + + virtual ::FtRtecEventChannelAdmin::ObjectId * connect_push_consumer ( + RtecEventComm::PushConsumer_ptr push_consumer, + const RtecEventChannelAdmin::ConsumerQOS & qos + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ); + + + virtual ::FtRtecEventChannelAdmin::ObjectId * connect_push_supplier ( + RtecEventComm::PushSupplier_ptr push_supplier, + const RtecEventChannelAdmin::SupplierQOS & qos + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ); + + virtual void disconnect_push_supplier ( + const FtRtecEventChannelAdmin::ObjectId & oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ); + + virtual void disconnect_push_consumer ( + const FtRtecEventChannelAdmin::ObjectId & oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ); + + virtual void suspend_push_supplier ( + const FtRtecEventChannelAdmin::ObjectId & oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ); + + virtual void resume_push_supplier ( + const FtRtecEventChannelAdmin::ObjectId & oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ); + + virtual void push ( + const FtRtecEventChannelAdmin::ObjectId & oid, + const RtecEventComm::EventSet & data + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ); + + //////////////////////////////////////////// + + /// Access the consumer admin implementation, useful for controlling + /// the activation... + TAO_FTEC_ConsumerAdmin* consumer_admin (void) const; + + /// Access the supplier admin implementation, useful for controlling + /// the activation... + TAO_FTEC_SupplierAdmin* supplier_admin (void) const; + + TAO_FTEC_ProxyPushSupplier* find_proxy_push_supplier(const PortableServer::ObjectId& id); + TAO_FTEC_ProxyPushConsumer* find_proxy_push_consumer(const PortableServer::ObjectId& id); + + + CORBA::Object_var make_iogr(CORBA::Object_ptr obj + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + +protected: + TAO_FTEC_Basic_Factory* factory(); +private: + IOGR_Maker iogr_maker_; +}; + +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Factory.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Factory.cpp new file mode 100644 index 00000000000..b46188a9458 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Factory.cpp @@ -0,0 +1,53 @@ +// $Id$ +#include "orbsvcs/Event/EC_Event_Channel.h" +#include "FTEC_Event_Channel.h" +#include "FTEC_Factory.h" +#include "FTEC_ProxySupplier.h" +#include "FTEC_ProxyConsumer.h" +#include "FTEC_SupplierAdmin.h" +#include "FTEC_ConsumerAdmin.h" + +ACE_RCSID (EventChannel, + FTEC_Factory, + "$Id$") + +TAO_FTEC_Basic_Factory::TAO_FTEC_Basic_Factory (void) +{ +} + +TAO_EC_ConsumerAdmin* +TAO_FTEC_Basic_Factory::create_consumer_admin (TAO_EC_Event_Channel_Base* ec) +{ + return new TAO_FTEC_ConsumerAdmin(ec); +} + +TAO_EC_SupplierAdmin* +TAO_FTEC_Basic_Factory::create_supplier_admin (TAO_EC_Event_Channel_Base* ec) +{ + return new TAO_FTEC_SupplierAdmin(ec); +} + +TAO_EC_ProxyPushSupplier* +TAO_FTEC_Basic_Factory::create_proxy_push_supplier (TAO_EC_Event_Channel_Base* ec) +{ + return new TAO_FTEC_ProxyPushSupplier(ec, consumer_validate_connection_); +} + +TAO_EC_ProxyPushConsumer* +TAO_FTEC_Basic_Factory::create_proxy_push_consumer (TAO_EC_Event_Channel_Base* ec) +{ + return new TAO_FTEC_ProxyPushConsumer(ec); +} + +void +TAO_FTEC_Basic_Factory::destroy_proxy_push_supplier (TAO_EC_ProxyPushSupplier* proxy) +{ + delete proxy; +} + +void +TAO_FTEC_Basic_Factory::destroy_proxy_push_consumer (TAO_EC_ProxyPushConsumer* proxy) +{ + delete proxy; +} + diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Factory.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Factory.h new file mode 100644 index 00000000000..d253716dba1 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Factory.h @@ -0,0 +1,44 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file FTEC_Factory.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= +#ifndef FTEC_FACTORY_H +#define FTEC_FACTORY_H + +#include "orbsvcs/Event/EC_Default_Factory.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class TAO_FTEC_Basic_Factory : public TAO_EC_Default_Factory +{ +public: + /// Constructor + TAO_FTEC_Basic_Factory (void); + virtual TAO_EC_ConsumerAdmin* + create_consumer_admin (TAO_EC_Event_Channel_Base*); + virtual TAO_EC_SupplierAdmin* + create_supplier_admin (TAO_EC_Event_Channel_Base*); + + virtual TAO_EC_ProxyPushSupplier* + create_proxy_push_supplier (TAO_EC_Event_Channel_Base*); + virtual void + destroy_proxy_push_supplier (TAO_EC_ProxyPushSupplier*); + + /// Create and destroy a ProxyPushConsumer + virtual TAO_EC_ProxyPushConsumer* + create_proxy_push_consumer (TAO_EC_Event_Channel_Base*); + virtual void + destroy_proxy_push_consumer (TAO_EC_ProxyPushConsumer*); +}; + +#endif + diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Fault_Listener.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Fault_Listener.h new file mode 100644 index 00000000000..a2106a68aa3 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Fault_Listener.h @@ -0,0 +1,24 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file FTEC_Fault_Listener.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef TAO_FTEC_FAULT_LISTENER_H +#define TAO_FTEC_FAULT_LISTENER_H + + +class TAO_FTEC_Fault_Listener +{ +public: + virtual ~TAO_FTEC_Fault_Listener(){}; + virtual void connection_closed()=0; +}; + +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Group_Manager.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Group_Manager.cpp new file mode 100644 index 00000000000..47d9bc2d86e --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Group_Manager.cpp @@ -0,0 +1,320 @@ +// $Id$ + +#include "FTEC_Group_Manager.h" +#include "ace/Synch_T.h" +#include "Replication_Service.h" +#include "Fault_Detector.h" +#include "IOGR_Maker.h" +#include "GroupInfoPublisher.h" + +ACE_RCSID (EventChannel, + TAO_FTEC_Group_Manager, + "$Id$") + + +inline bool operator == (const TAO_String_Manager& lhs, const TAO_String_Manager& rhs) +{ + return strcmp(lhs.in(), rhs.in()) == 0; +} + +inline bool operator == (const CosNaming::NameComponent& lhs, const CosNaming::NameComponent& rhs) +{ + if (lhs.id == rhs.id) { + if (lhs.kind == rhs.kind) + return true; + } + return false; +} + +bool operator == (const FTRT::Location& lhs, const FTRT::Location& rhs) +{ + if (lhs.length() == rhs.length()) { + for (unsigned i = 0; i < lhs.length(); ++i) + if (!(lhs[i] == rhs[i])) + return false; + return true; + } + return false; +} + +int find_by_location(const FTRT::ManagerInfoList& list, + const FTRT::Location & location) +{ + unsigned i; + for (i = 0; i < list.length(); ++i) { + if (list[i].the_location == location) { + return i; + } + } + return i; +} + +/* +void print(const FTRT::Location& location) +{ + ACE_DEBUG((LM_DEBUG, "{")); + for (size_t i = 0; i < location.length(); ++i) { + ACE_DEBUG((LM_DEBUG, "<%s,%s>", location[i].id.in(), location[i].kind.in())); + } + ACE_DEBUG((LM_DEBUG, "}")); +} +*/ + +struct TAO_FTEC_Group_Manager_Impl +{ + FTRT::ManagerInfoList info_list; + unsigned my_position; + FTRT::FaultListener_var listener; +}; + +TAO_FTEC_Group_Manager::TAO_FTEC_Group_Manager() +: impl_(new TAO_FTEC_Group_Manager_Impl) +{ + Fault_Detector::instance()->set_listener(this); +} + +TAO_FTEC_Group_Manager::~TAO_FTEC_Group_Manager() +{ + delete impl_; +} + +CORBA::Boolean TAO_FTEC_Group_Manager::start ( + FTRT::FaultListener_ptr listener, + FTRT::Location_out cur + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )) +{ + impl_->listener = listener; + ACE_NEW_RETURN(cur , FTRT::Location(Fault_Detector::instance()->my_location()), false); + return true; +} + + +void TAO_FTEC_Group_Manager::create_group ( + const FTRT::ManagerInfoList & info_list, + CORBA::ULong object_group_ref_version + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + ACE_DEBUG((LM_DEBUG, "create_group\n")); + IOGR_Maker::instance()->set_ref_version( object_group_ref_version ); + + impl_->info_list = info_list; + impl_->my_position = find_by_location(info_list, + Fault_Detector::instance()->my_location()); + + GroupInfoPublisherBase* publisher = GroupInfoPublisher::instance(); + + publisher->update(impl_->info_list, impl_->my_position + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + FtRtecEventChannelAdmin::EventChannel_var successor + = publisher->successor(); + + if (!CORBA::is_nil(successor.in())) { + successor->create_group(info_list, object_group_ref_version + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + + if (impl_->my_position > 0) { + Fault_Detector* detector = Fault_Detector::instance(); + if ( detector->connect(impl_->info_list[impl_->my_position-1].the_location) == -1) { + ACE_DEBUG((LM_DEBUG, "Cannot connect to predecesor\n")); + ACE_THROW(FTRT::PredecessorUnreachable()); + } + } +} + +void TAO_FTEC_Group_Manager::join_group ( + const FTRT::ManagerInfo & info + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + ACE_DEBUG((LM_DEBUG, "join group\n")); + if (impl_->my_position == 0) { + FTRTEC::Replication_Service* svc = FTRTEC::Replication_Service::instance(); + ACE_Write_Guard<FTRTEC::Replication_Service> lock(*svc); + add_member(info, IOGR_Maker::instance()->increment_ref_version() ); + } +} + +void TAO_FTEC_Group_Manager::add_member ( + const FTRT::ManagerInfo & info, + CORBA::ULong object_group_ref_version + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + ACE_DEBUG((LM_DEBUG, "add_member location = <%s>\n", + (const char*)info.the_location[0].id)); + + size_t pos = impl_->info_list.length(); + impl_->info_list.length(pos+1); + impl_->info_list[pos] = info; + + IOGR_Maker::instance()->set_ref_version( object_group_ref_version ); + GroupInfoPublisherBase* publisher = GroupInfoPublisher::instance(); + publisher->update(impl_->info_list, impl_->my_position + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + if (impl_->my_position < impl_->info_list.length()-2) + { + // I am not the last of replica, tell my successor that + // a new member has joined in. + ACE_TRY { + publisher->successor()->add_member(info, object_group_ref_version + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + return; + } + ACE_CATCHANY { + // Unable to send request to all the successors. + // Now this node become the last replica of the object group. + } + ACE_ENDTRY; + + // update the info list again + impl_->info_list.length(impl_->my_position+2); + impl_->info_list[impl_->my_position+1] = info; + + publisher->update(impl_->info_list, impl_->my_position + ACE_ENV_ARG_PARAMETER); + } + + + // this is the last replica in the list + // synchornize the state with the newly joined replica. + FtRtecEventChannelAdmin::EventChannelState state; + get_state(state ACE_ENV_ARG_PARAMETER); + + TAO_OutputCDR cdr; + cdr << state; + + FTRT::State s; + if (cdr.begin()->cont()) { + ACE_Message_Block* blk; + ACE_NEW_THROW_EX(blk, ACE_Message_Block, CORBA::NO_MEMORY()); + ACE_CDR::consolidate(blk, cdr.begin()); + s.replace(blk->length(), blk); + blk->release(); + } + else + s.replace(cdr.begin()->length(), cdr.begin()); + + ACE_DEBUG((LM_DEBUG, "Setting state\n")); + info.ior->set_state(s ACE_ENV_ARG_PARAMETER); + info.ior->create_group(impl_->info_list, object_group_ref_version); + ACE_DEBUG((LM_DEBUG, "After create_group\n")); +} + +template <class SEQ> +void remove_item(SEQ & seq, int position) +{ + int i = position; + int len = seq.length()-1; + for (;i < len; ++i) + seq[i] = seq[i+1]; + seq.length(len); +} + +void TAO_FTEC_Group_Manager::replica_crashed ( + const FTRT::Location & location + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + ACE_DEBUG((LM_DEBUG, "TAO_FTEC_Group_Manager::replica_crashed\n")); + FTRTEC::Replication_Service* svc = FTRTEC::Replication_Service::instance(); + ACE_Write_Guard<FTRTEC::Replication_Service> lock(*svc); + remove_member(location, IOGR_Maker::instance()->increment_ref_version()); +} + +void TAO_FTEC_Group_Manager::remove_member ( + const FTRT::Location & crashed_location, + CORBA::ULong object_group_ref_version + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + // find my position of this EventChannel in the group + unsigned crashed_pos = find_by_location(impl_->info_list, crashed_location); + if (crashed_pos >= impl_->info_list.length()) { + return; + } + + ACE_ASSERT(impl_->my_position != crashed_pos); + remove_item(impl_->info_list, crashed_pos); + + if (impl_->my_position > crashed_pos) + --impl_->my_position; + + GroupInfoPublisherBase* publisher = GroupInfoPublisher::instance(); + + publisher->update(impl_->info_list, impl_->my_position + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + FtRtecEventChannelAdmin::EventChannel_var successor = + publisher->successor(); + + IOGR_Maker::instance()->set_ref_version(object_group_ref_version); + if (!CORBA::is_nil(successor.in())) { + + successor->remove_member(crashed_location, + object_group_ref_version + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + + ACE_DEBUG((LM_DEBUG, "2. my_position = %d, crashed_pos = %d\n", impl_->my_position, crashed_pos)); + if (impl_->my_position == crashed_pos && impl_->my_position > 0) + Fault_Detector::instance()->connect(impl_->info_list[impl_->my_position-1].the_location); +} + +void TAO_FTEC_Group_Manager::connection_closed() +{ + ACE_DEBUG((LM_DEBUG, "TAO_FTEC_Group_Manager::connection_closed\n")); + ACE_ASSERT(impl_->my_position > 0); + + // do not use referere here, because the the value pointed by the pointer to + // crashed_location will be repliaced by its successor. + FTRT::Location crashed_location = impl_->info_list[impl_->my_position-1].the_location; + + if (impl_->my_position > 1) { + ACE_TRY_NEW_ENV { + TAO_IOP::TAO_IOR_Manipulation::IORList iors; + iors.length(impl_->my_position-1); + for (size_t i = 0; i < impl_->my_position-1; ++i) + iors[i] = CORBA::Object::_duplicate(impl_->info_list[i].ior.in()); + + CORBA::Object_var obj = + IOGR_Maker::instance()->merge_iors(iors + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + FtRtecEventChannelAdmin::EventChannel_var primary = + FtRtecEventChannelAdmin::EventChannel::_narrow(obj.in() + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + primary->replica_crashed(crashed_location + ACE_ENV_ARG_PARAMETER); + + ACE_TRY_CHECK; + return; + } + ACE_CATCHANY { + } + ACE_ENDTRY; + } + + ACE_TRY_NEW_ENV { + remove_member(crashed_location, + IOGR_Maker::instance()->increment_ref_version() + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + } + ACE_CATCHANY { + } + ACE_ENDTRY; + +} + + diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Group_Manager.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Group_Manager.h new file mode 100644 index 00000000000..dd2aaa0d849 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Group_Manager.h @@ -0,0 +1,77 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file FTEC_Group_Manager.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef TAO_FTEC_GROUP_MANAGER_H +#define TAO_FTEC_GROUP_MANAGER_H + +#include "orbsvcs/FtRtecEventChannelAdminC.h" +#include "FTEC_Fault_Listener.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +struct TAO_FTEC_Group_Manager_Impl; + +class TAO_FTEC_Group_Manager : private TAO_FTEC_Fault_Listener +{ +public: + TAO_FTEC_Group_Manager(); + virtual ~TAO_FTEC_Group_Manager(); + + bool init(CORBA::ORB_ptr orb); + + virtual CORBA::Boolean start ( + FTRT::FaultListener_ptr listener, + FTRT::Location_out cur + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )); + + void create_group ( + const FTRT::ManagerInfoList & info_list, + CORBA::ULong object_group_ref_version + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + + void join_group ( + const FTRT::ManagerInfo & info + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + + void add_member ( + const FTRT::ManagerInfo & info, + CORBA::ULong object_group_ref_version + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + + void remove_member ( + const FTRT::Location & crashed_location, + CORBA::ULong object_group_ref_version + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + + void replica_crashed ( + const FTRT::Location & location + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + +private: + virtual void get_state ( + FtRtecEventChannelAdmin::EventChannelState & s + ACE_ENV_ARG_DECL_WITH_DEFAULTS + )=0; + + virtual void connection_closed(); + +protected: + TAO_FTEC_Group_Manager_Impl* impl_; +}; + +#endif // TAO_FTEC_GROUP_MANAGER_H diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ORBInitializer.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ORBInitializer.cpp new file mode 100644 index 00000000000..aa59c41118a --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ORBInitializer.cpp @@ -0,0 +1,67 @@ +// $Id$ + + +#include "FTEC_ORBInitializer.h" +#include "Set_Update_Interceptor.h" +#include "ForwardCtrlServerInterceptor.h" +#include "FtEventServiceInterceptor.h" +#include "Request_Context_Repository.h" + +ACE_RCSID (EventChannel, + FTEC_ORBInitializer, + "$Id$") + +FTEC_ORBInitializer::FTEC_ORBInitializer () +{ +} + +void +FTEC_ORBInitializer::pre_init ( + PortableInterceptor::ORBInitInfo_ptr + ACE_ENV_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ +} + +void +FTEC_ORBInitializer::post_init ( + PortableInterceptor::ORBInitInfo_ptr info + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + + Request_Context_Repository().allocate_slots(info ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + PortableInterceptor::ClientRequestInterceptor_var client_interceptor; + PortableInterceptor::ClientRequestInterceptor_ptr ctmp; + + ACE_NEW_THROW_EX(ctmp, + TAO_Set_Update_Interceptor, + CORBA::NO_MEMORY()); + + client_interceptor = ctmp; + + info->add_client_request_interceptor (client_interceptor.in() + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + PortableInterceptor::ServerRequestInterceptor_var server_interceptor; + PortableInterceptor::ServerRequestInterceptor_ptr stmp; + + ACE_NEW_THROW_EX(stmp, + ForwardCtrlServerInterceptor, + CORBA::NO_MEMORY()); + server_interceptor = stmp; + + info->add_server_request_interceptor (server_interceptor.in() + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + ACE_NEW_THROW_EX(stmp, + FtEventServiceInterceptor, + CORBA::NO_MEMORY()); + server_interceptor = stmp; + + info->add_server_request_interceptor (server_interceptor.in() + ACE_ENV_ARG_PARAMETER); +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ORBInitializer.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ORBInitializer.h new file mode 100644 index 00000000000..f32b012c267 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ORBInitializer.h @@ -0,0 +1,40 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file FTEC_ORBInitializer.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= +#ifndef FTEC_ORBINITIALIZER__H_ +#define FTEC_ORBINITIALIZER__H_ +#include "ace/pre.h" + +#include "tao/PortableInterceptorC.h" +#include "tao/LocalObject.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class FTEC_ORBInitializer + : public virtual PortableInterceptor::ORBInitializer + , public virtual TAO_Local_RefCounted_Object +{ +public: + FTEC_ORBInitializer (); + + virtual void pre_init (PortableInterceptor::ORBInitInfo_ptr info + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void post_init (PortableInterceptor::ORBInitInfo_ptr info + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); +}; + +#include "ace/post.h" +#endif /* FTEC_ORBINITIALIZER__H_ */ diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxyConsumer.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxyConsumer.cpp new file mode 100644 index 00000000000..6e7c4e28678 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxyConsumer.cpp @@ -0,0 +1,127 @@ +// $Id$ + +#include "FTEC_ProxyConsumer.h" +#include "Request_Context_Repository.h" +#include "Replication_Service.h" +#include "../Utils/activate_with_id.h" +#include "../Utils/ScopeGuard.h" + +ACE_RCSID (EventChannel, + TAO_FTEC_ProxyPushConsumer, + "$Id$") + +const TAO_FTEC_ProxyPushConsumer::RollbackOperation + TAO_FTEC_ProxyPushConsumer::rollback_obtain = + &FtRtecEventChannelAdmin::EventChannelFacade::disconnect_push_consumer; + +TAO_FTEC_ProxyPushConsumer::TAO_FTEC_ProxyPushConsumer (TAO_EC_Event_Channel_Base* event_channel) +: Inherited(event_channel) +{ +} + + +const PortableServer::ObjectId& +TAO_FTEC_ProxyPushConsumer::id() const +{ + return object_id_.in(); +} + + + /// Activate in the POA +void +TAO_FTEC_ProxyPushConsumer::activate ( + RtecEventChannelAdmin::ProxyPushConsumer_ptr &result + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + result = RtecEventChannelAdmin::ProxyPushConsumer::_nil(); + ACE_TRY { + object_id_ = Request_Context_Repository().get_object_id(); + PortableServer::POA_var poa = _default_POA(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + activate_object_with_id(result, poa.in(), this, object_id_ ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, ""); + // ignore exceptions + } + ACE_ENDTRY; +} + + // = The RtecEventChannelAdmin::ProxyPushConsumer methods... +void TAO_FTEC_ProxyPushConsumer::connect_push_supplier ( + RtecEventComm::PushSupplier_ptr push_supplier, + const RtecEventChannelAdmin::SupplierQOS& qos + ACE_ENV_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException, + RtecEventChannelAdmin::AlreadyConnected)) +{ + if (Request_Context_Repository().is_executed_request()) + return; + + FtRtecEventChannelAdmin::Operation update; + update.object_id = this->id(); + FtRtecEventChannelAdmin::Connect_push_supplier_param param; + param.push_supplier = RtecEventComm::PushSupplier::_duplicate(push_supplier); + param.qos = qos; + update.param.connect_supplier_param(param); + + Inherited::connect_push_supplier(push_supplier, qos ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + ScopeGuard guard = MakeObjGuard(*this, &Inherited::disconnect_push_consumer); + + FTRTEC::Replication_Service* svc = FTRTEC::Replication_Service::instance(); + { + ACE_Read_Guard<FTRTEC::Replication_Service> locker(*svc); + + svc->replicate_request(update, + &FtRtecEventChannelAdmin::EventChannelFacade::disconnect_push_consumer + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + + guard.Dismiss(); +} + +void TAO_FTEC_ProxyPushConsumer::disconnect_push_consumer (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + if (Request_Context_Repository().is_executed_request()) + return; + FtRtecEventChannelAdmin::Operation update; + update.object_id = id(); + update.param._d(FtRtecEventChannelAdmin::DISCONNECT_PUSH_CONSUMER); + + Inherited::disconnect_push_consumer(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + FTRTEC::Replication_Service* svc = FTRTEC::Replication_Service::instance(); + ACE_Read_Guard<FTRTEC::Replication_Service> locker(*svc); + + svc->replicate_request(update, 0 ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +void TAO_FTEC_ProxyPushConsumer::get_state(FtRtecEventChannelAdmin::ProxyPushConsumerStat& state) +{ + state.object_id = this->object_id_; + if (this->is_connected()) { + FtRtecEventChannelAdmin::ProxyPushConsumerConnectionInfo info; + info.push_supplier = this->supplier(); + info.qos = this->publications(); + state.parameter.info(info); + } +} + +void TAO_FTEC_ProxyPushConsumer::set_state(const FtRtecEventChannelAdmin::ProxyPushConsumerStat& state) +{ + if (!CORBA::is_nil(state.parameter.info().push_supplier.in()) ) + { + Inherited::connect_push_supplier(state.parameter.info().push_supplier.in(), + state.parameter.info().qos + ACE_ENV_ARG_PARAMETER); + } +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxyConsumer.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxyConsumer.h new file mode 100644 index 00000000000..63a3c49548d --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxyConsumer.h @@ -0,0 +1,62 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file FTEC_ProxyPushConsumer.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= +#ifndef TAO_FTEC_PROXYCONSUMER_H +#define TAO_FTEC_PROXYCONSUMER_H + +#include "orbsvcs/Event/EC_Default_ProxyConsumer.h" +#include "ace/SString.h" +#include "orbsvcs/FtRtecEventChannelAdminC.h" +#include "Request_Context_Repository.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class TAO_FTEC_ProxyPushConsumer : public TAO_EC_Default_ProxyPushConsumer +{ + typedef TAO_EC_Default_ProxyPushConsumer Inherited; +public: + typedef RtecEventChannelAdmin::ProxyPushConsumer Interface; + typedef FtRtecEventChannelAdmin::ProxyPushConsumerStat State; + typedef POA_RtecEventChannelAdmin::ProxyPushConsumer_ptr Skeleton; + + TAO_FTEC_ProxyPushConsumer (TAO_EC_Event_Channel_Base* event_channel); + + virtual void activate ( + RtecEventChannelAdmin::ProxyPushConsumer_ptr &proxy + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + + + // = The RtecEventChannelAdmin::ProxyPushConsumer methods... + virtual void connect_push_supplier ( + RtecEventComm::PushSupplier_ptr push_supplier, + const RtecEventChannelAdmin::SupplierQOS& qos + ACE_ENV_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException, + RtecEventChannelAdmin::AlreadyConnected)); + virtual void disconnect_push_consumer (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)); + + const PortableServer::ObjectId& id() const; + void get_state(FtRtecEventChannelAdmin::ProxyPushConsumerStat& state); + void set_state(const FtRtecEventChannelAdmin::ProxyPushConsumerStat& state); + + typedef void (FtRtecEventChannelAdmin::EventChannelFacade::*RollbackOperation) + (const FtRtecEventChannelAdmin::ObjectId& ACE_ENV_ARG_DECL_WITH_DEFAULTS); + + static const RollbackOperation rollback_obtain; +private: + PortableServer::ObjectId_var object_id_; +}; + +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxySupplier.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxySupplier.cpp new file mode 100644 index 00000000000..aa1f45aee54 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxySupplier.cpp @@ -0,0 +1,191 @@ +// $Id$ + +#include "FTEC_ProxySupplier.h" +#include "../Utils/activate_with_id.h" +#include "Request_Context_Repository.h" +#include "Replication_Service.h" +#include "../Utils/ScopeGuard.h" + +ACE_RCSID (EventChannel, + TAO_FTEC_ProxyPushSupplier, + "$Id$") + +const TAO_FTEC_ProxyPushSupplier::RollbackOperation + TAO_FTEC_ProxyPushSupplier::rollback_obtain = + &FtRtecEventChannelAdmin::EventChannelFacade::disconnect_push_supplier; + +TAO_FTEC_ProxyPushSupplier::TAO_FTEC_ProxyPushSupplier(TAO_EC_Event_Channel_Base* event_channel + ,int validate_connection) +: Inherited(event_channel, validate_connection) +{ +} + +const PortableServer::ObjectId& +TAO_FTEC_ProxyPushSupplier::id() const +{ + return object_id_.in(); +} + + /// Activate in the POA +void +TAO_FTEC_ProxyPushSupplier::activate ( + RtecEventChannelAdmin::ProxyPushSupplier_ptr &result + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + + result = + RtecEventChannelAdmin::ProxyPushSupplier::_nil(); + ACE_TRY { + object_id_ = Request_Context_Repository().get_object_id(); + PortableServer::POA_var poa = _default_POA(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + activate_object_with_id(result, poa.in(), this, id() ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + } + ACE_CATCHANY + { + // ignore exceptions + } + ACE_ENDTRY; +} + + // = The RtecEventChannelAdmin::ProxyPushSupplier methods... +void TAO_FTEC_ProxyPushSupplier::connect_push_consumer ( + RtecEventComm::PushConsumer_ptr push_consumer, + const RtecEventChannelAdmin::ConsumerQOS &qos + ACE_ENV_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException, + RtecEventChannelAdmin::AlreadyConnected, + RtecEventChannelAdmin::TypeError)) +{ + if (Request_Context_Repository().is_executed_request()) + return; + + FtRtecEventChannelAdmin::Operation update; + FtRtecEventChannelAdmin::Connect_push_consumer_param param; + update.object_id = this->id(); + param.push_consumer = RtecEventComm::PushConsumer::_duplicate(push_consumer); + param.qos = qos; + update.param.connect_consumer_param(param); + + Inherited::connect_push_consumer(push_consumer, qos ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + ScopeGuard guard = MakeObjGuard(*this, &Inherited::disconnect_push_supplier); + + FTRTEC::Replication_Service* svc = FTRTEC::Replication_Service::instance(); + { + ACE_Read_Guard<FTRTEC::Replication_Service> locker(*svc); + + svc->replicate_request(update, + &FtRtecEventChannelAdmin::EventChannelFacade::disconnect_push_supplier + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + + guard.Dismiss(); +} + + +void TAO_FTEC_ProxyPushSupplier::disconnect_push_supplier (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + if (Request_Context_Repository().is_executed_request()) + return; + + FtRtecEventChannelAdmin::Operation update; + update.object_id = id(); + update.param._d(FtRtecEventChannelAdmin::DISCONNECT_PUSH_SUPPLIER); + + Inherited::disconnect_push_supplier(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + FTRTEC::Replication_Service *svc = FTRTEC::Replication_Service::instance(); + + ACE_Read_Guard<FTRTEC::Replication_Service> locker(*svc); + + svc->replicate_request(update, 0 ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + + +void TAO_FTEC_ProxyPushSupplier::suspend_connection (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) +ACE_THROW_SPEC ((CORBA::SystemException)) +{ + if (Request_Context_Repository().is_executed_request()) + return; + + FtRtecEventChannelAdmin::Operation update; + update.object_id = id(); + update.param._d(FtRtecEventChannelAdmin::SUSPEND_CONNECTION); + + Inherited::suspend_connection(ACE_ENV_SINGLE_ARG_PARAMETER); + + ScopeGuard guard = MakeObjGuard(*this, &Inherited::resume_connection); + ACE_CHECK; + FTRTEC::Replication_Service* svc = FTRTEC::Replication_Service::instance(); + { + ACE_Read_Guard<FTRTEC::Replication_Service> locker(*svc); + + svc->replicate_request(update, + &FtRtecEventChannelAdmin::EventChannel::resume_push_supplier + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + guard.Dismiss(); +} + +void TAO_FTEC_ProxyPushSupplier::resume_connection (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) +ACE_THROW_SPEC ((CORBA::SystemException)) +{ + if (Request_Context_Repository().is_executed_request()) + return; + + Request_Context_Repository().set_object_id(id()); + FtRtecEventChannelAdmin::Operation update; + update.object_id = id(); + update.param._d(FtRtecEventChannelAdmin::RESUME_CONNECTION); + + Inherited::resume_connection(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + ScopeGuard guard = MakeObjGuard(*this, &Inherited::suspend_connection); + + FTRTEC::Replication_Service* svc = FTRTEC::Replication_Service::instance(); + { + ACE_Read_Guard<FTRTEC::Replication_Service> locker(*svc); + + svc->replicate_request(update, + &FtRtecEventChannelAdmin::EventChannel::suspend_push_supplier + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + + guard.Dismiss(); +} + + +void TAO_FTEC_ProxyPushSupplier::get_state(FtRtecEventChannelAdmin::ProxyPushSupplierStat& state) +{ + state.object_id = this->object_id_; + state.suspended = this->is_suspended(); + if (this->is_connected()) { + FtRtecEventChannelAdmin::ProxyPushSupplierConnectionInfo info; + info.push_consumer = this->consumer(); + info.qos = this->subscriptions(); + state.parameter.info(info); + } +} + + +void TAO_FTEC_ProxyPushSupplier::set_state(const FtRtecEventChannelAdmin::ProxyPushSupplierStat& state) +{ + if (!CORBA::is_nil(state.parameter.info().push_consumer.in())) + { + Inherited::connect_push_consumer(state.parameter.info().push_consumer.in(), + state.parameter.info().qos + ACE_ENV_ARG_PARAMETER); + if (state.suspended) + Inherited::suspend_connection(ACE_ENV_SINGLE_ARG_PARAMETER); + } +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxySupplier.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxySupplier.h new file mode 100644 index 00000000000..29688d3e592 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxySupplier.h @@ -0,0 +1,67 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file FTEC_ProxyPushSupplier.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef TAO_FTEC_PROXYSUPPLIER_H +#define TAO_FTEC_PROXYSUPPLIER_H +#include "orbsvcs/Event/EC_Default_ProxySupplier.h" +#include "ace/SString.h" +#include "orbsvcs/FtRtecEventChannelAdminC.h" +#include "Request_Context_Repository.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class TAO_FTEC_ProxyPushSupplier : public TAO_EC_Default_ProxyPushSupplier +{ + typedef TAO_EC_Default_ProxyPushSupplier Inherited; +public: + typedef RtecEventChannelAdmin::ProxyPushSupplier Interface; + typedef FtRtecEventChannelAdmin::ProxyPushSupplierStat State; + typedef POA_RtecEventChannelAdmin::ProxyPushSupplier_ptr Skeleton; + + TAO_FTEC_ProxyPushSupplier(TAO_EC_Event_Channel_Base* event_channel, + int validate_connection); + /// Activate in the POA + virtual void activate ( + RtecEventChannelAdmin::ProxyPushSupplier_ptr &proxy + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + // = The RtecEventChannelAdmin::ProxyPushSupplier methods... + virtual void connect_push_consumer ( + RtecEventComm::PushConsumer_ptr push_consumer, + const RtecEventChannelAdmin::ConsumerQOS &qos + ACE_ENV_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException, + RtecEventChannelAdmin::AlreadyConnected, + RtecEventChannelAdmin::TypeError)); + virtual void disconnect_push_supplier (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)); + virtual void suspend_connection (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)); + virtual void resume_connection (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)); + + const PortableServer::ObjectId& id() const; + + void get_state(FtRtecEventChannelAdmin::ProxyPushSupplierStat& state); + void set_state(const FtRtecEventChannelAdmin::ProxyPushSupplierStat& state); + + typedef void (FtRtecEventChannelAdmin::EventChannelFacade::*RollbackOperation) + (const FtRtecEventChannelAdmin::ObjectId& ACE_ENV_ARG_DECL_WITH_DEFAULTS); + + static const RollbackOperation rollback_obtain; +private: + PortableServer::ObjectId_var object_id_; +}; + +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_SupplierAdmin.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_SupplierAdmin.cpp new file mode 100644 index 00000000000..ef8111f521c --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_SupplierAdmin.cpp @@ -0,0 +1,50 @@ +// $Id$ + +#include "orbsvcs/Event/EC_ProxySupplier.h" +#include "orbsvcs/Event/EC_Event_Channel_Base.h" +#include "FTEC_SupplierAdmin.h" +#include "FTEC_ProxyConsumer.h" +#include "tao/Stub.h" + +ACE_RCSID (EventChannel, + TAO_FTEC_SupplierAdmin, + "$Id$") + + +const FtRtecEventChannelAdmin::OperationType +TAO_FTEC_SupplierAdmin::OBTAIN_ID = FtRtecEventChannelAdmin::OBTAIN_PUSH_CONSUMER; + +TAO_FTEC_SupplierAdmin::TAO_FTEC_SupplierAdmin (TAO_EC_Event_Channel_Base *ec) + : TAO_EC_SupplierAdmin (ec) + , FT_Aspect(this, this->event_channel_->supplier_poa ()) +{ +} + +TAO_FTEC_SupplierAdmin::~TAO_FTEC_SupplierAdmin() +{ +} + + +RtecEventChannelAdmin::ProxyPushConsumer_ptr +TAO_FTEC_SupplierAdmin::obtain_push_consumer (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + return obtain_proxy(ACE_ENV_SINGLE_ARG_PARAMETER); +} + +void +TAO_FTEC_SupplierAdmin::disconnect(RtecEventChannelAdmin::ProxyPushConsumer_ptr obj) +{ + ACE_TRY_NEW_ENV { + obj->disconnect_push_consumer(ACE_ENV_SINGLE_ARG_PARAMETER); + } + ACE_CATCHALL + { + } + ACE_ENDTRY; +} + + + + + diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_SupplierAdmin.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_SupplierAdmin.h new file mode 100644 index 00000000000..50b364f0169 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_SupplierAdmin.h @@ -0,0 +1,76 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file FTEC_SupplierAdmin.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef TAO_FTEC_SUPPLIERADMIN_H +#define TAO_FTEC_SUPPLIERADMIN_H +#include "ace/pre.h" + +#include "FTEC_ProxyConsumer.h" +#include "FT_ProxyAdmin_T.h" +#include "ProxyConsumerStateWorker.h" + + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "orbsvcs/Event/EC_SupplierAdmin.h" +//#include "event_export.h" + +class TAO_FTEC_Event_Channel_Impl; + +namespace FtRtecEventChannelAdmin { + struct SupplierAdminState; +}; +/** + * @class TAO_FTEC_SupplierAdmin + * + * @brief Implement the RtecEventChannelAdmin::SupplierAdmin interface. + * + * + */ +class TAO_FTEC_SupplierAdmin + : public TAO_EC_SupplierAdmin + , public FT_ProxyAdmin<TAO_FTEC_SupplierAdmin, + TAO_FTEC_ProxyPushConsumer, + RtecEventChannelAdmin::ProxyPushConsumer, + FtRtecEventChannelAdmin::SupplierAdminState> +{ +public: + + static const FtRtecEventChannelAdmin::OperationType OBTAIN_ID; + + typedef FT_ProxyAdmin<TAO_FTEC_SupplierAdmin, + TAO_FTEC_ProxyPushConsumer, + RtecEventChannelAdmin::ProxyPushConsumer, + FtRtecEventChannelAdmin::SupplierAdminState> + FT_Aspect; + + typedef ProxyConsumerStateWorker StateWorker; + + /// constructor... + TAO_FTEC_SupplierAdmin (TAO_EC_Event_Channel_Base* event_channel); + + /// destructor... + virtual ~TAO_FTEC_SupplierAdmin (void); + + + // = The RtecEventChannelAdmin::SupplierAdmin methods... + virtual RtecEventChannelAdmin::ProxyPushConsumer_ptr + obtain_push_consumer (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)); + + void disconnect(RtecEventChannelAdmin::ProxyPushConsumer_ptr obj); +}; + +#include "ace/post.h" +#endif /* TAO_FTEC_SUPPLIERADMIN_H */ diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTRTEC_ServiceActivate.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTRTEC_ServiceActivate.h new file mode 100644 index 00000000000..d0988b09021 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTRTEC_ServiceActivate.h @@ -0,0 +1,11 @@ +// $Id$ + +#ifndef FTRTEC_SERVICE_ACTIVATE_H +#define FTRTEC_SERVICE_ACTIVATE_H + +#include "Fault_Detector_Loader.h" +#include "Identification_Service.h" +#include "Replication_Service.h" + +#endif + diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTRT_EventChannel.vcproj b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTRT_EventChannel.vcproj new file mode 100644 index 00000000000..e5287a253d9 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTRT_EventChannel.vcproj @@ -0,0 +1,292 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.10" + Name="FTRT_EventChannel" + ProjectGUID="{482BBE1E-FECA-1BAD-5231-8C703E5E3387}" + SccProjectName="" + SccLocalPath=""> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Release|Win32" + OutputDirectory="$(ACE_ROOT)\lib" + IntermediateDirectory="Release/FTRT_EventChannel" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="$(TAO_ROOT)\orbsvcs,$(TAO_ROOT),$(TAO_ROOT)\tao,$(ACE_ROOT)" + PreprocessorDefinitions="TAO_FTRTEC_BUILD_DLL;NDEBUG;WIN32;_WINDOWS" + MinimalRebuild="FALSE" + ExceptionHandling="TRUE" + RuntimeLibrary="2" + BufferSecurityCheck="TRUE" + EnableFunctionLevelLinking="TRUE" + TreatWChar_tAsBuiltInType="TRUE" + ForceConformanceInForLoopScope="TRUE" + RuntimeTypeInfo="TRUE" + WarningLevel="3" + SuppressStartupBanner="TRUE" + Detect64BitPortabilityProblems="FALSE" + DebugInformationFormat="3"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="TAO_FtRtEvent.lib TAO_CosNaming.lib TAO_IORTable.lib TAO_RTEvent.lib TAO_Svc_Utils.lib TAO_Messaging.lib TAO_FTORB_Utils.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO_IORManip.lib TAO.lib ACE.lib" + OutputFile="$(OutDir)/TAO_FTRT_EventChannel.dll" + Version="1.3.4" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="$(ACE_ROOT)\lib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile="$(OutDir)/TAO_FTRT_EventChannel.pdb" + SubSystem="1" + OptimizeReferences="2" + EnableCOMDATFolding="2" + ImportLibrary="$(OutDir)/TAO_FTRT_EventChannel.lib" + /> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033" + AdditionalIncludeDirectories="$(TAO_ROOT)\orbsvcs,$(TAO_ROOT),$(TAO_ROOT)\tao,$(ACE_ROOT)"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + </Configuration> + <Configuration + Name="Debug|Win32" + OutputDirectory="$(ACE_ROOT)\lib" + IntermediateDirectory="Debug/FTRT_EventChannel" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="$(TAO_ROOT)\orbsvcs,$(TAO_ROOT),$(TAO_ROOT)\tao,$(ACE_ROOT)" + PreprocessorDefinitions="TAO_FTRTEC_BUILD_DLL;_DEBUG;WIN32;_WINDOWS" + MinimalRebuild="FALSE" + ExceptionHandling="TRUE" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + BufferSecurityCheck="TRUE" + EnableFunctionLevelLinking="TRUE" + TreatWChar_tAsBuiltInType="TRUE" + ForceConformanceInForLoopScope="TRUE" + RuntimeTypeInfo="TRUE" + WarningLevel="3" + SuppressStartupBanner="TRUE" + Detect64BitPortabilityProblems="FALSE" + DebugInformationFormat="3"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="TAO_FtRtEventd.lib TAO_CosNamingd.lib TAO_IORTabled.lib TAO_RTEventd.lib TAO_Svc_Utilsd.lib TAO_Messagingd.lib TAO_FTORB_Utilsd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAO_IORManipd.lib TAOd.lib ACEd.lib" + OutputFile="$(OutDir)/TAO_FTRT_EventChanneld.dll" + Version="1.3.4" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="$(ACE_ROOT)\lib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile="$(OutDir)/TAO_FTRT_EventChanneld.pdb" + SubSystem="1" + ImportLibrary="$(OutDir)/TAO_FTRT_EventChanneld.lib" + /> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033" + AdditionalIncludeDirectories="$(TAO_ROOT)\orbsvcs,$(TAO_ROOT),$(TAO_ROOT)\tao,$(ACE_ROOT)"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + </Configuration> + <Configuration + Name="Static Release|Win32" + OutputDirectory="$(ACE_ROOT)\lib" + IntermediateDirectory="Static_Release/FTRT_EventChannel" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="$(TAO_ROOT)\orbsvcs,$(TAO_ROOT),$(TAO_ROOT)\tao,$(ACE_ROOT)" + PreprocessorDefinitions="TAO_AS_STATIC_LIBS;TAO_AS_STATIC_LIBS;ACE_AS_STATIC_LIBS;NDEBUG;WIN32;_WINDOWS" + MinimalRebuild="FALSE" + ExceptionHandling="TRUE" + RuntimeLibrary="2" + BufferSecurityCheck="TRUE" + EnableFunctionLevelLinking="TRUE" + TreatWChar_tAsBuiltInType="TRUE" + ForceConformanceInForLoopScope="TRUE" + RuntimeTypeInfo="TRUE" + WarningLevel="3" + SuppressStartupBanner="TRUE" + Detect64BitPortabilityProblems="FALSE" + DebugInformationFormat="3"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="$(OutDir)/TAO_FTRT_EventChannels.lib" + Version="1.3.4" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="$(ACE_ROOT)\lib" + GenerateDebugInformation="TRUE" + SubSystem="1" + OptimizeReferences="2" + EnableCOMDATFolding="2" + /> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033" + AdditionalIncludeDirectories="$(TAO_ROOT)\orbsvcs,$(TAO_ROOT),$(TAO_ROOT)\tao,$(ACE_ROOT)"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + </Configuration> + <Configuration + Name="Static Debug|Win32" + OutputDirectory="$(ACE_ROOT)\lib" + IntermediateDirectory="Static_Debug/FTRT_EventChannel" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="$(TAO_ROOT)\orbsvcs,$(TAO_ROOT),$(TAO_ROOT)\tao,$(ACE_ROOT)" + PreprocessorDefinitions="TAO_AS_STATIC_LIBS;TAO_AS_STATIC_LIBS;ACE_AS_STATIC_LIBS;_DEBUG;WIN32;_WINDOWS" + MinimalRebuild="FALSE" + ExceptionHandling="TRUE" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + BufferSecurityCheck="TRUE" + EnableFunctionLevelLinking="TRUE" + TreatWChar_tAsBuiltInType="TRUE" + ForceConformanceInForLoopScope="TRUE" + RuntimeTypeInfo="TRUE" + WarningLevel="3" + SuppressStartupBanner="TRUE" + Detect64BitPortabilityProblems="FALSE" + DebugInformationFormat="3"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="$(OutDir)/TAO_FTRT_EventChannelsd.lib" + Version="1.3.4" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="$(ACE_ROOT)\lib" + GenerateDebugInformation="TRUE" + SubSystem="1" + /> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033" + AdditionalIncludeDirectories="$(TAO_ROOT)\orbsvcs,$(TAO_ROOT),$(TAO_ROOT)\tao,$(ACE_ROOT)"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + </Configuration> + </Configurations> + <Files> + <Filter + Name="Source Files" + Filter="cpp;cxx;cc;C;c"> + <File + RelativePath=".\FtRtEvent\EventChannel"> + </File> + </Filter> + <Filter + Name="Header Files" + Filter="h;hpp;hxx;hh"> + <File + RelativePath=".\Fault_Detector_T.h"> + </File> + </Filter> + <Filter + Name="Template Files" + Filter=""> + <File + RelativePath=".\Fault_Detector_T.cpp"> + <FileConfiguration + Name="Release|Win32" + ExcludedFromBuild="TRUE"> + <Tool + Name="VCCLCompilerTool"/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32" + ExcludedFromBuild="TRUE"> + <Tool + Name="VCCLCompilerTool"/> + </FileConfiguration> + <FileConfiguration + Name="Static Release|Win32" + ExcludedFromBuild="TRUE"> + <Tool + Name="VCCLCompilerTool"/> + </FileConfiguration> + <FileConfiguration + Name="Static Debug|Win32" + ExcludedFromBuild="TRUE"> + <Tool + Name="VCCLCompilerTool"/> + </FileConfiguration> + </File> + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_Base.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_Base.cpp new file mode 100644 index 00000000000..95b4e0bced8 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_Base.cpp @@ -0,0 +1,44 @@ +// $Id$ + +#include "tao/PortableServer/PortableServer.h" +#include "tao/PortableServer/Servant_Base.h" +#include "FT_ProxyAdmin_T.h" + +ACE_RCSID (EventChannel, + FT_ProxyAdmin_Base, + "$Id$") + +FT_ProxyAdmin_Base::FT_ProxyAdmin_Base(PortableServer::ServantBase* servant, + PortableServer::POA_var poa) +: servant_(servant), poa_(poa) +{ +} + +FT_ProxyAdmin_Base::~FT_ProxyAdmin_Base() +{ +} + +void FT_ProxyAdmin_Base::activate(const PortableServer::ObjectId& oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + poa_->activate_object_with_id(oid, servant_ + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + object_id_ = oid; +} + + +const PortableServer::ObjectId& FT_ProxyAdmin_Base::object_id(ACE_ENV_SINGLE_ARG_DECL_NOT_USED) const +{ + return object_id_; +} + + +CORBA::Object_var FT_ProxyAdmin_Base::reference(ACE_ENV_SINGLE_ARG_DECL_NOT_USED) const +{ + return poa_->servant_to_reference(servant_ + ACE_ENV_ARG_PARAMETER); +} + + + diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_Base.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_Base.h new file mode 100644 index 00000000000..cf5c1f5b831 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_Base.h @@ -0,0 +1,49 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file FT_ProxyAdmin_Base.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= +#ifndef FT_PROXYADMIN_BASE_H +#define FT_PROXYADMIN_BASE_H + +#include "ace/pre.h" +#include "tao/corba.h" +#include "tao/PortableServer/Servant_Base.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class FT_ProxyAdmin_Base +{ +public: + FT_ProxyAdmin_Base(PortableServer::ServantBase* servant, + PortableServer::POA_var poa); + virtual ~FT_ProxyAdmin_Base(); + void activate(const PortableServer::ObjectId& oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + + const PortableServer::ObjectId& object_id(ACE_ENV_SINGLE_ARG_DECL_NOT_USED) const; + + /// Returns an CORBA object reference when the servant is activated + CORBA::Object_var reference(ACE_ENV_SINGLE_ARG_DECL_NOT_USED) const; + +protected: + + PortableServer::ServantBase* servant_; + /// Store the default POA. + PortableServer::POA_var poa_; + /// store the object id + PortableServer::ObjectId object_id_; +}; + + + +#include "ace/post.h" +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_T.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_T.cpp new file mode 100644 index 00000000000..0b760c04b0c --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_T.cpp @@ -0,0 +1,145 @@ +// $Id$ + +#include "IOGR_Maker.h" +#include "Replication_Service.h" +#include "ace/Synch_T.h" + +template <class EC_PROXY_ADMIN, class Proxy, + class ProxyInterface, class State> +FT_ProxyAdmin<EC_PROXY_ADMIN, Proxy, ProxyInterface, State>::FT_ProxyAdmin( + EC_PROXY_ADMIN* admin, PortableServer::POA_var poa) + : FT_ProxyAdmin_Base(admin, poa), admin_(admin) +{ +} + + +template <class EC_PROXY_ADMIN, class Proxy, + class ProxyInterface, class State> +void +FT_ProxyAdmin<EC_PROXY_ADMIN, Proxy, ProxyInterface,State>::obtain_proxy ( + const FtRtecEventChannelAdmin::Operation& op + ACE_ENV_ARG_DECL) +{ + Request_Context_Repository().set_object_id(op.object_id + ACE_ENV_ARG_PARAMETER); + + ProxyInterface_var result + = admin_->obtain(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + ScopeGuard guard = MakeObjGuard(*admin_, + &EC_PROXY_ADMIN::disconnect, + result.in() + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + FTRTEC::Replication_Service* svc = FTRTEC::Replication_Service::instance(); + { + ACE_Read_Guard<FTRTEC::Replication_Service> locker(*svc); + + svc->replicate_request(op, + Proxy::rollback_obtain + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + + guard.Dismiss(); +} + +template <class EC_PROXY_ADMIN, class Proxy, + class ProxyInterface, class State> +typename FT_ProxyAdmin<EC_PROXY_ADMIN, Proxy, ProxyInterface, State>::ProxyInterface_ptr +FT_ProxyAdmin<EC_PROXY_ADMIN, Proxy, ProxyInterface, State>::obtain_proxy (ACE_ENV_SINGLE_ARG_DECL) +{ + CORBA::Any_var any = Request_Context_Repository().get_cached_result(); + CORBA::Object_var obj; + if (*any >>= CORBA::Any::to_object(obj)) + return ProxyInterface::_narrow(obj.in()); + + FtRtecEventChannelAdmin::ObjectId oid; + Request_Context_Repository().generate_object_id(oid + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + + FtRtecEventChannelAdmin::Operation update; + + update.object_id = oid; + update.param._d(EC_PROXY_ADMIN::OBTAIN_ID); + + ProxyInterface_var result + = admin_->obtain(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + + ScopeGuard guard = + MakeObjGuard(*admin_, + &EC_PROXY_ADMIN::disconnect, + result.in() + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + + FTRTEC::Replication_Service* svc = FTRTEC::Replication_Service::instance(); + ACE_Read_Guard<FTRTEC::Replication_Service> locker(*svc); + { + obj = IOGR_Maker::instance()->forge_iogr(result.in() + ACE_ENV_ARG_PARAMETER) + ACE_CHECK_RETURN(0); + + result = ProxyInterface::_narrow(obj.in() ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + + svc->replicate_request(update, + Proxy::rollback_obtain + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + } + guard.Dismiss(); + + return result._retn(); +} + + +template <class EC_PROXY_ADMIN, class Proxy, + class ProxyInterface, class State> +void FT_ProxyAdmin<EC_PROXY_ADMIN, Proxy, ProxyInterface, State>::get_state( + State& state + ACE_ENV_ARG_DECL) +{ + typename EC_PROXY_ADMIN::StateWorker worker(state.proxies); + admin_->for_each(&worker ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +template <class EC_PROXY_ADMIN, class Proxy, + class ProxyInterface, class State> +void FT_ProxyAdmin<EC_PROXY_ADMIN, Proxy, ProxyInterface, State>::set_state( + const State& state + ACE_ENV_ARG_DECL) +{ + for (size_t i =0; i < state.proxies.length(); ++i) + { + const typename Proxy::State& proxy_state + = state.proxies[i]; + + Request_Context_Repository().set_object_id(proxy_state.object_id + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + ProxyInterface_var + proxy_ior = admin_->obtain(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + typedef typename Proxy::Skeleton Skeleton; + PortableServer::Servant servant = poa_->id_to_servant(proxy_state.object_id + ACE_ENV_ARG_PARAMETER); + + ACE_CHECK; + Skeleton skeleton = ACE_reinterpret_cast(Skeleton, + servant->_downcast(proxy_ior->_interface_repository_id() + ACE_ENV_ARG_PARAMETER)); + ACE_CHECK; + + ACE_static_cast(Proxy* , skeleton)->set_state(proxy_state + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_T.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_T.h new file mode 100644 index 00000000000..a0bff3fb0c8 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_T.h @@ -0,0 +1,55 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file FT_ProxyAdmin_T.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= +#ifndef FT_PROXYADMIN_H +#define FT_PROXYADMIN_H + +#include "FT_ProxyAdmin_Base.h" +#include "../Utils/ScopeGuard.h" +#include "Request_Context_Repository.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +template <class EC_PROXY_ADMIN, class Proxy, + class ProxyInterface, class State> +class FT_ProxyAdmin : public FT_ProxyAdmin_Base +{ +public: + typedef typename ProxyInterface::_ptr_type ProxyInterface_ptr; + typedef typename ProxyInterface::_var_type ProxyInterface_var; + + FT_ProxyAdmin(EC_PROXY_ADMIN* admin, + PortableServer::POA_var poa); + + ProxyInterface_ptr + obtain_proxy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED); + + /// this is used for updating the state + void obtain_proxy (const FtRtecEventChannelAdmin::Operation& op + ACE_ENV_ARG_DECL); + + void get_state(State& state ACE_ENV_ARG_DECL); + void set_state(const State& state ACE_ENV_ARG_DECL); +private: + EC_PROXY_ADMIN* admin_; +}; + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "FT_ProxyAdmin_T.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("FT_ProxyAdmin_T.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector.cpp new file mode 100644 index 00000000000..1153b624382 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector.cpp @@ -0,0 +1,71 @@ +// $Id$ + +#include "ace/Reactor.h" +#include "Fault_Detector.h" +#include "ace/Select_Reactor.h" + +ACE_RCSID (EventChannel, + Fault_Detector, + "$Id$") + +Fault_Detector::ReactorTask::ReactorTask() +: reactor_(new ACE_Select_Reactor, 1) +{ +} + +int +Fault_Detector::ReactorTask::svc (void) +{ + this->reactor_.owner(ACE_OS::thr_self()); + this->reactor_.run_reactor_event_loop(); + return 0; +} + + +Fault_Detector::~Fault_Detector() +{ +} + +const FTRT::Location& Fault_Detector::my_location() const +{ + return location_; +} + +namespace { + Fault_Detector* detector; +} + +Fault_Detector* Fault_Detector::instance() +{ + return detector; +} + +int Fault_Detector::init(int argc, char** argv) +{ + detector = this; + if (this->parse_conf(argc, argv)==0 && + this->init_acceptor() ==0) + { + if (!reactor_task_.thr_count() && + reactor_task_.activate (THR_NEW_LWP | THR_JOINABLE, 1) != 0) + ACE_ERROR_RETURN ((LM_ERROR,"Cannot activate reactor thread\n"), + -1); + return 0; + } + return -1; +} + +void Fault_Detector::stop() +{ + reactor_task_.reactor_.end_reactor_event_loop(); +} + +void Fault_Detector::set_listener(TAO_FTEC_Fault_Listener* listener) +{ + listener_ = listener; +} + +int Fault_Detector::parse_conf(int , char** ) +{ + return 0; +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector.h new file mode 100644 index 00000000000..10d93e3705d --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector.h @@ -0,0 +1,60 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Fault_Detector.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef FAULT_DETECTOR_H +#define FAULT_DETECTOR_H + +#include "ace/Task.h" +#include "ace/Reactor.h" + +#include "orbsvcs/FTRT_GroupManagerC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class TAO_FTEC_Fault_Listener; + +class Fault_Detector +{ +public: + virtual ~Fault_Detector(); + + static Fault_Detector* instance(); + + int init(int argc, ACE_TCHAR** argv); + void stop(); + void set_listener(TAO_FTEC_Fault_Listener*); + const FTRT::Location& my_location() const; + virtual int connect(const FTRT::Location& location)=0; + +private: + virtual int init_acceptor()=0; + virtual int parse_conf(int argc, ACE_TCHAR** argv); + +protected: + + class ReactorTask : public ACE_Task_Base + { + public: + // ctor + ReactorTask(); + virtual int svc (void); + ACE_Reactor reactor_; + }; + + FTRT::Location location_; + ReactorTask reactor_task_; + TAO_FTEC_Fault_Listener* listener_; +}; + +#endif //FAULT_DETECTOR_H diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_Loader.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_Loader.cpp new file mode 100644 index 00000000000..4eb9b8dde8a --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_Loader.cpp @@ -0,0 +1,70 @@ +// $Id$ + +#include "Fault_Detector_Loader.h" +#include "FTEC_Fault_Listener.h" +#include "SCTP_Fault_Detector.h" +#include "ace/SOCK_Acceptor.h" +#include "ace/SOCK_Connector.h" +#include "ConnectionHandler_T.h" + +ACE_RCSID (EventChannel, + Fault_Detector_Loader, + "$Id$") + +namespace FTRTEC { + typedef Fault_Detector_T< + ACE_Acceptor<ConnectionAcceptHandler<ACE_SOCK_STREAM> , ACE_SOCK_ACCEPTOR>, + ACE_SOCK_Connector, ConnectionDetectHandler<ACE_SOCK_STREAM> > + TCP_Fault_Detector; + + Fault_Detector_Loader::Fault_Detector_Loader (void) + { + } + + Fault_Detector_Loader::~Fault_Detector_Loader (void) + { + } + + int + Fault_Detector_Loader::init (int argc, + ACE_TCHAR* argv[]) + { + ACE_TRACE ("Fault_Detector_Loader::init"); + + static int initialized = 0; + + // Only allow initialization once. + if (initialized) + return 0; + + initialized = 1; + + // Parse any service configurator parameters. + if (argc > 0 && ACE_OS::strcasecmp (argv[0], ACE_LIB_TEXT("sctp")) == 0) + { + detector_.reset(new STCP_Fault_Detector); + argc--; argv++; + } + else + detector_.reset(new TCP_Fault_Detector); + return detector_->init(argc, argv); + } + + Fault_Detector* + Fault_Detector_Loader::detector() + { + return detector_.get(); + } + + ///////////////////////////////////////////////////////////////////// + + ACE_FACTORY_DEFINE (TAO_FTRTEC, Fault_Detector_Loader); + + ACE_STATIC_SVC_DEFINE (Fault_Detector_Loader, + ACE_TEXT ("FTRTEC_Fault_Detector"), + ACE_SVC_OBJ_T, + &ACE_SVC_NAME (Fault_Detector_Loader), + ACE_Service_Type::DELETE_THIS + | ACE_Service_Type::DELETE_OBJ, + 0); +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_Loader.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_Loader.h new file mode 100644 index 00000000000..852904d4450 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_Loader.h @@ -0,0 +1,55 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Fault_Detector_Loader.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef FAULT_DETECTOR_LOADER_H +#define FAULT_DETECTOR_LOADER_H + +#include "ace/pre.h" + +#include "tao/orbconf.h" + +#include "ace/Service_Object.h" +#include "ace/Service_Config.h" +#include "ftrtec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + + +class Fault_Detector; + +namespace FTRTEC { + class TAO_FTRTEC_Export Fault_Detector_Loader : public ACE_Service_Object + { + public: + /// Constructor. + Fault_Detector_Loader (void); + + /// Destructor. + virtual ~Fault_Detector_Loader (void); + + virtual int init (int argc, + ACE_TCHAR* []); + Fault_Detector* detector(); + private: + auto_ptr<Fault_Detector> detector_; + }; + + + ACE_STATIC_SVC_DECLARE_EXPORT (TAO_FTRTEC, Fault_Detector_Loader) + ACE_STATIC_SVC_REQUIRE(Fault_Detector_Loader); + ACE_FACTORY_DECLARE (TAO_FTRTEC, Fault_Detector_Loader) +} + +#include "ace/post.h" +#endif //FAULT_DETECTOR_LOADER_H diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_T.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_T.cpp new file mode 100644 index 00000000000..68c96378c93 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_T.cpp @@ -0,0 +1,58 @@ + +/// $Id$ + +template <class ACCEPTOR, class CONNECTOR, class DETECTION_HANDLER> +Fault_Detector_T<ACCEPTOR, CONNECTOR, DETECTION_HANDLER>::Fault_Detector_T() +{ +} + +template <class ACCEPTOR, class CONNECTOR, class DETECTION_HANDLER> +Fault_Detector_T<ACCEPTOR, CONNECTOR, DETECTION_HANDLER>::~Fault_Detector_T() +{ +} + + +template <class ACCEPTOR, class CONNECTOR, class DETECTION_HANDLER> +int +Fault_Detector_T<ACCEPTOR, CONNECTOR, DETECTION_HANDLER>::init_acceptor() +{ + ACE_INET_Addr listen_addr; + if (acceptor_.open(listen_addr, &reactor_task_.reactor_) != 0) + ACE_ERROR_RETURN((LM_ERROR, "Connot open acceptor\n"), -1); + + if (acceptor_.acceptor().get_local_addr(listen_addr) !=0) + ACE_ERROR_RETURN((LM_ERROR, "Connot get local addr\n"), -1); + + ACE_DEBUG((LM_DEBUG, "listening at %s:%d\n", listen_addr.get_host_name(), + listen_addr.get_port_number())); + char* buf = CORBA::string_alloc(MAXHOSTNAMELEN); + listen_addr.addr_to_string(buf, MAXHOSTNAMELEN, 0); + location_.length(1); + location_[0].id = buf; + return 0; +} + +template <class ACCEPTOR, class CONNECTOR, class DETECTION_HANDLER> +int +Fault_Detector_T<ACCEPTOR, CONNECTOR, DETECTION_HANDLER>::connect(const FTRT::Location& location) +{ + if (location.length() == 0) + return -1; + + ACE_INET_Addr prev_addr(location[0].id); + + DETECTION_HANDLER* handler; + ACE_NEW_RETURN(handler, DETECTION_HANDLER(listener_), 0) ; + + handler->reactor(&reactor_task_.reactor_); + ACE_DEBUG((LM_DEBUG, "connecting to %s\n", location[0].id.in())); + + int result = connector_.connect(handler->peer(), prev_addr); + + if (result == 0) + handler->open(this); + else + handler->close(); + + return result ; +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_T.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_T.h new file mode 100644 index 00000000000..6c9ed952bce --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_T.h @@ -0,0 +1,44 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Fault_Detector_T.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef FAULT_DETECTOR_T_H +#define FAULT_DETECTOR_T_H + +#include "Fault_Detector.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +template <class ACCEPTOR, class CONNECTOR, class DETECTION_HANDLER> +class Fault_Detector_T : public Fault_Detector +{ +public: + Fault_Detector_T(); + ~Fault_Detector_T(); + int connect(const FTRT::Location& addr); +protected: + ACCEPTOR acceptor_; + CONNECTOR connector_; +private: + virtual int init_acceptor(); +}; + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "Fault_Detector_T.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("Fault_Detector_T.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Listener.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Listener.h new file mode 100644 index 00000000000..933f11a7597 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Listener.h @@ -0,0 +1,27 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file FTEC_Fault_Listener.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef TAO_FTEC_FAULT_LISTENER_H +#define TAO_FTEC_FAULT_LISTENER_H + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class TAO_FTEC_Fault_Listener +{ +public: + virtual ~TAO_FTEC_Fault_Listener(){}; + virtual void connection_closed()=0; +}; + +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ForwardCtrlServerInterceptor.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ForwardCtrlServerInterceptor.cpp new file mode 100644 index 00000000000..34dae8cd7a6 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ForwardCtrlServerInterceptor.cpp @@ -0,0 +1,240 @@ +// $Id$ + +#include "tao/PortableServer/PortableServer.h" +#include "ForwardCtrlServerInterceptor.h" +#include "GroupInfoPublisher.h" +#include "IOGR_Maker.h" +#include "../Utils/resolve_init.h" +#include "orbsvcs/FTRTC.h" + +ACE_RCSID (EventChannel, + ForwardCtrlServerInterceptor, + "$Id$") + +CORBA::Object_ptr get_target(PortableInterceptor::ServerRequestInfo_ptr ri + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + CORBA::String_var orb_id = ri->orb_id(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN(CORBA::Object::_nil()); + + int argc =0; + char** argv =0; + CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, orb_id.in() + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(CORBA::Object::_nil()); + + PortableServer::POA_var poa = + resolve_init<PortableServer::POA>(orb.in(), "RootPOA" + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(CORBA::Object::_nil()); + + PortableInterceptor::AdapterName_var adaptor_name = + ri->adapter_name(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN(CORBA::Object::_nil()); + + for (size_t i = 1; i < adaptor_name->length(); ++i) { + poa = poa->find_POA((*adaptor_name)[i] , false + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(CORBA::Object::_nil()); + } + + CORBA::OctetSeq_var oid = + ri->object_id(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN(CORBA::Object::_nil()); + + CORBA::Object_var obj = + poa->id_to_reference(oid.in() + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(CORBA::Object::_nil()); + + return obj._retn(); +} + +CORBA::Object_ptr get_forward(PortableInterceptor::ServerRequestInfo_ptr ri + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + CORBA::Object_var target = + get_target(ri ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(CORBA::Object::_nil()); + + TAO::ObjectKey_var key = + target->_key(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN(CORBA::Object::_nil()); + + CORBA::Object_var iogr = + GroupInfoPublisher::instance()->group_reference(); + + CORBA::Object_var forward = + IOGR_Maker::instance()->ior_replace_key(iogr.in(), key.in() + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(CORBA::Object::_nil()); + + return forward._retn(); +} + + +ForwardCtrlServerInterceptor::ForwardCtrlServerInterceptor() +{ +} + +ForwardCtrlServerInterceptor::~ForwardCtrlServerInterceptor() +{ +} + +char * ForwardCtrlServerInterceptor::name (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + return CORBA::string_dup("ForwardCtrlServerInterceptor"); +} + +void ForwardCtrlServerInterceptor::destroy (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ +} + +void ForwardCtrlServerInterceptor::receive_request (PortableInterceptor::ServerRequestInfo_ptr ri + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)) +{ + ACE_TRY { + IOP::ServiceContext_var service_context = + ri->get_request_service_context(IOP::FT_GROUP_VERSION + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + } + ACE_CATCHANY { + // not an FT call , continue to process the request + return; + } + ACE_ENDTRY; + ACE_CHECK; + + GroupInfoPublisherBase* publisher = GroupInfoPublisher::instance(); + if (!publisher->is_primary()) { + // I am not primary, forword the request to primary + CORBA::Object_var forward = get_forward(ri + ACE_ENV_ARG_PARAMETER); + + ACE_THROW( PortableInterceptor::ForwardRequest(forward.in(), 0) ); + } +} + +void ForwardCtrlServerInterceptor::receive_request_service_contexts ( + PortableInterceptor::ServerRequestInfo_ptr + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)) +{ +} + +FT::ObjectGroupRefVersion get_ft_group_version(IOP::ServiceContext_var service_context + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + TAO_InputCDR cdr (ACE_reinterpret_cast (const char*, + service_context->context_data.get_buffer () + ), + service_context->context_data.length ()); + + CORBA::Boolean byte_order; + + if ((cdr >> ACE_InputCDR::to_boolean (byte_order)) == 0) + ACE_THROW (CORBA::BAD_PARAM (CORBA::OMGVMCID | 28, + CORBA::COMPLETED_NO)); + + cdr.reset_byte_order (ACE_static_cast (int,byte_order)); + + FT::FTGroupVersionServiceContext fgvsc; + + if ((cdr >> fgvsc) == 0) + ACE_THROW (CORBA::BAD_PARAM (CORBA::OMGVMCID | 28, + CORBA::COMPLETED_NO)); + + return fgvsc.object_group_ref_version; +} + + + +void ForwardCtrlServerInterceptor::send_reply (PortableInterceptor::ServerRequestInfo_ptr ri + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + IOP::ServiceContext_var service_context; + FT::ObjectGroupRefVersion version; + + ACE_TRY { + + if (!ri->response_expected(ACE_ENV_SINGLE_ARG_PARAMETER)) + return; + ACE_TRY_CHECK; + + + + service_context = + ri->get_request_service_context(IOP::FT_GROUP_VERSION + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + // get the ref version service context + version = + get_ft_group_version(service_context + ACE_ENV_ARG_PARAMETER); + + ACE_TRY_CHECK; + } + ACE_CATCHALL { + // not an FT call , continue to reply the request + return; + } + ACE_ENDTRY; + // pass a new IOGR if the client use an outdated version + + IOGR_Maker* maker = IOGR_Maker::instance(); + ACE_DEBUG((LM_DEBUG, "Current GROUP Version = %d, received version = %d\n", + maker->get_ref_version(), version)); + + if (version < maker->get_ref_version()) { + ACE_DEBUG((LM_DEBUG, "Outdated IOGR version, passing new IOGR\n")); + ACE_TRY { + CORBA::Object_var forward = get_forward(ri + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + IOP::ServiceContext sc; + sc.context_id = FTRT::FT_FORWARD; + TAO_OutputCDR cdr; + + //if (!(cdr << ACE_OutputCDR::from_boolean (TAO_ENCAP_BYTE_ORDER))) + //ACE_THROW (CORBA::MARSHAL ()); + + if ((cdr << forward.in() ) == 0 ) + ACE_THROW (CORBA::MARSHAL ()); + + ACE_Message_Block mb; + ACE_CDR::consolidate(&mb, cdr.begin()); + sc.context_data.replace(mb.length(), &mb); + + ri->add_reply_service_context (sc, 0 ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + ACE_DEBUG((LM_DEBUG, "reply_service_context added\n")); + } + ACE_CATCHALL { + } + ACE_ENDTRY; + } + +} + +void ForwardCtrlServerInterceptor::send_exception (PortableInterceptor::ServerRequestInfo_ptr + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)) +{ +} + +void ForwardCtrlServerInterceptor::send_other (PortableInterceptor::ServerRequestInfo_ptr + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)) +{ +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ForwardCtrlServerInterceptor.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ForwardCtrlServerInterceptor.h new file mode 100644 index 00000000000..d5f4e285fd1 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ForwardCtrlServerInterceptor.h @@ -0,0 +1,58 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file ForwardCtrlServerInterceptor.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= +#ifndef FORWARDCTRLSERVERINTERCEPTOR_H +#define FORWARDCTRLSERVERINTERCEPTOR_H +#include "tao/PortableInterceptorC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class ForwardCtrlServerInterceptor : + public PortableInterceptor::ServerRequestInterceptor +{ +public: + ForwardCtrlServerInterceptor(); + ~ForwardCtrlServerInterceptor(); + + virtual char * name (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void destroy (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void receive_request (PortableInterceptor::ServerRequestInfo_ptr ri + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)); + + virtual void receive_request_service_contexts ( + PortableInterceptor::ServerRequestInfo_ptr + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)); + + virtual void send_reply (PortableInterceptor::ServerRequestInfo_ptr ri + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void send_exception (PortableInterceptor::ServerRequestInfo_ptr ri + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)); + + virtual void send_other (PortableInterceptor::ServerRequestInfo_ptr + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)); +}; +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FtEventServiceInterceptor.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FtEventServiceInterceptor.cpp new file mode 100644 index 00000000000..80a6cb70623 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FtEventServiceInterceptor.cpp @@ -0,0 +1,346 @@ +// $Id$ + +#include "orbsvcs/FT_CORBA_ORBC.h" +#include "FtEventServiceInterceptor.h" +#include "Request_Context_Repository.h" + +ACE_RCSID (EventChannel, + FtEventServiceInterceptor, + "$Id$") + +bool +CachedRequestTable::is_new_request(const ACE_CString& client_id, CORBA::Long retention_id) +{ + TableImpl::ENTRY* entry; + return table_.find(client_id, entry) !=0 || entry->int_id_.retention_id != retention_id; +} + +int +CachedRequestTable::update(const ACE_CString& client_id, + CORBA::Long retention_id, + const CORBA::Any& result) +{ + CachedRequestInfo info; + info.retention_id = retention_id; + TableImpl::ENTRY* entry=0; + if (table_.bind(client_id, info, entry)) + { + entry->int_id_.result = result; + return 0; + } + return -1; +} + + + +CORBA::Any +CachedRequestTable::get_result(const ACE_CString& client_id) +{ + TableImpl::ENTRY* entry; + if (table_.find(client_id, entry)) { + return entry->int_id_.result; + } + return CORBA::Any(); +} + + +void +CachedRequestTable::get_state(FtRtecEventChannelAdmin::CachedOptionResults& state) +{ + state.length(table_.current_size()); + TableImpl::iterator last = table_.end(); + int i = 0; + + for (TableImpl::iterator first = table_.begin(); + first != last; + ++first) + { + TableImpl::ENTRY& entry = *first; + state[i].client_id = strdup(entry.ext_id_.c_str()); + state[i].cached_result = entry.int_id_; + ++i; + } + +} + +void +CachedRequestTable::set_state(const FtRtecEventChannelAdmin::CachedOptionResults& state) +{ + for (size_t i = 0; i < state.length(); ++i) + { + table_.bind(state[i].client_id.in(), state[i].cached_result); + } +} + +void +retrieve_ft_request_context( + PortableInterceptor::ServerRequestInfo_ptr ri, + IOP::ServiceContext_var& service_context, + FT::FTRequestServiceContext& ft_request_service_context + ACE_ENV_ARG_DECL_NOT_USED) +{ + service_context = ri->get_request_service_context(IOP::FT_REQUEST ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + const char * buf = + ACE_reinterpret_cast (const char *, + service_context->context_data.get_buffer ()); + + TAO_InputCDR cdr (buf, + service_context->context_data.length ()); + + CORBA::Boolean byte_order; + + if ((cdr >> ACE_InputCDR::to_boolean (byte_order)) == 0) + ACE_THROW (CORBA::BAD_PARAM ()); + + cdr.reset_byte_order (ACE_static_cast (int,byte_order)); + + + if ((cdr >> ft_request_service_context) == 0) + ACE_THROW (CORBA::BAD_PARAM ()); + +} + +FTRT::TransactionDepth +get_transaction_depth_context( + PortableInterceptor::ServerRequestInfo_ptr ri + ACE_ENV_ARG_DECL_NOT_USED) +{ + IOP::ServiceContext_var service_context; + ACE_TRY { + service_context = ri->get_request_service_context(FTRT::FT_TRANSACTION_DEPTH + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(-1); + } + ACE_CATCH (CORBA::BAD_PARAM, ex) + { + ACE_DEBUG((LM_DEBUG, "Received request without transaction depth context\n")); + return -1; + } + ACE_ENDTRY; + + const char * buf = + ACE_reinterpret_cast (const char *, + service_context->context_data.get_buffer ()); + TAO_InputCDR cdr (buf, + service_context->context_data.length ()); + + CORBA::Boolean byte_order; + + if ((cdr >> ACE_InputCDR::to_boolean (byte_order)) == 0) + ACE_THROW_RETURN (CORBA::BAD_PARAM (), -1); + + cdr.reset_byte_order (ACE_static_cast (int,byte_order)); + + FTRT::TransactionDepth result; + if ((cdr >> result) == 0) + ACE_THROW_RETURN (CORBA::BAD_PARAM (), -1); + + return result; +} + +FTRT::SequenceNumber +get_sequence_number_context( + PortableInterceptor::ServerRequestInfo_ptr ri + ACE_ENV_ARG_DECL_NOT_USED) +{ + FTRT::SequenceNumber result; + IOP::ServiceContext_var service_context; + service_context = ri->get_request_service_context(FTRT::FT_SEQUENCE_NUMBER + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + const char * buf = + ACE_reinterpret_cast (const char *, + service_context->context_data.get_buffer ()); + TAO_InputCDR cdr (buf, + service_context->context_data.length ()); + + CORBA::Boolean byte_order; + + if ((cdr >> ACE_InputCDR::to_boolean (byte_order)) == 0) + ACE_THROW (CORBA::BAD_PARAM ()); + + cdr.reset_byte_order (ACE_static_cast (int,byte_order)); + + if ((cdr >> result) == 0) + ACE_THROW (CORBA::BAD_PARAM ()); + + return result; +} + + +namespace { +FtEventServiceInterceptor* interceptor; +} + +FtEventServiceInterceptor::FtEventServiceInterceptor () +{ + interceptor = this; +} + +FtEventServiceInterceptor::~FtEventServiceInterceptor () +{ +} + +FtEventServiceInterceptor* +FtEventServiceInterceptor::instance() +{ + return interceptor; +} + +char * +FtEventServiceInterceptor::name (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) +ACE_THROW_SPEC ((CORBA::SystemException)) +{ + return CORBA::string_dup ("FtEventServiceInterceptor"); +} + +void +FtEventServiceInterceptor::destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) +ACE_THROW_SPEC ((CORBA::SystemException)) +{ +} + +void +FtEventServiceInterceptor::receive_request_service_contexts ( + PortableInterceptor::ServerRequestInfo_ptr ri + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)) +{ + ACE_TRY_EX(block1) { + FT::FTRequestServiceContext ft_request_service_context; + IOP::ServiceContext_var service_context; + retrieve_ft_request_context(ri, + service_context, + ft_request_service_context + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK_EX(block1); + + bool is_new_request = request_table_.is_new_request( + ft_request_service_context.client_id.in(), + ft_request_service_context.retention_id); + + CORBA::Any cached_result; + if (!is_new_request) { + cached_result = + request_table_.get_result(ft_request_service_context.client_id.in()); + } + + Request_Context_Repository().set_cached_result(ri, cached_result + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK_EX(block1); + Request_Context_Repository().set_ft_request_service_context(ri, service_context + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK_EX(block1); + + ACE_TRY_EX(block2) { + + FTRT::TransactionDepth transaction_depth = + get_transaction_depth_context(ri + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK_EX(block2); + + Request_Context_Repository().set_transaction_depth(ri, transaction_depth + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK_EX(block2); + } + ACE_CATCH (CORBA::BAD_PARAM, ex) { + } + ACE_ENDTRY; + + FTRT::SequenceNumber sequence_no = + get_sequence_number_context(ri ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK_EX(block1); + + Request_Context_Repository().set_sequence_number(ri, sequence_no + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK_EX(block1); + } + ACE_CATCH (CORBA::BAD_PARAM, ex) { + } + ACE_ENDTRY; + return; +} + + + + +void +FtEventServiceInterceptor::receive_request (PortableInterceptor::ServerRequestInfo_ptr ri + ACE_ENV_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)) +{ + CORBA::String_var operation = ri->operation (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + +} + +void +FtEventServiceInterceptor::send_reply (PortableInterceptor::ServerRequestInfo_ptr ri + ACE_ENV_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + FT::FTRequestServiceContext ft_request_service_context; + IOP::ServiceContext_var service_context; + + ACE_TRY { + retrieve_ft_request_context(ri, + service_context, + ft_request_service_context + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + ACE_CATCH (CORBA::BAD_PARAM, ex) { + return; + } + ACE_ENDTRY; + + request_table_.update(ft_request_service_context.client_id.in(), + ft_request_service_context.retention_id, + *(ri->result()) ); +} + +void +FtEventServiceInterceptor::send_exception ( + PortableInterceptor::ServerRequestInfo_ptr ri + ACE_ENV_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)) +{ +#ifndef NDEBUG + CORBA::String_var operation = ri->operation (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + ACE_DEBUG((LM_DEBUG, "%s return Exception\n", operation.in())); +#endif +} + +void +FtEventServiceInterceptor::send_other ( + PortableInterceptor::ServerRequestInfo_ptr + ACE_ENV_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)) +{ +} + + +void +FtEventServiceInterceptor::get_state(FtRtecEventChannelAdmin::CachedOptionResults& state) +{ + request_table_.get_state(state); +} + +void +FtEventServiceInterceptor::set_state(const FtRtecEventChannelAdmin::CachedOptionResults& state) +{ + request_table_.set_state(state); +} + + + + diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FtEventServiceInterceptor.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FtEventServiceInterceptor.h new file mode 100644 index 00000000000..b80eaac1904 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FtEventServiceInterceptor.h @@ -0,0 +1,95 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file FtEventServiceInterceptor.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef FTEVENTSERVICEINTERCEPTOR_H +#define FTEVENTSERVICEINTERCEPTOR_H +#include "ace/Hash_Map_Manager_T.h" +#include "tao/PortableInterceptorC.h" +#include "tao/LocalObject.h" +#include "tao/ORB.h" +#include "orbsvcs/FtRtecEventChannelAdminC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class TAO_FTEC_Event_Channel_Impl; +typedef FtRtecEventChannelAdmin::CachedResult CachedRequestInfo; + +class CachedRequestTable +{ +public: + bool is_new_request(const ACE_CString& client_id, CORBA::Long retention_id); + int update(const ACE_CString& client_id, + CORBA::Long retention_id, + const CORBA::Any&); + CORBA::Any get_result(const ACE_CString& client_id); + void get_state(FtRtecEventChannelAdmin::CachedOptionResults& state); + void set_state(const FtRtecEventChannelAdmin::CachedOptionResults& state); +private: + typedef ACE_Hash_Map_Manager<ACE_CString, CachedRequestInfo, ACE_Thread_Mutex> TableImpl; + TableImpl table_; +}; + + +class FtEventServiceInterceptor : + public PortableInterceptor::ServerRequestInterceptor +{ +public: + FtEventServiceInterceptor(); + ~FtEventServiceInterceptor(); + + static FtEventServiceInterceptor* instance(); + virtual char * name (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void destroy (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void receive_request (PortableInterceptor::ServerRequestInfo_ptr ri + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)); + + virtual void receive_request_service_contexts ( + PortableInterceptor::ServerRequestInfo_ptr + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)); + + virtual void send_reply (PortableInterceptor::ServerRequestInfo_ptr ri + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void send_exception (PortableInterceptor::ServerRequestInfo_ptr ri + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)); + + virtual void send_other (PortableInterceptor::ServerRequestInfo_ptr + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)); + + void get_state(FtRtecEventChannelAdmin::CachedOptionResults& state); + void set_state(const FtRtecEventChannelAdmin::CachedOptionResults& state); +private: + PortableInterceptor::Current_var pic(PortableInterceptor::ServerRequestInfo_ptr ri + ACE_ENV_ARG_DECL); + + CORBA::ORB_var orb_; + CachedRequestTable request_table_; +}; + + + +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/GroupInfoPublisher.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/GroupInfoPublisher.cpp new file mode 100644 index 00000000000..ae6604475f3 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/GroupInfoPublisher.cpp @@ -0,0 +1,130 @@ +// $Id$ + +#include "GroupInfoPublisher.h" +#include "../Utils/resolve_init.h" +#include "IOGR_Maker.h" +#include "Identification_Service.h" +#include "FTEC_Become_Primary_Listener.h" + +ACE_RCSID (EventChannel, + GroupInfoPublisher, + "$Id$") + + + +GroupInfoPublisherBase::GroupInfoPublisherBase() +: primary_(false) +{ +} + + + +void +GroupInfoPublisherBase::subscribe(TAO_FTEC_Become_Primary_Listener* listener) +{ + subscribers_.push_back(listener); +} + +void GroupInfoPublisherBase::set_naming_context(CosNaming::NamingContext_var naming_context) +{ + naming_context_ = naming_context; +} + +bool +GroupInfoPublisherBase::is_primary() const +{ + return primary_; +} + +CORBA::Object_var +GroupInfoPublisherBase::group_reference() const +{ + return iogr_; +} + +FtRtecEventChannelAdmin::EventChannel_var +GroupInfoPublisherBase::successor() const +{ + return successor_; +} + + + +const GroupInfoPublisherBase::BackupList& +GroupInfoPublisherBase::backups() const +{ + return backups_; +} + +void +GroupInfoPublisherBase::update(const FTRT::ManagerInfoList & info_list, + int my_position + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + bool become_primary = (my_position == 0 && !primary_); + primary_ = (my_position == 0); + + /// create the object group + size_t len = info_list.length(); + + TAO_IOP::TAO_IOR_Manipulation::IORList iors; + iors.length(len); + + size_t i; + for (i = 0; i < len; ++i) { + iors[i] = CORBA::Object::_duplicate(info_list[i].ior.in()); + } + + CORBA::Object_var obj = + IOGR_Maker::instance()->make_iogr(iors ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + iogr_ = + ::FtRtecEventChannelAdmin::EventChannel::_narrow(obj.in() + ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + if (primary_ && !CORBA::is_nil(naming_context_.in())) { + ACE_DEBUG((LM_DEBUG, "Registering to the Name Service\n")); + naming_context_->rebind(FTRTEC::Identification_Service::instance()->name(), + iogr_.in() ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + + /// check if sucessor changed + size_t successors_length = info_list.length() - my_position -1; + + if (successors_length != backups_.length()) { + // successor changed, update successor + iors.length(successors_length); + for (i = 0; i < successors_length; ++i) { + iors[i] = CORBA::Object::_duplicate(info_list[i+ my_position+1].ior.in()); + + } + + obj = IOGR_Maker::instance()->merge_iors(iors + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + successor_ = FtRtecEventChannelAdmin::EventChannel::_narrow(obj.in() + ACE_ENV_ARG_PARAMETER); + FtRtecEventChannelAdmin::EventChannel_var t = successor_; + ACE_CHECK; + + // update backups + backups_.length(successors_length); + for (i = 0; i < successors_length; ++i) { + backups_[i] = + FtRtecEventChannelAdmin::EventChannel::_narrow( + info_list[i+ my_position+1].ior.in() + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + } + + if (become_primary) { + // notify the subscribers + for (i = 0; i < subscribers_.size(); ++i) + subscribers_[i]->become_primary(); + } +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/GroupInfoPublisher.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/GroupInfoPublisher.h new file mode 100644 index 00000000000..f651149691a --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/GroupInfoPublisher.h @@ -0,0 +1,68 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file GroupInfoPublisher.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef GROUPINFOPUBLISHER_H +#define GROUPINFOPUBLISHER_H + +#include "orbsvcs/FtRtecEventChannelAdminC.h" +#include "tao/PortableServer/PortableServerC.h" +#include "ace/Vector_T.h" +#include "ace/Singleton.h" +#include "ace/Synch.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class TAO_FTEC_Become_Primary_Listener; + +class GroupInfoPublisherBase +{ +public: + friend class ACE_Singleton<GroupInfoPublisherBase, ACE_Thread_Mutex>; + + void subscribe(TAO_FTEC_Become_Primary_Listener* listener); + void set_naming_context(CosNaming::NamingContext_var naming_context); + bool is_primary() const; + CORBA::Object_var group_reference() const; + + FtRtecEventChannelAdmin::EventChannel_var successor() const; + + typedef FtRtecEventChannelAdmin::EventChannelList BackupList; + const BackupList& backups() const; + + void update(const FTRT::ManagerInfoList & info_list, + int my_position + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + + const PortableServer::ObjectId& object_id() const; + const CosNaming::Name& name() const; + + void object_id(const char* oid); + void name(const char* nam); + +private: + GroupInfoPublisherBase(); + + bool primary_; + CosNaming::NamingContext_var naming_context_; + CORBA::Object_var iogr_; + FtRtecEventChannelAdmin::EventChannel_var successor_; + BackupList backups_; + typedef ACE_Vector<TAO_FTEC_Become_Primary_Listener*, 2> Subscribers; + Subscribers subscribers_; + PortableServer::ObjectId object_id_; + CosNaming::Name name_; +}; + +typedef ACE_Singleton<GroupInfoPublisherBase, ACE_Thread_Mutex> GroupInfoPublisher; +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/IOGR_Maker.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/IOGR_Maker.cpp new file mode 100644 index 00000000000..1fa0c207acc --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/IOGR_Maker.cpp @@ -0,0 +1,271 @@ +// $Id$ + +#include "IOGR_Maker.h" +#include "tao/MProfile.h" +#include "tao/Profile.h" +#include "tao/Stub.h" +#include "tao/ORB_Core.h" +#include "tao/Object_KeyC.h" +#include "tao/Tagged_Components.h" +#include <algorithm> +#include "../Utils/resolve_init.h" +#include "orbsvcs/FaultTolerance/FT_IOGR_Property.h" +#include "GroupInfoPublisher.h" + +ACE_RCSID (EventChannel, + IOGR_Maker, + "$Id$") + + +static IOGR_Maker* maker; + +IOGR_Maker::IOGR_Maker() +{ +} + +void +IOGR_Maker::init(CORBA::ORB_ptr orb + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + iorm_ = resolve_init<TAO_IOP::TAO_IOR_Manipulation>(orb, + TAO_OBJID_IORMANIPULATION + ACE_ENV_ARG_PARAMETER); + ft_tag_component_.ft_domain_id = "ft_eventchannel"; + ft_tag_component_.object_group_id = 0; + ft_tag_component_.object_group_ref_version = 0; + maker = this; +} + + +IOGR_Maker* +IOGR_Maker::instance() +{ + return maker; +} + +CORBA::Object_ptr +IOGR_Maker::merge_iors(const TAO_IOP::TAO_IOR_Manipulation::IORList& list + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + CORBA::Object_var obj; + if (list.length() != 1) + obj = iorm_->merge_iors(list ACE_ENV_ARG_PARAMETER); + else + obj = CORBA::Object::_duplicate(list[0].in()); + return obj._retn(); +} + + +CORBA::Object_ptr +IOGR_Maker::make_iogr(const TAO_IOP::TAO_IOR_Manipulation::IORList& list + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + CORBA::Object_var obj = merge_iors(list ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(CORBA::Object::_nil()); + + set_tag_components(obj.in(), list[0] + ACE_ENV_ARG_PARAMETER); + + ACE_CHECK_RETURN(CORBA::Object::_nil()); + return obj._retn(); +} + + +void replace_key(char* ior, char* end_ior, + const TAO::ObjectKey& oldkey, + const TAO::ObjectKey& newkey) +{ + size_t keylen = oldkey.length(); + ACE_ASSERT(keylen == newkey.length()); + + char* pos = ior; + const char* oldkey_begin = (const char*)oldkey.get_buffer(); + const char* oldkey_end = oldkey_begin + keylen; + + while ((pos = std::search(pos, end_ior,oldkey_begin, oldkey_end)) != end_ior) { + memcpy(pos, newkey.get_buffer(), keylen); + pos+= keylen; + } +} + + +CORBA::Object_ptr +IOGR_Maker::forge_iogr(CORBA::Object_ptr obj + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + CORBA::Object_var merged; + // make a copy of the object + FtRtecEventChannelAdmin::EventChannel_var successor + = GroupInfoPublisher::instance()->successor(); + if (! CORBA::is_nil(successor.in())) { + TAO::ObjectKey_var newkey = obj->_key(); + + CORBA::Object_var new_base = ior_replace_key(successor.in(), newkey.in() + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(CORBA::Object::_nil()); + + if (CORBA::is_nil( new_base.in() )) + return CORBA::Object::_nil(); + + TAO_MProfile& base_profiles = new_base->_stubobj ()->base_profiles (); + + TAO_ORB_Core *orb_core = TAO_ORB_Core_instance (); + + TAO_Stub *stub = orb_core->create_stub (CORBA::string_dup(obj->_stubobj ()->type_id.in ()), // give the id string + base_profiles + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (CORBA::Object::_nil ()); + + // Make the stub memory allocation exception safe for the duration + // of this method. + TAO_Stub_Auto_Ptr safe_stub (stub); + + // Create the CORBA level proxy + CORBA::Object_ptr temp_obj = CORBA::Object::_nil (); + ACE_NEW_THROW_EX (temp_obj, + CORBA::Object (safe_stub.get ()), + CORBA::NO_MEMORY ()); + + // Release ownership of the pointers protected by the auto_ptrs since they + // no longer need to be protected by this point. + stub = safe_stub.release (); + + + merged = + iorm_->add_profiles(obj, temp_obj + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (CORBA::Object::_nil ()); + } + else + merged = CORBA::Object::_duplicate(obj); + + set_tag_components(merged.in(), obj + ACE_ENV_ARG_PARAMETER); + + ACE_CHECK_RETURN(CORBA::Object::_nil ()); + + return merged._retn(); +} + +CORBA::Object_ptr +IOGR_Maker::ior_replace_key(CORBA::Object_ptr obj, + const TAO::ObjectKey& key + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + TAO_OutputCDR out_cdr; + if (!(out_cdr << obj)) + return CORBA::Object::_nil(); + + ACE_Message_Block mb; + + ACE_CDR::consolidate(&mb, out_cdr.begin()); + + TAO::ObjectKey_var old_key = obj->_key(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN(CORBA::Object::_nil ()); + + replace_key(mb.base(), mb.end(), + old_key.in(), key); + + CORBA::Object_var new_obj; + TAO_InputCDR in_cdr(&mb); + if (!(in_cdr >> new_obj)) + return CORBA::Object::_nil(); + return new_obj._retn(); +} + +bool +IOGR_Maker::copy_ft_group_component(CORBA::Object_ptr ior) +{ + // Get the MProfile + TAO_MProfile &mprofile = + ior->_stubobj ()->base_profiles (); + + // Looking for a tagged component with a GROUP flag. + IOP::TaggedComponent tagged_components; + tagged_components.tag = IOP::TAG_FT_GROUP; + + if (mprofile.profile_count () > 0) + { + // Get the Tagged Components + const TAO_Tagged_Components &pfile_tagged = + mprofile.get_profile (0)->tagged_components (); + + if (pfile_tagged.get_component (tagged_components) == 1) + { + + // Grab the object group version + // @@ NOTE: This involves an allocation and a dellocation. This is + // really bad. + TAO_InputCDR cdr ( + ACE_reinterpret_cast (const char*, + tagged_components.component_data.get_buffer ()), + tagged_components.component_data.length ()); + CORBA::Boolean byte_order; + + if ((cdr >> ACE_InputCDR::to_boolean (byte_order)) == 0) + return false; + + cdr.reset_byte_order (ACE_static_cast (int,byte_order)); + + return (cdr >> ft_tag_component_) != 0; + } + } + + return false; +} + +void +IOGR_Maker::set_ft_domain_id(const char* domain_id) +{ + ft_tag_component_.ft_domain_id = domain_id; +} + +void +IOGR_Maker::set_group_id(CORBA::ULongLong id) +{ + ft_tag_component_.object_group_id = id; +} + +void +IOGR_Maker::set_ref_version(CORBA::ULong version) +{ + ft_tag_component_.object_group_ref_version = version; +} + +CORBA::ULong +IOGR_Maker::increment_ref_version() +{ + ACE_DEBUG((LM_DEBUG, "new object_group_ref_version = %d\n", ft_tag_component_.object_group_ref_version+1)); + return ++ft_tag_component_.object_group_ref_version; +} + +CORBA::ULong +IOGR_Maker::get_ref_version() const +{ + return ft_tag_component_.object_group_ref_version; +} + + +void +IOGR_Maker::set_tag_components(CORBA::Object_ptr merged, CORBA::Object_ptr primary + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + // set the primary + TAO_FT_IOGR_Property prop (ft_tag_component_); + + + prop.remove_primary_tag(merged + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + iorm_->set_primary (&prop, merged, primary + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + // Set the property + iorm_->set_property (&prop, + merged + ACE_ENV_ARG_PARAMETER); + + +} + diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/IOGR_Maker.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/IOGR_Maker.h new file mode 100644 index 00000000000..fde6448cecc --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/IOGR_Maker.h @@ -0,0 +1,68 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file IOGR_Maker.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef IOGR_MAKER_H +#define IOGR_MAKER_H + +#include "orbsvcs/FT_CORBA_ORBC.h" +#include "tao/IORManipulation/IORManipulation.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class IOGR_Maker +{ +public: + IOGR_Maker(); + + void init(CORBA::ORB_ptr orb + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + + /// instance() will only return a valid object after an + /// instance is explicitly created by client and init() is called. + static IOGR_Maker* instance(); + + /// Create a new object reference by merging the profiles lists in the + /// supplied list of one or more object references. + CORBA::Object_ptr merge_iors(const TAO_IOP::TAO_IOR_Manipulation::IORList& + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + + /// Create a new IOGR (with FT_PRIMARY and FT_GROUP components) by merging + /// the profiles lists in the supplied list of one or more object references. + CORBA::Object_ptr make_iogr(const TAO_IOP::TAO_IOR_Manipulation::IORList& + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + + /// Make an new IOGR with obj as primary. + CORBA::Object_ptr forge_iogr(CORBA::Object_ptr obj + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + + CORBA::Object_ptr ior_replace_key(CORBA::Object_ptr obj, + const TAO::ObjectKey& key + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + + bool copy_ft_group_component(CORBA::Object_ptr obj); + + void set_ft_domain_id(const char*); + void set_group_id(CORBA::ULongLong); + void set_ref_version(CORBA::ULong); + CORBA::ULong increment_ref_version(); + CORBA::ULong get_ref_version() const; + +private: + void set_tag_components(CORBA::Object_ptr merged, CORBA::Object_ptr primary + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + TAO_IOP::TAO_IOR_Manipulation_var iorm_; + FT::TagFTGroupTaggedComponent ft_tag_component_; +}; + +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Identification_Service.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Identification_Service.cpp new file mode 100644 index 00000000000..86976a2854f --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Identification_Service.cpp @@ -0,0 +1,92 @@ +// $Id$ + +#include "Identification_Service.h" +#include "../Utils/UUID.h" + +ACE_RCSID (EventChannel, + Identification_Service, + "$Id$") + + +namespace FTRTEC { + + namespace { + Identification_Service* service; + const char oid[] = "\xF8\xB3\xB1\xFE\xAC\xC6\x07\x11\x02\x0C\x02\x50\xEB\x05\x77\xD0"; + } + + Identification_Service::Identification_Service() + { + } + + Identification_Service::~Identification_Service() + { + } + + + Identification_Service* Identification_Service::instance() + { + return service; + } + + int Identification_Service::init(int argc, ACE_TCHAR* argv[]) + { + if (service != 0) + return 0; + name_.length(1); + name_[0].id = CORBA::string_dup("FT_EventService"); + + while (argc > 1) { + if ( ACE_OS::strcasecmp (argv[0], ACE_LIB_TEXT("-Object_ID")) == 0) { + --argc; ++argv; + if (argv[0][0] == '-') continue; + else if (argv[0][0] != '$') { + UUID uuid(argv[0]); + if (!uuid.is_valid()) + ACE_ERROR_RETURN((LM_ERROR, "Invalid Object_ID\n"), -1); + object_id_.length(16); + uuid.to_binary(&object_id_[0]); + } + --argc; ++argv; + } + else if (ACE_OS::strcasecmp (argv[0], ACE_LIB_TEXT("-Name")) ==0) { + --argc; ++argv; + if (argv[0][0] == '-') continue; + else if (argv[0][0] != '$') { + name_[0].id = CORBA::string_dup(argv[0]); + } + --argc; ++argv; + } + } + + if (object_id_.length() == 0) { + // assign an default value for object id + object_id_.length(16); + memcpy(&object_id_[0], oid, 16); + } + service = this; + return 0; + } + + + const PortableServer::ObjectId& Identification_Service::object_id() const + { + return object_id_; + } + + + const CosNaming::Name& Identification_Service::name() const + { + return name_; + } + + ACE_FACTORY_DEFINE (TAO_FTRTEC, Identification_Service); + + ACE_STATIC_SVC_DEFINE (Identification_Service, + ACE_TEXT ("FTRTEC_Identification"), + ACE_SVC_OBJ_T, + &ACE_SVC_NAME (Identification_Service), + ACE_Service_Type::DELETE_THIS + | ACE_Service_Type::DELETE_OBJ, + 0); +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Identification_Service.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Identification_Service.h new file mode 100644 index 00000000000..e2a4ee3e5f1 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Identification_Service.h @@ -0,0 +1,54 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Identification_Service.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef IDENTIFICATION_SERVICE_H +#define IDENTIFICATION_SERVICE_H + +#include "ace/Service_Object.h" +#include "PortableServer/PortableServerC.h" +#include "orbsvcs/CosNamingC.h" +#include "orbsvcs/FTRTC.h" +#include "ftrtec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace FTRTEC +{ + class Identification_Service : public ACE_Service_Object + { + public: + Identification_Service(); + ~Identification_Service(); + + /** + * This function returns 0 when init is not called yet. + */ + static Identification_Service* instance(); + + int init(int argc, ACE_TCHAR* argv[]); + + const PortableServer::ObjectId& object_id() const; + const CosNaming::Name& name() const; + private: + PortableServer::ObjectId object_id_; + CosNaming::Name name_; + }; + + + ACE_STATIC_SVC_DECLARE_EXPORT (TAO_FTRTEC, Identification_Service) + ACE_STATIC_SVC_REQUIRE(Identification_Service); + ACE_FACTORY_DECLARE (TAO_FTRTEC, Identification_Service) +} + +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxyConsumerStateWorker.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxyConsumerStateWorker.cpp new file mode 100644 index 00000000000..0b3db457a8d --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxyConsumerStateWorker.cpp @@ -0,0 +1,33 @@ +// $Id$ + +#include "ProxyConsumerStateWorker.h" +#include "orbsvcs/Event/EC_Event_Channel_Base.h" +#include "orbsvcs/Event/EC_ProxySupplier.h" + +ACE_RCSID (EventChannel, + ProxyConsumerStateWorker, + "$Id$") + +ProxyConsumerStateWorker::ProxyConsumerStateWorker + (FtRtecEventChannelAdmin::ProxyConsumerStates& states) +: consumerStates_(states) +{ +} + +ProxyConsumerStateWorker::~ProxyConsumerStateWorker() +{ +} + +void ProxyConsumerStateWorker::set_size(size_t size) +{ + consumerStates_.length(size); + index_ = 0; +} + +void ProxyConsumerStateWorker::work(TAO_EC_ProxyPushConsumer* object + ACE_ENV_ARG_DECL) +{ + TAO_FTEC_ProxyPushConsumer* proxy = + static_cast<TAO_FTEC_ProxyPushConsumer*>(object); + proxy->get_state(consumerStates_[index_++]); +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxyConsumerStateWorker.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxyConsumerStateWorker.h new file mode 100644 index 00000000000..772fd16538e --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxyConsumerStateWorker.h @@ -0,0 +1,38 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file ProxyConsumerStateWorker.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef PROXYCONSUMERSTATEWORKER_H +#define PROXYCONSUMERSTATEWORKER_H + +#include "orbsvcs/Event/EC_SupplierAdmin.h" +#include "orbsvcs/ESF/ESF_Worker.h" +#include "FTEC_ProxyConsumer.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class ProxyConsumerStateWorker : public TAO_ESF_Worker<TAO_EC_ProxyPushConsumer> +{ +public: + ProxyConsumerStateWorker(FtRtecEventChannelAdmin::ProxyConsumerStates& states); + ~ProxyConsumerStateWorker(); + + virtual void set_size(size_t size); + virtual void work(TAO_EC_ProxyPushConsumer* object + ACE_ENV_ARG_DECL); +private: + int index_; + FtRtecEventChannelAdmin::ProxyConsumerStates& consumerStates_; +}; + +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxySupplierStateWorker.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxySupplierStateWorker.cpp new file mode 100644 index 00000000000..af864699aac --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxySupplierStateWorker.cpp @@ -0,0 +1,35 @@ +// $Id$ + +#include "orbsvcs/FtRtecEventChannelAdminC.h" +#include "ProxySupplierStateWorker.h" +#include "orbsvcs/Event/EC_Event_Channel_Base.h" +#include "orbsvcs/Event/EC_ProxyConsumer.h" + +ACE_RCSID (EventChannel, + ProxySupplierStateWorker, + "$Id$") + + +ProxySupplierStateWorker::ProxySupplierStateWorker + (FtRtecEventChannelAdmin::ProxySupplierStates& states) +: supplierStates_(states) +{ +} + +ProxySupplierStateWorker::~ProxySupplierStateWorker() +{ +} + +void ProxySupplierStateWorker::set_size(size_t size) +{ + supplierStates_.length(size); + index_ = 0; +} + +void ProxySupplierStateWorker::work(TAO_EC_ProxyPushSupplier* object + ACE_ENV_ARG_DECL) +{ + TAO_FTEC_ProxyPushSupplier* proxy = + static_cast<TAO_FTEC_ProxyPushSupplier*>(object); + proxy->get_state(supplierStates_[index_++]); +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxySupplierStateWorker.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxySupplierStateWorker.h new file mode 100644 index 00000000000..aa6681719de --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxySupplierStateWorker.h @@ -0,0 +1,38 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file ProxySupplierStateWorker.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef PROXYSUPPLIERSTATEWORKER_H +#define PROXYSUPPLIERSTATEWORKER_H + +#include "orbsvcs/Event/EC_ConsumerAdmin.h" +#include "orbsvcs/ESF/ESF_Worker.h" +#include "FTEC_ProxySupplier.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class ProxySupplierStateWorker : public TAO_ESF_Worker<TAO_EC_ProxyPushSupplier> +{ +public: + ProxySupplierStateWorker(FtRtecEventChannelAdmin::ProxySupplierStates& states); + ~ProxySupplierStateWorker(); + + virtual void set_size(size_t size); + virtual void work(TAO_EC_ProxyPushSupplier* object + ACE_ENV_ARG_DECL); +private: + int index_; + FtRtecEventChannelAdmin::ProxySupplierStates& supplierStates_; +}; + +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.cpp new file mode 100644 index 00000000000..3a63e2a495b --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.cpp @@ -0,0 +1,150 @@ +// $Id$ + +#include "Replication_Service.h" +#include "AMI_Replication_Strategy.h" +#include "Basic_Replication_Strategy.h" +#include "FTEC_ORBInitializer.h" + +ACE_RCSID (EventChannel, + Replication_Service, + "$Id$") + + + + +namespace FTRTEC +{ + namespace { + auto_ptr<Replication_Strategy> replication_strategy; + Replication_Service* service; + } + + Replication_Service* Replication_Service::instance() + { + return service; + } + + Replication_Service::Replication_Service() + { + service = this; + } + + Replication_Service::~Replication_Service() + { + } + + int Replication_Service::init (int argc, ACE_TCHAR* argv[]) + { + ACE_TRACE ("Replication_Service::init"); + + static int initialized = 0; + + // Only allow initialization once. + if (initialized) + return 0; + + initialized = 1; + + // Parse any service configurator parameters. + if (argc > 0 && ACE_OS::strcasecmp (argv[0], ACE_LIB_TEXT("AMI")) == 0) + replication_strategy.reset(new AMI_Replication_Strategy); + else + replication_strategy.reset(new Basic_Replication_Strategy); + + ACE_TRY_NEW_ENV + { + PortableInterceptor::ORBInitializer_ptr temp_orb_initializer = + PortableInterceptor::ORBInitializer::_nil (); + PortableInterceptor::ORBInitializer_var orb_initializer; + + /// Register the RTCORBA ORBInitializer. + ACE_NEW_THROW_EX (temp_orb_initializer, + FTEC_ORBInitializer, + CORBA::NO_MEMORY ()); + ACE_TRY_CHECK; + orb_initializer = temp_orb_initializer; + + PortableInterceptor::register_orb_initializer (orb_initializer.in () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, + "Unexpected exception caught while " + "initializing the TransactionDepth"); + return 1; + } + ACE_ENDTRY; + return 0; + } + + + void Replication_Service::become_primary() + { + Replication_Strategy* strategy = + replication_strategy->make_primary_strategy(); + if (strategy == 0) + ACE_THROW(CORBA::NO_MEMORY()); + + if (replication_strategy.get() != strategy) { + replication_strategy.reset(strategy); + } + } + + void Replication_Service::check_validity(ACE_ENV_SINGLE_ARG_DECL) + { + replication_strategy->check_validity(ACE_ENV_SINGLE_ARG_PARAMETER); + } + + + void Replication_Service::replicate_request(const FtRtecEventChannelAdmin::Operation& update, + RollbackOperation rollback + ACE_ENV_ARG_DECL) + { + TAO_OutputCDR cdr; + cdr << update; + + ACE_Message_Block mb; + ACE_CDR::consolidate(&mb, cdr.begin()); + FTRT::State state(mb.length(), &mb); + //FT::State state; + + replication_strategy->replicate_request( + state, + rollback, + update.object_id + ACE_ENV_ARG_PARAMETER); + } + + int Replication_Service::acquire_read (void) + { + int r = replication_strategy->acquire_read(); + ACE_DEBUG((LM_DEBUG, "Read Lock acquired %d\n", r)); + return r; + } + + int Replication_Service::acquire_write (void) + { + int r= replication_strategy->acquire_write(); + ACE_DEBUG((LM_DEBUG, "Write Lock acqured %d\n", r)); + return r; + } + + int Replication_Service::release (void) + { + int r= replication_strategy->release(); + ACE_DEBUG((LM_DEBUG, "Lock Released %d\n", r)); + return r; + } + + ACE_FACTORY_DEFINE (TAO_FTRTEC, Replication_Service); + + ACE_STATIC_SVC_DEFINE (Replication_Service, + ACE_TEXT ("FTRTEC_Replication"), + ACE_SVC_OBJ_T, + &ACE_SVC_NAME (Replication_Service), + ACE_Service_Type::DELETE_THIS + | ACE_Service_Type::DELETE_OBJ, + 0); +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.h new file mode 100644 index 00000000000..0af8d63cf78 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.h @@ -0,0 +1,62 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Replication_Service.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef REPLCATION_SERVICE_H +#define REPLCATION_SERVICE_H + +#include "orbsvcs/FtRtecEventChannelAdminC.h" +#include "FTEC_Become_Primary_Listener.h" +#include "tao/PortableInterceptorC.h" +#include "ace/Service_Object.h" +#include "ftrtec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace FTRTEC +{ + class Replication_Service : public TAO_FTEC_Become_Primary_Listener, + public ACE_Service_Object + { + public: + static Replication_Service* instance(); + + Replication_Service(); + ~Replication_Service(); + + virtual int init (int argc, + ACE_TCHAR* []); + + virtual void become_primary(); + + void check_validity(ACE_ENV_SINGLE_ARG_DECL); + + typedef void (FtRtecEventChannelAdmin::EventChannelFacade::*RollbackOperation) + (const FtRtecEventChannelAdmin::ObjectId& ACE_ENV_ARG_DECL_WITH_DEFAULTS); + + void replicate_request(const FtRtecEventChannelAdmin::Operation& update, + RollbackOperation rollback + ACE_ENV_ARG_DECL); + + int acquire_read (void); + int acquire_write (void); + int release (void); + }; + + + ACE_STATIC_SVC_DECLARE_EXPORT (TAO_FTRTEC, Replication_Service) + ACE_STATIC_SVC_REQUIRE(Replication_Service); + ACE_FACTORY_DECLARE (TAO_FTRTEC, Replication_Service) +} + +#endif //REPLCATION_SERVICE_H diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Strategy.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Strategy.cpp new file mode 100644 index 00000000000..30f23c60bef --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Strategy.cpp @@ -0,0 +1,31 @@ +// $Id$ + +#include "Replication_Strategy.h" +#include "FTEC_Event_Channel.h" + +ACE_RCSID (EventChannel, + Replication_Strategy, + "$Id$") + + +Replication_Strategy::Replication_Strategy() +{ +} + + +Replication_Strategy::~Replication_Strategy() +{ +} + + +void +Replication_Strategy::check_validity(ACE_ENV_SINGLE_ARG_DECL) +{ +} + + +Replication_Strategy* +Replication_Strategy::make_primary_strategy() +{ + return this; +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Strategy.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Strategy.h new file mode 100644 index 00000000000..9bf56d85384 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Strategy.h @@ -0,0 +1,49 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Replication_Strategy.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef REPLICATION_STRATEGY_H +#define REPLICATION_STRATEGY_H +#include "orbsvcs/FtRtecEventChannelAdminC.h" +#include "tao/PortableInterceptorC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class TAO_FTEC_Event_Channel_Impl; +class Replication_Strategy +{ +public: + Replication_Strategy(); + virtual ~Replication_Strategy(); + + virtual void check_validity(ACE_ENV_SINGLE_ARG_DECL); + + typedef void (FtRtecEventChannelAdmin::EventChannelFacade::*RollbackOperation) + (const FtRtecEventChannelAdmin::ObjectId& ACE_ENV_ARG_DECL_WITH_DEFAULTS); + + + virtual void replicate_request(const FTRT::State& state, + RollbackOperation rollback, + const FtRtecEventChannelAdmin::ObjectId& oid + ACE_ENV_ARG_DECL)=0; + + virtual Replication_Strategy* make_primary_strategy(); + + virtual int acquire_read (void)=0; + virtual int acquire_write (void)=0; + virtual int release (void)=0; + +}; + +#endif + diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Request_Context_Repository.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Request_Context_Repository.cpp new file mode 100644 index 00000000000..7c87e793d5e --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Request_Context_Repository.cpp @@ -0,0 +1,279 @@ +// $Id$ + +#include "Request_Context_Repository.h" +#include "../Utils/resolve_init.h" +#include "../Utils/UUID.h" + +ACE_RCSID (EventChannel, + Request_Context_Repository, + "$Id$") + +namespace { +PortableInterceptor::SlotId object_id_slot; +PortableInterceptor::SlotId cached_result_slot; +PortableInterceptor::SlotId seq_num_slot; +PortableInterceptor::SlotId ft_request_service_context_slot; +PortableInterceptor::SlotId transaction_depth_slot; +CORBA::ORB_ptr orb; +} + + +void +Request_Context_Repository::allocate_slots(PortableInterceptor::ORBInitInfo_ptr info + ACE_ENV_ARG_DECL) +{ + object_id_slot = info->allocate_slot_id(ACE_ENV_SINGLE_ARG_PARAMETER); + cached_result_slot = info->allocate_slot_id(ACE_ENV_SINGLE_ARG_PARAMETER); + seq_num_slot = info->allocate_slot_id(ACE_ENV_SINGLE_ARG_PARAMETER); + ft_request_service_context_slot = info->allocate_slot_id(ACE_ENV_SINGLE_ARG_PARAMETER); + transaction_depth_slot = info->allocate_slot_id(ACE_ENV_SINGLE_ARG_PARAMETER); +} + +void +Request_Context_Repository::init(CORBA::ORB_ptr the_orb) +{ + orb = the_orb; +} + +void Request_Context_Repository::generate_object_id(FtRtecEventChannelAdmin::ObjectId& oid) +{ + oid.length(sizeof(UUID)); + UUID::create(oid.get_buffer()); + set_object_id(oid + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +void +Request_Context_Repository::set_object_id(const FtRtecEventChannelAdmin::ObjectId& object_id + ACE_ENV_ARG_DECL) +{ + PortableInterceptor::Current_var pic = + resolve_init<PortableInterceptor::Current>(orb, "PICurrent" + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + CORBA::Any a; + a <<= object_id; + pic->set_slot(object_id_slot, a + ACE_ENV_ARG_PARAMETER); + + ACE_CHECK; +} + +FtRtecEventChannelAdmin::ObjectId_var +get_object_id(CORBA::Any_var a + ACE_ENV_ARG_DECL) +{ + FtRtecEventChannelAdmin::ObjectId* object_id; + FtRtecEventChannelAdmin::ObjectId_var result; + + if ((*a >>= object_id) ==0) + ACE_THROW_RETURN(CORBA::NO_MEMORY(), result); + + + ACE_NEW_THROW_EX(result, + FtRtecEventChannelAdmin::ObjectId(*object_id), + CORBA::NO_MEMORY()); + return result; +} + + +FtRtecEventChannelAdmin::ObjectId_var +Request_Context_Repository::get_object_id(ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) +{ + PortableInterceptor::Current_var pic = + resolve_init<PortableInterceptor::Current>(orb, "PICurrent" + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(FtRtecEventChannelAdmin::ObjectId_var()); + + CORBA::Any_var a = pic->get_slot(object_id_slot + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(FtRtecEventChannelAdmin::ObjectId_var()); + + return ::get_object_id(a + ACE_ENV_ARG_PARAMETER); +} + +FtRtecEventChannelAdmin::ObjectId_var +Request_Context_Repository::get_object_id(PortableInterceptor::ServerRequestInfo_ptr ri + ACE_ENV_ARG_DECL) +{ + CORBA::Any_var a = ri->get_slot(object_id_slot + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(FtRtecEventChannelAdmin::ObjectId_var); + + return ::get_object_id(a + ACE_ENV_ARG_PARAMETER); + +} + +void +Request_Context_Repository::set_cached_result(PortableInterceptor::ServerRequestInfo_ptr ri, + const CORBA::Any& result + ACE_ENV_ARG_DECL) +{ + ri->set_slot(cached_result_slot, result ACE_ENV_ARG_PARAMETER); +} + +CORBA::Any_ptr +Request_Context_Repository::get_cached_result(ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) +{ + PortableInterceptor::Current_var pic = + resolve_init<PortableInterceptor::Current>(orb, "PICurrent" + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + + CORBA::Any_var a = pic->get_slot(cached_result_slot + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + return a._retn(); +} + +bool Request_Context_Repository::is_executed_request(ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) +{ + CORBA::Any_var any = get_cached_result(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN(false); + + CORBA::TypeCode_var type = any->type(); + return type->kind() != CORBA::tk_null; +} + +void Request_Context_Repository::set_sequence_number(PortableInterceptor::ServerRequestInfo_ptr ri, + FTRT::SequenceNumber seq_num + ACE_ENV_ARG_DECL) +{ + CORBA::Any a; + + a <<= seq_num; + + ri->set_slot(seq_num_slot, a ACE_ENV_ARG_PARAMETER); +} + +void +Request_Context_Repository::set_sequence_number(FTRT::SequenceNumber seq_num + ACE_ENV_ARG_DECL) +{ + PortableInterceptor::Current_var pic = + resolve_init<PortableInterceptor::Current>(orb, "PICurrent" + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + CORBA::Any a; + + a <<= seq_num; + + pic->set_slot(seq_num_slot, a ACE_ENV_ARG_PARAMETER); +} + + +FTRT::SequenceNumber +Request_Context_Repository::get_sequence_number(ACE_ENV_SINGLE_ARG_DECL) +{ + PortableInterceptor::Current_var pic = + resolve_init<PortableInterceptor::Current>(orb, "PICurrent" + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + CORBA::Any_var a = pic->get_slot(seq_num_slot ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + FTRT::SequenceNumber result = 0; + *a >>= result; + return result; +} + +FTRT::SequenceNumber +Request_Context_Repository::get_sequence_number( + PortableInterceptor::ClientRequestInfo_ptr ri + ACE_ENV_ARG_DECL) +{ + CORBA::Any_var a = ri->get_slot(seq_num_slot ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + FTRT::SequenceNumber result = 0; + *a >>= result; + return result; +} + +void +Request_Context_Repository::set_ft_request_service_context( + PortableInterceptor::ServerRequestInfo_ptr ri, + IOP::ServiceContext_var service_context + ACE_ENV_ARG_DECL) +{ + CORBA::Any a; + a <<= service_context.in(); + ri->set_slot(ft_request_service_context_slot,a + ACE_ENV_ARG_PARAMETER); +} + +CORBA::Any_var +Request_Context_Repository::get_ft_request_service_context( + PortableInterceptor::ClientRequestInfo_ptr ri + ACE_ENV_ARG_DECL) +{ + return ri->get_slot(ft_request_service_context_slot + ACE_ENV_ARG_PARAMETER); +} + +void +Request_Context_Repository::set_transaction_depth( + PortableInterceptor::ServerRequestInfo_ptr ri, + FTRT::TransactionDepth depth + ACE_ENV_ARG_DECL) +{ + CORBA::Any a; + a <<= depth; + ri->set_slot(transaction_depth_slot,a + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +void +Request_Context_Repository::set_transaction_depth( + FTRT::TransactionDepth depth + ACE_ENV_ARG_DECL) +{ + PortableInterceptor::Current_var pic = + resolve_init<PortableInterceptor::Current>(orb, "PICurrent" + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + CORBA::Any a; + a <<= depth; + pic->set_slot(transaction_depth_slot,a + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + + +FTRT::TransactionDepth +Request_Context_Repository::get_transaction_depth( + PortableInterceptor::ClientRequestInfo_ptr ri + ACE_ENV_ARG_DECL) +{ + CORBA::Any_var a = ri->get_slot(transaction_depth_slot + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + FTRT::TransactionDepth result=0; + a >>= result; + return result; + +} + +FTRT::TransactionDepth +Request_Context_Repository::get_transaction_depth( + ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) +{ + PortableInterceptor::Current_var pic = + resolve_init<PortableInterceptor::Current>(orb, "PICurrent" + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + CORBA::Any_var a = pic->get_slot(transaction_depth_slot + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + FTRT::TransactionDepth result=0; + a >>= result; + return result; + +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Request_Context_Repository.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Request_Context_Repository.h new file mode 100644 index 00000000000..2818a3bf747 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Request_Context_Repository.h @@ -0,0 +1,101 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Request_Context_Repository.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef REQUEST_CONTEXT_REPOSITORY_H +#define REQUEST_CONTEXT_REPOSITORY_H + +#include "orbsvcs/FtRtecEventChannelAdminC.h" +#include "tao/PortableInterceptorC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class TAO_FTEC_Event_Channel_Impl; + + +/** + * @class Request_Context_Repository + * + * @brief This class is used to transfer the information between thread context + * information and the request context in the portable interceptors. It + * encapulates the PICurrent to provide a type safe way for the transfer of + * FTEC specific information inside and outside protable interceptors. + */ +class Request_Context_Repository +{ +public: + + void init(CORBA::ORB_ptr orb); + + /** + * Used by ORBInitializer to allocate required slots for + * FTEC. + */ + void allocate_slots(PortableInterceptor::ORBInitInfo_ptr info + ACE_ENV_ARG_DECL); + + + void generate_object_id(FtRtecEventChannelAdmin::ObjectId& object_id + ACE_ENV_ARG_DECL); + void set_object_id(const FtRtecEventChannelAdmin::ObjectId& object_id + ACE_ENV_ARG_DECL); + FtRtecEventChannelAdmin::ObjectId_var get_object_id(ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS); + FtRtecEventChannelAdmin::ObjectId_var + get_object_id(PortableInterceptor::ServerRequestInfo_ptr ri + ACE_ENV_ARG_DECL); + + void set_cached_result(PortableInterceptor::ServerRequestInfo_ptr ri, + const CORBA::Any& result + ACE_ENV_ARG_DECL); + + CORBA::Any_ptr get_cached_result(ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS); + bool is_executed_request(); + + void set_sequence_number(PortableInterceptor::ServerRequestInfo_ptr ri, + FTRT::SequenceNumber + ACE_ENV_ARG_DECL); + + void set_sequence_number(FTRT::SequenceNumber + ACE_ENV_ARG_DECL); + FTRT::SequenceNumber get_sequence_number(PortableInterceptor::ClientRequestInfo_ptr ri + ACE_ENV_ARG_DECL); + + FTRT::SequenceNumber get_sequence_number(ACE_ENV_SINGLE_ARG_DECL); + + void set_ft_request_service_context( + PortableInterceptor::ServerRequestInfo_ptr ri, + IOP::ServiceContext_var service_context + ACE_ENV_ARG_DECL); + + CORBA::Any_var get_ft_request_service_context( + PortableInterceptor::ClientRequestInfo_ptr + riACE_ENV_ARG_DECL); + + void set_transaction_depth( + PortableInterceptor::ServerRequestInfo_ptr ri, + FTRT::TransactionDepth depth + ACE_ENV_ARG_DECL); + + void set_transaction_depth( + FTRT::TransactionDepth depth + ACE_ENV_ARG_DECL); + + FTRT::TransactionDepth get_transaction_depth( + ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS); + + FTRT::TransactionDepth get_transaction_depth( + PortableInterceptor::ClientRequestInfo_ptr + ACE_ENV_ARG_DECL); +}; + +#endif /// REQUEST_CONTEXT_REPOSITORY_H diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/SCTP_Fault_Detector.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/SCTP_Fault_Detector.cpp new file mode 100644 index 00000000000..1e59eda5240 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/SCTP_Fault_Detector.cpp @@ -0,0 +1,86 @@ +// $Id$ + +#include "FTEC_Fault_Listener.h" +#include "SCTP_Fault_Detector.h" + +ACE_RCSID (EventChannel, + SCTP_Fault_Detector, + "$Id$") + +#ifndef SCTP_HEARTBEAT_ITVL +#define SCTP_HEARTBEAT_ITVL 19 +#endif +#ifndef SOL_SCTP +#define SOL_SCTP 132 +#endif + + +SCTP_Connector::SCTP_Connector() +: heart_beat_(0) +{ +} + +int +SCTP_Connector::connect (ACE_SOCK_SEQPACK_Association &new_association, + const ACE_Addr &remote_sap, + const ACE_Time_Value *timeout, + const ACE_Addr &local_sap, + int reuse_addr, + int /* flags */, + int /* perms */, + int protocol) +{ + ACE_TRACE ("SCTP_Connector::connect"); + + if (this->shared_open (new_association, + remote_sap.get_type (), + protocol, + reuse_addr) == -1) + return -1; + else if (this->shared_connect_start (new_association, + timeout, + local_sap) == -1) + return -1; + + if (new_association.set_option(SOL_SCTP, + SCTP_HEARTBEAT_ITVL, + &heart_beat_, + sizeof(heart_beat_)) == -1) + return -1; + + int result = ACE_OS::connect (new_association.get_handle (), + ACE_reinterpret_cast (sockaddr *, + remote_sap.get_addr ()), + remote_sap.get_size ()); + + return this->shared_connect_finish (new_association, + timeout, + result); +} + + +inline void SCTP_Connector::set_heart_beat(int hb) +{ + heart_beat_ = hb; +} + + +STCP_Fault_Detector::~STCP_Fault_Detector() +{ +} + + +int STCP_Fault_Detector::parse_conf(int argc, char** argv) +{ + ACE_TRACE ("STCP_Fault_Detector::parse_conf"); + + for (int curarg = 0; curarg < argc; curarg++) + if (ACE_OS::strcasecmp (argv[curarg], + ACE_LIB_TEXT("-HeartBeat")) == 0) + { + curarg++; + if (curarg < argc) + connector_.set_heart_beat(atoi(argv[curarg])); + } + return 0; +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/SCTP_Fault_Detector.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/SCTP_Fault_Detector.h new file mode 100644 index 00000000000..abc33a9a1fb --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/SCTP_Fault_Detector.h @@ -0,0 +1,75 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file SCTP_Fault_Detector.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef SCTP_FAULT_DETECTOR_H +#define SCTP_FAULT_DETECTOR_H + +#include "ace/Acceptor.h" +#include "ace/Connector.h" +#include "ace/SOCK_SEQPACK_Association.h" +#include "ace/SOCK_SEQPACK_Acceptor.h" +#include "ace/SOCK_SEQPACK_Connector.h" +#include "ConnectionHandler_T.h" +#include "Fault_Detector_T.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +// make sure that the code compiles cleanly even if SCTP is not +// available. If SCTP is not installed, program will exit early in +// main() with an error message +#ifdef ACE_HAS_SCTP +extern "C" { +#include <netinet/sctp.h> +}; +#else +#ifndef IPPROTO_SCTP +#define IPPROTO_SCTP 132 +#endif // !IPPROTO_SCTP +#define SCTP_NODELAY 1 +#endif // ACE_HAS_SCTP + + +typedef ACE_Acceptor<ConnectionAcceptHandler<ACE_SOCK_SEQPACK_ASSOCIATION>, ACE_SOCK_SEQPACK_ACCEPTOR> + SCTP_ConnectionAcceptHandler; +typedef ConnectionDetectHandler<ACE_SOCK_SEQPACK_ASSOCIATION> STCP_ConnectionDetectHandler; + +class SCTP_Connector : public ACE_SOCK_SEQPACK_Connector +{ +public: + SCTP_Connector(); + int connect (ACE_SOCK_SEQPACK_Association &new_association, + const ACE_Addr &remote_sap, + const ACE_Time_Value *timeout = 0, + const ACE_Addr &local_sap = ACE_Addr::sap_any, + int reuse_addr = 0, + int flags = 0, + int perms = 0, + int protocol = 132); + void set_heart_beat(int hb); +private: + int heart_beat_; +}; + +class STCP_Fault_Detector : public Fault_Detector_T< + SCTP_ConnectionAcceptHandler, + SCTP_Connector, + STCP_ConnectionDetectHandler > +{ +public: + virtual ~STCP_Fault_Detector(); +private: + virtual int parse_conf(int argc, char** argv); +}; + +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Set_Update_Interceptor.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Set_Update_Interceptor.cpp new file mode 100644 index 00000000000..12d8de6e9e3 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Set_Update_Interceptor.cpp @@ -0,0 +1,138 @@ +// $Id$ + +#include "Set_Update_Interceptor.h" +#include "orbsvcs/FTRTC.h" +#include "Request_Context_Repository.h" + +ACE_RCSID (EventChannel, + Set_Update_Intercetpor, + "$Id$") + +TAO_Set_Update_Interceptor:: +TAO_Set_Update_Interceptor () +: myname_ ("TAO_Set_Update_Interceptor") +{ +} + +TAO_Set_Update_Interceptor::~TAO_Set_Update_Interceptor (void) +{ +} + +char * +TAO_Set_Update_Interceptor::name (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) +ACE_THROW_SPEC ((CORBA::SystemException)) +{ + return CORBA::string_dup (this->myname_); +} + +void +TAO_Set_Update_Interceptor::destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) +ACE_THROW_SPEC ((CORBA::SystemException)) +{ +} + +void +TAO_Set_Update_Interceptor::send_poll ( + PortableInterceptor::ClientRequestInfo_ptr + ACE_ENV_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + // Do Nothing +} + +void +TAO_Set_Update_Interceptor::send_request ( + PortableInterceptor::ClientRequestInfo_ptr ri + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)) +{ + CORBA::String_var operation = ri->operation (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + if (strcmp(operation.in(), "set_update")==0 || + strcmp(operation.in(), "oneway_set_update") ==0) { + CORBA::Any_var a = Request_Context_Repository().get_ft_request_service_context(ri + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + IOP::ServiceContext* sc; + + if ((*a >>= sc) ==0) + return; + + ri->add_request_service_context (*sc, 0 ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + FTRT::TransactionDepth transaction_depth = + Request_Context_Repository().get_transaction_depth(ri); + TAO_OutputCDR cdr; + ACE_Message_Block mb; + + if (transaction_depth) { + if (!(cdr << ACE_OutputCDR::from_boolean (TAO_ENCAP_BYTE_ORDER))) + ACE_THROW (CORBA::MARSHAL ()); + + // Add Transaction Depth Context + if ((cdr << transaction_depth) == 0) + ACE_THROW (CORBA::MARSHAL ()); + sc->context_id = FTRT::FT_TRANSACTION_DEPTH; + + ACE_CDR::consolidate(&mb, cdr.begin()); + sc->context_data.replace(mb.length(), &mb); + + ri->add_request_service_context (*sc, 0 ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + cdr.reset(); + } + + // Add Sequence Number Context + + FTRT::SequenceNumber sequence_number = + Request_Context_Repository().get_sequence_number(ri ACE_ENV_ARG_PARAMETER); + + ACE_DEBUG((LM_DEBUG, "send_request : sequence_number = %d\n", sequence_number)); + if (sequence_number != 0) { + if (!(cdr << ACE_OutputCDR::from_boolean (TAO_ENCAP_BYTE_ORDER))) + ACE_THROW (CORBA::MARSHAL ()); + if ((cdr << sequence_number) == 0) + ACE_THROW (CORBA::MARSHAL ()); + sc->context_id = FTRT::FT_SEQUENCE_NUMBER; + + ACE_CDR::consolidate(&mb, cdr.begin()); + sc->context_data.replace(mb.length(), &mb); + + ri->add_request_service_context (*sc, 0 ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + } +} + +void +TAO_Set_Update_Interceptor::receive_reply ( + PortableInterceptor::ClientRequestInfo_ptr ri + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + ACE_UNUSED_ARG(ri); +} + +void +TAO_Set_Update_Interceptor::receive_other ( + PortableInterceptor::ClientRequestInfo_ptr + ACE_ENV_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)) +{ +} + +void +TAO_Set_Update_Interceptor::receive_exception ( + PortableInterceptor::ClientRequestInfo_ptr ri + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)) +{ + ACE_UNUSED_ARG(ri); +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Set_Update_Interceptor.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Set_Update_Interceptor.h new file mode 100644 index 00000000000..45265241b33 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Set_Update_Interceptor.h @@ -0,0 +1,83 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Set_Update_Interceptor.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef TAO_SET_UPDATE_INTERCEPTOR_H +#define TAO_SET_UPDATE_INTERCEPTOR_H + +#include "tao/PortableInterceptorC.h" +#include "tao/LocalObject.h" +//#include "tao/TimeBaseC.h" +#include "ace/Atomic_Op.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +// This is to remove "inherits via dominance" warnings from MSVC. +#if defined (_MSC_VER) +# pragma warning (disable : 4250) +#endif /* _MSC_VER */ + +/** + * @class TAO_FT_ClientRequest_Interceptor + * + * @brief Interceptors for adding service context to set_update() and + * oneway_set_update() methods. + * + */ + +class TAO_Set_Update_Interceptor + : public virtual PortableInterceptor::ClientRequestInterceptor, + public virtual TAO_Local_RefCounted_Object +{ +public: + TAO_Set_Update_Interceptor (); + // ctor. + + virtual ~TAO_Set_Update_Interceptor (); + // dtor. + + virtual char * name (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + // Canonical name of the interceptor. + + virtual void destroy (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void send_poll (PortableInterceptor::ClientRequestInfo_ptr + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void send_request (PortableInterceptor::ClientRequestInfo_ptr ri + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)); + + virtual void receive_reply (PortableInterceptor::ClientRequestInfo_ptr ri + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void receive_other (PortableInterceptor::ClientRequestInfo_ptr + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)); + + virtual void receive_exception (PortableInterceptor::ClientRequestInfo_ptr ri + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException, + PortableInterceptor::ForwardRequest)); + +private: + const char *myname_; +}; + +#endif // TAO_SET_UPDATE_INTERCEPTOR_H diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Update_Manager.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Update_Manager.cpp new file mode 100644 index 00000000000..96709d233ba --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Update_Manager.cpp @@ -0,0 +1,59 @@ +// $Id$ + +#include "Update_Manager.h" + +ACE_RCSID (EventChannel, + Update_Manager, + "$Id$") + + +Update_Manager::Update_Manager(ACE_Auto_Event& evt, + int num_backups, + int transaction_depth, + bool& success) +: evt_(evt) +, replied_(num_backups) +, suicide_condition_(num_backups) +, num_backups_(num_backups) +, transaction_level_(transaction_depth) +, success_(success) +{ + suicide_condition_.flip(); + signal_condition_.resize(transaction_depth, true); + signal_condition_.resize(num_backups); +} + +Update_Manager::~Update_Manager() +{ +} + +void Update_Manager::handle_reply(int id) +{ + ACE_Guard<ACE_Thread_Mutex> guard(mutex_); + replied_[id] = true; + + if ((replied_ & signal_condition_) == signal_condition_) { + success_ = true; + evt_.signal(); + } + if (replied_ == suicide_condition_) + delete this; +} + +void Update_Manager::handle_exception(int id) +{ + ACE_Guard<ACE_Thread_Mutex> guard(mutex_); + replied_[id] = true; + ++transaction_level_; + + if (num_backups_ > transaction_level_) { + signal_condition_[transaction_level_]=true; + } + else { + success_ = false; + evt_.signal(); + } + if (replied_ == suicide_condition_) + delete this; +} + diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Update_Manager.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Update_Manager.h new file mode 100644 index 00000000000..1bb99332f38 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Update_Manager.h @@ -0,0 +1,49 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Update_Manager.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef UPDATE_MANAGER_H +#define UPDATE_MANAGER_H + +#include "ace/Synch_T.h" +#include "Dynamic_Bitset.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +typedef Dynamic_Bitset bit_vector; + + +class Update_Manager +{ +public: + Update_Manager(ACE_Auto_Event& evt, + int num_backups, + int transaction_depth, + bool& success); + ~Update_Manager(); + + void handle_reply(int id); + void handle_exception(int id); + +private: + ACE_Auto_Event& evt_; + bit_vector replied_; + bit_vector signal_condition_; + bit_vector suicide_condition_; + int num_backups_; + int transaction_level_; + bool& success_; + ACE_Thread_Mutex mutex_; +}; + +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/UpdateableHandler.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/UpdateableHandler.cpp new file mode 100644 index 00000000000..f540dee6335 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/UpdateableHandler.cpp @@ -0,0 +1,95 @@ +// $Id$ + +#include "UpdateableHandler.h" +#include "Update_Manager.h" +#include "AMI_Primary_Replication_Strategy.h" +#include "../Utils/resolve_init.h" + +ACE_RCSID (EventChannel, + UpdateableHandler, + "$Id$") + + +UpdateableHandler::UpdateableHandler(AMI_Primary_Replication_Strategy* strategy) +: strategy_(strategy) +{ +} + +UpdateableHandler::~UpdateableHandler() +{ +} + +FTRT::AMI_UpdateableHandler_ptr UpdateableHandler::activate( + Update_Manager* mgr, int id, + PortableServer::ObjectId& object_id + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + object_id.length(sizeof(mgr) + sizeof(id)); + memcpy(object_id.get_buffer(), &mgr, sizeof(mgr)); + memcpy(object_id.get_buffer() + sizeof(mgr), &id, sizeof(id)); + strategy_->poa()->activate_object_with_id(object_id, + this + ACE_ENV_ARG_PARAMETER); + CORBA::Object_var object = strategy_->poa()->id_to_reference( + object_id + ACE_ENV_ARG_PARAMETER); + + return FTRT::AMI_UpdateableHandler::_narrow(object.in() ACE_ENV_ARG_PARAMETER); +} + + + +void UpdateableHandler::dispatch(UpdateableHandler::Handler handler ACE_ENV_ARG_DECL) +{ + PortableServer::Current_var current = + resolve_init<PortableServer::Current>(strategy_->orb(), + "POACurrent" + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + PortableServer::ObjectId_var object_id = + current->get_object_id(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + Update_Manager* mgr; + int id; + + memcpy(&mgr, object_id->get_buffer(), sizeof(mgr)); + memcpy(&id, object_id->get_buffer()+sizeof(mgr), sizeof(id)); + + ACE_DEBUG((LM_DEBUG, "%d\n", id)); + + (mgr->*handler)(id); + + strategy_->poa()->deactivate_object(object_id.in()); +} + +void UpdateableHandler::set_update ( + ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )) +{ + ACE_DEBUG((LM_DEBUG,"Received reply from ")); + dispatch(&Update_Manager::handle_reply); +} +void UpdateableHandler::set_update_excep ( + FTRT::AMI_UpdateableExceptionHolder * excep_holder + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )) +{ + ACE_DEBUG((LM_DEBUG, "Received Exception from")); + ACE_TRY { + excep_holder->raise_set_update(); + } + ACE_CATCHANY { + ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, "A corba exception\n"); + } + ACE_ENDTRY; + + dispatch(&Update_Manager::handle_exception); +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/UpdateableHandler.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/UpdateableHandler.h new file mode 100644 index 00000000000..639504f0345 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/UpdateableHandler.h @@ -0,0 +1,55 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file UpdateableHandler.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef UPDATEABLEHANDLER_H +#define UPDATEABLEHANDLER_H +#include "orbsvcs/FTRTS.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class AMI_Primary_Replication_Strategy; +class Update_Manager; + +class UpdateableHandler : public POA_FTRT::AMI_UpdateableHandler +{ +public: + UpdateableHandler(AMI_Primary_Replication_Strategy* strategy); + ~UpdateableHandler(); + + FTRT::AMI_UpdateableHandler_ptr activate( + Update_Manager* mgr, int id, + PortableServer::ObjectId& oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + typedef void (Update_Manager::*Handler)(int); + + void dispatch(Handler handler ACE_ENV_ARG_DECL) ; + + virtual void set_update ( + ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )); + virtual void set_update_excep ( + FTRT::AMI_UpdateableExceptionHolder * excep_holder + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )); + +private: + AMI_Primary_Replication_Strategy* strategy_; +}; +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/create_persistent_poa.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/create_persistent_poa.cpp new file mode 100644 index 00000000000..1a837b0d343 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/create_persistent_poa.cpp @@ -0,0 +1,45 @@ +// $Id$ + +#include "create_persistent_poa.h" + +ACE_RCSID (EventChannel, + create_persistent_poa, + "$Id$") + +PortableServer::POA_var create_persistent_poa(PortableServer::POA_var root_poa, + PortableServer::POAManager_var mgr, + const char* name, + CORBA::PolicyList& policy_list + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + PortableServer::POA_var result; + PortableServer::LifespanPolicy_var lifespan = + root_poa->create_lifespan_policy(PortableServer::PERSISTENT + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + // create a USER_ID IdAssignmentPolicy object + PortableServer::IdAssignmentPolicy_var assign = + root_poa->create_id_assignment_policy(PortableServer::USER_ID + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + // create PolicyList. + size_t orig_len = policy_list.length(); + policy_list.length(orig_len+2); + ACE_CHECK; + policy_list[orig_len+0]= + PortableServer::LifespanPolicy::_duplicate(lifespan.in()); + ACE_CHECK; + policy_list[orig_len+1]= + PortableServer::IdAssignmentPolicy::_duplicate(assign.in()); + ACE_CHECK; + + // create the child POA + result = root_poa->create_POA(name, mgr.in(), policy_list + ACE_ENV_ARG_PARAMETER); + + ACE_CHECK; + + return result; +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/create_persistent_poa.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/create_persistent_poa.h new file mode 100644 index 00000000000..53ca31e052a --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/create_persistent_poa.h @@ -0,0 +1,25 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file create_persistent_poa.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= +#ifndef CREATE_PERSISTENT_POA_H +#define CREATE_PERSISTENT_POA_H +#include "tao/PortableServer/PortableServerC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +PortableServer::POA_var create_persistent_poa(PortableServer::POA_var root_poa, + PortableServer::POAManager_var mgr, + const char* name, + CORBA::PolicyList& policy_list + ACE_ENV_ARG_DECL_WITH_DEFAULTS); +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ftrtec_export.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ftrtec_export.h new file mode 100644 index 00000000000..38cb1774e84 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ftrtec_export.h @@ -0,0 +1,54 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl TAO_FTRTEC +// ------------------------------ +#ifndef TAO_FTRTEC_EXPORT_H +#define TAO_FTRTEC_EXPORT_H + +#include "ace/config-all.h" + +#if !defined (TAO_FTRTEC_HAS_DLL) +# define TAO_FTRTEC_HAS_DLL 1 +#endif /* ! TAO_FTRTEC_HAS_DLL */ + +#if defined (TAO_FTRTEC_HAS_DLL) && (TAO_FTRTEC_HAS_DLL == 1) +# if defined (TAO_FTRTEC_BUILD_DLL) +# define TAO_FTRTEC_Export ACE_Proper_Export_Flag +# define TAO_FTRTEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define TAO_FTRTEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* TAO_FTRTEC_BUILD_DLL */ +# define TAO_FTRTEC_Export ACE_Proper_Import_Flag +# define TAO_FTRTEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define TAO_FTRTEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* TAO_FTRTEC_BUILD_DLL */ +#else /* TAO_FTRTEC_HAS_DLL == 1 */ +# define TAO_FTRTEC_Export +# define TAO_FTRTEC_SINGLETON_DECLARATION(T) +# define TAO_FTRTEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* TAO_FTRTEC_HAS_DLL == 1 */ + +// Set TAO_FTRTEC_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (TAO_FTRTEC_NTRACE) +# if (ACE_NTRACE == 1) +# define TAO_FTRTEC_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define TAO_FTRTEC_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !TAO_FTRTEC_NTRACE */ + +#if (TAO_FTRTEC_NTRACE == 1) +# define TAO_FTRTEC_TRACE(X) +#else /* (TAO_FTRTEC_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define TAO_FTRTEC_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (TAO_FTRTEC_NTRACE == 1) */ + +#endif /* TAO_FTRTEC_EXPORT_H */ + +// End of auto generated file. diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/FTEC_Gateway.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/FTEC_Gateway.cpp new file mode 100644 index 00000000000..e1302565b9e --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/FTEC_Gateway.cpp @@ -0,0 +1,460 @@ +#include "FTEC_Gateway.h" +#include "activate_with_id.h" +#include "UUID.h" +#include "resolve_init.h" +#include "FtRtecEventCommS.h" + +ACE_RCSID (Utils, + FTEC_Gateway, + "$Id$") + +#if !defined(__ACE_INLINE__) +#include "FTEC_Gateway.inl" +#endif /* __ACE_INLINE__ */ + + +namespace TAO_FTRTEC { +class FTEC_Gateway_ConsumerAdmin + : public POA_RtecEventChannelAdmin::ConsumerAdmin +{ +public: + FTEC_Gateway_ConsumerAdmin(FTEC_Gateway_Impl* impl); + ~FTEC_Gateway_ConsumerAdmin(); + // = The RtecEventChannelAdmin::ConsumerAdmin methods... + virtual RtecEventChannelAdmin::ProxyPushSupplier_ptr + obtain_push_supplier (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)); + FTEC_Gateway_Impl* impl_; +}; + +class FTEC_Gateway_SupplierAdmin + : public POA_RtecEventChannelAdmin::SupplierAdmin +{ +public: + FTEC_Gateway_SupplierAdmin(FTEC_Gateway_Impl* impl); + ~FTEC_Gateway_SupplierAdmin(); + // = The RtecEventChannelAdmin::SupplierAdmin methods... + virtual RtecEventChannelAdmin::ProxyPushConsumer_ptr + obtain_push_consumer (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)); + FTEC_Gateway_Impl* impl_; +}; + +class FTEC_Gateway_ProxyPushSupplier + : public POA_RtecEventChannelAdmin::ProxyPushSupplier +{ +public: + FTEC_Gateway_ProxyPushSupplier(FTEC_Gateway_Impl* impl); + ~FTEC_Gateway_ProxyPushSupplier(); + // = The RtecEventChannelAdmin::ProxyPushSupplier methods... + virtual void connect_push_consumer ( + RtecEventComm::PushConsumer_ptr push_consumer, + const RtecEventChannelAdmin::ConsumerQOS &qos + ACE_ENV_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException, + RtecEventChannelAdmin::AlreadyConnected, + RtecEventChannelAdmin::TypeError)); + virtual void disconnect_push_supplier (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)); + virtual void suspend_connection (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)); + virtual void resume_connection (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)); + FTEC_Gateway_Impl* impl_; +}; + +class FTEC_Gateway_ProxyPushConsumer + : public POA_RtecEventChannelAdmin::ProxyPushConsumer +{ +public: + FTEC_Gateway_ProxyPushConsumer(FTEC_Gateway_Impl* impl); + ~FTEC_Gateway_ProxyPushConsumer(); + + virtual void push (const RtecEventComm::EventSet & data + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + // = The RtecEventChannelAdmin::ProxyPushConsumer methods... + virtual void connect_push_supplier ( + RtecEventComm::PushSupplier_ptr push_supplier, + const RtecEventChannelAdmin::SupplierQOS& qos + ACE_ENV_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException, + RtecEventChannelAdmin::AlreadyConnected)); + virtual void disconnect_push_consumer (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)); + + FTEC_Gateway_Impl* impl_; +}; + +class PushConsumerHandler : public POA_FtRtecEventComm::AMI_PushConsumerHandler +{ +public: + PushConsumerHandler(); + ~PushConsumerHandler(); + virtual void push () + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void push_excep (FtRtecEventComm::AMI_PushConsumerExceptionHolder * excep_holder) + ACE_THROW_SPEC ((CORBA::SystemException)); +}; + +struct FTEC_Gateway_Impl +{ + CORBA::ORB_var orb; + PortableServer::POA_var poa; + FtRtecEventChannelAdmin::EventChannel_var ftec; + RtecEventChannelAdmin::ConsumerAdmin_var consumer_admin; + RtecEventChannelAdmin::SupplierAdmin_var supplier_admin; + FTEC_Gateway_ConsumerAdmin consumer_admin_servant; + FTEC_Gateway_SupplierAdmin supplier_admin_servant; + FTEC_Gateway_ProxyPushSupplier proxy_supplier_servant; + FTEC_Gateway_ProxyPushConsumer proxy_consumer_servant; + PushConsumerHandler push_handler_servant; + FtRtecEventComm::AMI_PushConsumerHandler_var push_handler; + FTEC_Gateway_Impl(); +}; + +FTEC_Gateway_Impl::FTEC_Gateway_Impl() +: consumer_admin_servant(this), + supplier_admin_servant(this), + proxy_supplier_servant(this), + proxy_consumer_servant(this) +{ +} + +FTEC_Gateway::FTEC_Gateway(CORBA::ORB_ptr orb, FtRtecEventChannelAdmin::EventChannel_ptr ftec) +: impl_(new FTEC_Gateway_Impl) +{ + impl_->orb = CORBA::ORB::_duplicate(orb); + impl_->ftec = FtRtecEventChannelAdmin::EventChannel::_duplicate(ftec); +} + +FTEC_Gateway::~FTEC_Gateway() +{ + delete impl_; +} + +RtecEventChannelAdmin::EventChannel_ptr +FTEC_Gateway::activate(PortableServer::POA_ptr poa ACE_ENV_ARG_DECL) +{ + PortableServer::IdUniquenessPolicy_var id_uniqueness_policy = + poa->create_id_uniqueness_policy(PortableServer::MULTIPLE_ID + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + + PortableServer::LifespanPolicy_var lifespan = + poa->create_lifespan_policy(PortableServer::PERSISTENT + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + + // create a USER_ID IdAssignmentPolicy object + PortableServer::IdAssignmentPolicy_var assign = + poa->create_id_assignment_policy(PortableServer::USER_ID + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + + CORBA::PolicyList policy_list; + policy_list.length(3); + + policy_list[0] = PortableServer::IdUniquenessPolicy::_duplicate( + id_uniqueness_policy.in() ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + policy_list[1]= + PortableServer::LifespanPolicy::_duplicate(lifespan.in() ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + policy_list[2]= + PortableServer::IdAssignmentPolicy::_duplicate(assign.in() ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + + PortableServer::POAManager_var mgr = poa->the_POAManager(ACE_ENV_SINGLE_ARG_PARAMETER); + + impl_->poa = poa->create_POA("gateway_poa", mgr.in(), policy_list + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + + id_uniqueness_policy->destroy(); + lifespan->destroy(); + assign->destroy(); + + PortableServer::ObjectId oid; + oid.length(16); + UUID::create(oid.get_buffer()); + + RtecEventChannelAdmin::EventChannel_var gateway; + + activate_object_with_id(gateway.out(), impl_->poa, this, oid ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + ++oid[9]; + activate_object_with_id(impl_->consumer_admin.out(), + impl_->poa, + &impl_->consumer_admin_servant, + oid ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + ++oid[9]; + activate_object_with_id(impl_->supplier_admin.out(), + impl_->poa, + &impl_->supplier_admin_servant, + oid ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + + return gateway._retn(); +} + +//= The RtecEventChannelAdmin::EventChannel methods +RtecEventChannelAdmin::ConsumerAdmin_ptr +FTEC_Gateway::for_consumers (ACE_ENV_SINGLE_ARG_DECL) +ACE_THROW_SPEC ((CORBA::SystemException)) +{ + return RtecEventChannelAdmin::ConsumerAdmin::_duplicate(impl_->consumer_admin.in()); +} + +RtecEventChannelAdmin::SupplierAdmin_ptr +FTEC_Gateway::for_suppliers (ACE_ENV_SINGLE_ARG_DECL) +ACE_THROW_SPEC ((CORBA::SystemException)) +{ + ACE_DEBUG((LM_DEBUG, "FTEC_Gateway::for_suppliers\n")); + return RtecEventChannelAdmin::SupplierAdmin::_duplicate(impl_->supplier_admin.in()); +} + +void FTEC_Gateway::destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) +ACE_THROW_SPEC ((CORBA::SystemException)) +{ + impl_->ftec->destroy(); +} + +RtecEventChannelAdmin::Observer_Handle +FTEC_Gateway::append_observer (RtecEventChannelAdmin::Observer_ptr observer + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC (( + CORBA::SystemException, + RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR, + RtecEventChannelAdmin::EventChannel::CANT_APPEND_OBSERVER)) +{ + return impl_->ftec->append_observer(observer ACE_ENV_ARG_PARAMETER); +} + +void FTEC_Gateway::remove_observer (RtecEventChannelAdmin::Observer_Handle handle + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC (( + CORBA::SystemException, + RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR, + RtecEventChannelAdmin::EventChannel::CANT_REMOVE_OBSERVER)) +{ + impl_->ftec->remove_observer(handle ACE_ENV_ARG_PARAMETER); +} + + +/// FTEC_Gateway_ConsumerAdmin + +FTEC_Gateway_ConsumerAdmin::FTEC_Gateway_ConsumerAdmin(FTEC_Gateway_Impl* impl) +: impl_(impl) +{ +} + +FTEC_Gateway_ConsumerAdmin::~FTEC_Gateway_ConsumerAdmin() +{ +} + +RtecEventChannelAdmin::ProxyPushSupplier_ptr +FTEC_Gateway_ConsumerAdmin::obtain_push_supplier (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) +ACE_THROW_SPEC ((CORBA::SystemException)) +{ + + PortableServer::ObjectId** remote_proxy_oid_ptr; + ACE_NEW_THROW_EX(remote_proxy_oid_ptr, PortableServer::ObjectId*, CORBA::NO_MEMORY()); + + PortableServer::ObjectId local_oid; + local_oid.length(sizeof(remote_proxy_oid_ptr)); + memcpy(&local_oid[0], &remote_proxy_oid_ptr, sizeof(remote_proxy_oid_ptr)); + + RtecEventChannelAdmin::ProxyPushSupplier_ptr result; + activate_object_with_id(result, impl_->poa, + &impl_->proxy_supplier_servant, + local_oid ACE_ENV_ARG_PARAMETER); + return result; +} + +/// FTEC_Gateway_SupplierAdmin + +FTEC_Gateway_SupplierAdmin::FTEC_Gateway_SupplierAdmin(FTEC_Gateway_Impl* impl) +: impl_(impl) +{ +} + +FTEC_Gateway_SupplierAdmin::~FTEC_Gateway_SupplierAdmin() +{ +} + +// = The RtecEventChannelAdmin::SupplierAdmin methods... +RtecEventChannelAdmin::ProxyPushConsumer_ptr +FTEC_Gateway_SupplierAdmin::obtain_push_consumer (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) +ACE_THROW_SPEC ((CORBA::SystemException)) +{ + PortableServer::ObjectId** remote_proxy_oid_ptr; + ACE_NEW_THROW_EX(remote_proxy_oid_ptr, PortableServer::ObjectId*, CORBA::NO_MEMORY()); + + PortableServer::ObjectId local_oid; + local_oid.length(sizeof(remote_proxy_oid_ptr)); + memcpy(&local_oid[0], &remote_proxy_oid_ptr, sizeof(remote_proxy_oid_ptr)); + + RtecEventChannelAdmin::ProxyPushConsumer_ptr result; + activate_object_with_id(result, impl_->poa, + &impl_->proxy_consumer_servant, + local_oid ACE_ENV_ARG_PARAMETER); + return result; +} + + +PortableServer::ObjectId** +get_remote_oid_ptr(CORBA::ORB_ptr orb ACE_ENV_ARG_DECL_NOT_USED) +{ + PortableServer::Current_var current = + resolve_init<PortableServer::Current>(orb, + "POACurrent" + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + PortableServer::ObjectId_var object_id = + current->get_object_id(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + PortableServer::ObjectId** result; + memcpy(&result, &object_id[0], sizeof(PortableServer::ObjectId**)); + return result; +} + +/// FTEC_Gateway_ProxyPushSupplier + +FTEC_Gateway_ProxyPushSupplier::FTEC_Gateway_ProxyPushSupplier(FTEC_Gateway_Impl* impl) +: impl_(impl) +{ +} + +FTEC_Gateway_ProxyPushSupplier::~FTEC_Gateway_ProxyPushSupplier() +{ +} + + +// = The RtecEventChannelAdmin::ProxyPushSupplier methods... +void FTEC_Gateway_ProxyPushSupplier::connect_push_consumer ( + RtecEventComm::PushConsumer_ptr push_consumer, + const RtecEventChannelAdmin::ConsumerQOS &qos + ACE_ENV_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException, + RtecEventChannelAdmin::AlreadyConnected, + RtecEventChannelAdmin::TypeError)) +{ + + PortableServer::ObjectId** oid_ptr = get_remote_oid_ptr(impl_->orb.in() ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + *oid_ptr = impl_->ftec->connect_push_consumer(push_consumer, qos ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +void FTEC_Gateway_ProxyPushSupplier::disconnect_push_supplier (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + PortableServer::ObjectId** oid_ptr = get_remote_oid_ptr(impl_->orb.in() ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + impl_->ftec->disconnect_push_supplier(**oid_ptr ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + delete *oid_ptr; + delete oid_ptr; +} + +void FTEC_Gateway_ProxyPushSupplier::suspend_connection (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + PortableServer::ObjectId** oid_ptr = get_remote_oid_ptr(impl_->orb.in() ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + impl_->ftec->suspend_push_supplier(**oid_ptr ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +void FTEC_Gateway_ProxyPushSupplier::resume_connection (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + PortableServer::ObjectId** oid_ptr = get_remote_oid_ptr(impl_->orb.in() ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + impl_->ftec->resume_push_supplier(**oid_ptr ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +/// FTEC_Gateway_ProxyPushConsumer + +FTEC_Gateway_ProxyPushConsumer::FTEC_Gateway_ProxyPushConsumer(FTEC_Gateway_Impl* impl) +: impl_(impl) +{ +} + +FTEC_Gateway_ProxyPushConsumer::~FTEC_Gateway_ProxyPushConsumer() +{ +} + + +// = The RtecEventChannelAdmin::ProxyPushConsumer methods... + +void FTEC_Gateway_ProxyPushConsumer::push (const RtecEventComm::EventSet & data + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + PortableServer::ObjectId** oid_ptr = get_remote_oid_ptr(impl_->orb.in() ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + /* + if (CORBA::is_nil(impl_->push_handler.in())) { + impl_->push_handler = impl_->push_handler_servant._this(); + } + + impl_->ftec->sendc_push (impl_->push_handler.in(), + **oid_ptr, + data ACE_ENV_ARG_PARAMETER); + */ + impl_->ftec->push(**oid_ptr, data); + ACE_CHECK; +} + +void FTEC_Gateway_ProxyPushConsumer::connect_push_supplier ( + RtecEventComm::PushSupplier_ptr push_supplier, + const RtecEventChannelAdmin::SupplierQOS& qos + ACE_ENV_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException, + RtecEventChannelAdmin::AlreadyConnected)) +{ + PortableServer::ObjectId** oid_ptr = get_remote_oid_ptr(impl_->orb.in() ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + *oid_ptr = impl_->ftec->connect_push_supplier(push_supplier, qos ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +void FTEC_Gateway_ProxyPushConsumer::disconnect_push_consumer (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + PortableServer::ObjectId** oid_ptr = get_remote_oid_ptr(impl_->orb.in() ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + impl_->ftec->disconnect_push_consumer(**oid_ptr ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + delete *oid_ptr; + delete oid_ptr; +} + +PushConsumerHandler::PushConsumerHandler() +{ +} + +PushConsumerHandler::~PushConsumerHandler() +{ +} + +void PushConsumerHandler::push () + ACE_THROW_SPEC ((CORBA::SystemException)) +{ +} + +void PushConsumerHandler::push_excep (FtRtecEventComm::AMI_PushConsumerExceptionHolder * excep_holder) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + ACE_UNUSED_ARG(excep_holder); +} +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/FTEC_Gateway.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/FTEC_Gateway.h new file mode 100644 index 00000000000..27c7b3f4fd8 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/FTEC_Gateway.h @@ -0,0 +1,73 @@ +// -*- C++ -*- +//============================================================================= +/** + * @file FTEC_Gateway.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= +#ifndef FTEC_GATEWAY_H +#define FTEC_GATEWAY_H + +#include "ace/pre.h" + +#include "orbsvcs/FtRtecEventChannelAdminC.h" +#include "orbsvcs/RtecEventChannelAdminS.h" + +namespace TAO_FTRTEC +{ + struct FTEC_Gateway_Impl; + class TAO_FtRtEvent_Export FTEC_Gateway : + public POA_RtecEventChannelAdmin::EventChannel + { + public: + FTEC_Gateway(CORBA::ORB_ptr orb, + FtRtecEventChannelAdmin::EventChannel_ptr ftec); + ~FTEC_Gateway(); + + RtecEventChannelAdmin::EventChannel_ptr activate + (PortableServer::POA_ptr poa + ACE_ENV_ARG_DECL); + + RtecEventChannelAdmin::EventChannel_ptr + _this(ACE_ENV_SINGLE_ARG_DECL); + + //= The RtecEventChannelAdmin::EventChannel methods + virtual RtecEventChannelAdmin::ConsumerAdmin_ptr + for_consumers (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC((CORBA::SystemException)); + + virtual RtecEventChannelAdmin::SupplierAdmin_ptr + for_suppliers (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC((CORBA::SystemException)); + + virtual void destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + ACE_THROW_SPEC((CORBA::SystemException)); + + virtual RtecEventChannelAdmin::Observer_Handle + append_observer + (RtecEventChannelAdmin::Observer_ptr observer + ACE_ENV_ARG_DECL) ACE_THROW_SPEC(( + CORBA::SystemException, + RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR, + RtecEventChannelAdmin::EventChannel::CANT_APPEND_OBSERVER)); + + virtual void remove_observer + (RtecEventChannelAdmin::Observer_Handle + ACE_ENV_ARG_DECL) ACE_THROW_SPEC(( + CORBA::SystemException, + RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR, + RtecEventChannelAdmin::EventChannel::CANT_REMOVE_OBSERVER)); + private: + struct FTEC_Gateway_Impl *impl_; + }; +} + +#if defined(__ACE_INLINE__) +#include "FTEC_Gateway.inl" +#endif /* __ACE_INLINE__ */ + +#include "ace/post.h" +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/FTEC_Gateway.inl b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/FTEC_Gateway.inl new file mode 100644 index 00000000000..9ea4dcc4a43 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/FTEC_Gateway.inl @@ -0,0 +1,10 @@ +// $Id : $ + +namespace TAO_FTRTEC { + ACE_INLINE RtecEventChannelAdmin::EventChannel_ptr + FTEC_Gateway::_this(ACE_ENV_SINGLE_ARG_DECL) + { + PortableServer::POA_var poa = _default_POA(); + return activate(poa.in()); + } +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/ScopeGuard.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/ScopeGuard.h new file mode 100644 index 00000000000..47a187bc3b4 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/ScopeGuard.h @@ -0,0 +1,296 @@ +// -*- C++ -*- +//============================================================================= +/** + * @file ScopeGuard.h + * + * $Id$ + * + * @brief This is the code published at + * http://www.cuj.com/documents/s=8000/cujcexp1812alexandr/alexandr.htm + */ +//============================================================================= + +#ifndef SCOPEGUARD_H_ +#define SCOPEGUARD_H_ + +template <class T> +class RefHolder +{ + T& ref_; +public: + RefHolder(T& ref) : ref_(ref) {} + operator T& () const + { + return ref_; + } +private: + // Disable assignment - not implemented + RefHolder& operator=(const RefHolder&); +}; + +template <class T> +inline RefHolder<T> ByRef(T& t) +{ + return RefHolder<T>(t); +} + +class ScopeGuardImplBase +{ + ScopeGuardImplBase& operator =(const ScopeGuardImplBase&); +protected: + ~ScopeGuardImplBase() + { + } + ScopeGuardImplBase(const ScopeGuardImplBase& other) throw() + : dismissed_(other.dismissed_) + { + other.Dismiss(); + } + template <typename J> + static void SafeExecute(J& j) throw() + { + if (!j.dismissed_) + try + { + j.Execute(); + } + catch(...) + { + } + } + + mutable bool dismissed_; +public: + ScopeGuardImplBase() throw() : dismissed_(false) + { + } + void Dismiss() const throw() + { + dismissed_ = true; + } +}; + +typedef const ScopeGuardImplBase& ScopeGuard; + +template <typename F> +class ScopeGuardImpl0 : public ScopeGuardImplBase +{ +public: + static ScopeGuardImpl0<F> MakeGuard(F fun) + { + return ScopeGuardImpl0<F>(fun); + } + ~ScopeGuardImpl0() throw() + { + SafeExecute(*this); + } + void Execute() + { + fun_(); + } +protected: + ScopeGuardImpl0(F fun) : fun_(fun) + { + } + F fun_; +}; + +template <typename F> +inline ScopeGuardImpl0<F> MakeGuard(F fun) +{ + return ScopeGuardImpl0<F>::MakeGuard(fun); +} + +template <typename F, typename P1> +class ScopeGuardImpl1 : public ScopeGuardImplBase +{ +public: + static ScopeGuardImpl1<F, P1> MakeGuard(F fun, P1 p1) + { + return ScopeGuardImpl1<F, P1>(fun, p1); + } + ~ScopeGuardImpl1() throw() + { + SafeExecute(*this); + } + void Execute() + { + fun_(p1_); + } +protected: + ScopeGuardImpl1(F fun, P1 p1) : fun_(fun), p1_(p1) + { + } + F fun_; + const P1 p1_; +}; + +template <typename F, typename P1> +inline ScopeGuardImpl1<F, P1> MakeGuard(F fun, P1 p1) +{ + return ScopeGuardImpl1<F, P1>::MakeGuard(fun, p1); +} + +template <typename F, typename P1, typename P2> +class ScopeGuardImpl2: public ScopeGuardImplBase +{ +public: + static ScopeGuardImpl2<F, P1, P2> MakeGuard(F fun, P1 p1, P2 p2) + { + return ScopeGuardImpl2<F, P1, P2>(fun, p1, p2); + } + ~ScopeGuardImpl2() throw() + { + SafeExecute(*this); + } + void Execute() + { + fun_(p1_, p2_); + } +protected: + ScopeGuardImpl2(F fun, P1 p1, P2 p2) : fun_(fun), p1_(p1), p2_(p2) + { + } + F fun_; + const P1 p1_; + const P2 p2_; +}; + +template <typename F, typename P1, typename P2> +inline ScopeGuardImpl2<F, P1, P2> MakeGuard(F fun, P1 p1, P2 p2) +{ + return ScopeGuardImpl2<F, P1, P2>::MakeGuard(fun, p1, p2); +} + +template <typename F, typename P1, typename P2, typename P3> +class ScopeGuardImpl3 : public ScopeGuardImplBase +{ +public: + static ScopeGuardImpl3<F, P1, P2, P3> MakeGuard(F fun, P1 p1, P2 p2, P3 p3) + { + return ScopeGuardImpl3<F, P1, P2, P3>(fun, p1, p2, p3); + } + ~ScopeGuardImpl3() throw() + { + SafeExecute(*this); + } + void Execute() + { + fun_(p1_, p2_, p3_); + } +protected: + ScopeGuardImpl3(F fun, P1 p1, P2 p2, P3 p3) : fun_(fun), p1_(p1), p2_(p2), p3_(p3) + { + } + F fun_; + const P1 p1_; + const P2 p2_; + const P3 p3_; +}; + +template <typename F, typename P1, typename P2, typename P3> +inline ScopeGuardImpl3<F, P1, P2, P3> MakeGuard(F fun, P1 p1, P2 p2, P3 p3) +{ + return ScopeGuardImpl3<F, P1, P2, P3>::MakeGuard(fun, p1, p2, p3); +} + +//************************************************************ + +template <class Obj, typename MemFun> +class ObjScopeGuardImpl0 : public ScopeGuardImplBase +{ +public: + static ObjScopeGuardImpl0<Obj, MemFun> MakeObjGuard(Obj& obj, MemFun memFun) + { + return ObjScopeGuardImpl0<Obj, MemFun>(obj, memFun); + } + ~ObjScopeGuardImpl0() throw() + { + SafeExecute(*this); + } + void Execute() + { + (obj_.*memFun_)(); + } +protected: + ObjScopeGuardImpl0(Obj& obj, MemFun memFun) + : obj_(obj), memFun_(memFun) {} + Obj& obj_; + MemFun memFun_; +}; + +template <class Obj, typename MemFun> +inline ObjScopeGuardImpl0<Obj, MemFun> MakeObjGuard(Obj& obj, MemFun memFun) +{ + return ObjScopeGuardImpl0<Obj, MemFun>::MakeObjGuard(obj, memFun); +} + +template <class Obj, typename MemFun, typename P1> +class ObjScopeGuardImpl1 : public ScopeGuardImplBase +{ +public: + static ObjScopeGuardImpl1<Obj, MemFun, P1> MakeObjGuard(Obj& obj, MemFun memFun, P1 p1) + { + return ObjScopeGuardImpl1<Obj, MemFun, P1>(obj, memFun, p1); + } + ~ObjScopeGuardImpl1() throw() + { + SafeExecute(*this); + } + void Execute() + { + (obj_.*memFun_)(p1_); + } +protected: + ObjScopeGuardImpl1(Obj& obj, MemFun memFun, P1 p1) + : obj_(obj), memFun_(memFun), p1_(p1) {} + Obj& obj_; + MemFun memFun_; + const P1 p1_; +}; + +template <class Obj, typename MemFun, typename P1> +inline ObjScopeGuardImpl1<Obj, MemFun, P1> MakeObjGuard(Obj& obj, MemFun memFun, P1 p1) +{ + return ObjScopeGuardImpl1<Obj, MemFun, P1>::MakeObjGuard(obj, memFun, p1); +} + +template <class Obj, typename MemFun, typename P1, typename P2> +class ObjScopeGuardImpl2 : public ScopeGuardImplBase +{ +public: + static ObjScopeGuardImpl2<Obj, MemFun, P1, P2> MakeObjGuard(Obj& obj, MemFun memFun, P1 p1, P2 p2) + { + return ObjScopeGuardImpl2<Obj, MemFun, P1, P2>(obj, memFun, p1, p2); + } + ~ObjScopeGuardImpl2() throw() + { + SafeExecute(*this); + } + void Execute() + { + (obj_.*memFun_)(p1_, p2_); + } +protected: + ObjScopeGuardImpl2(Obj& obj, MemFun memFun, P1 p1, P2 p2) + : obj_(obj), memFun_(memFun), p1_(p1), p2_(p2) {} + Obj& obj_; + MemFun memFun_; + const P1 p1_; + const P2 p2_; +}; + +template <class Obj, typename MemFun, typename P1, typename P2> +inline ObjScopeGuardImpl2<Obj, MemFun, P1, P2> MakeObjGuard(Obj& obj, MemFun memFun, P1 p1, P2 p2) +{ + return ObjScopeGuardImpl2<Obj, MemFun, P1, P2>::MakeObjGuard(obj, memFun, p1, p2); +} + +#define CONCATENATE_DIRECT(s1, s2) s1##s2 +#define CONCATENATE(s1, s2) CONCATENATE_DIRECT(s1, s2) +#define ANONYMOUS_VARIABLE(str) CONCATENATE(str, __LINE__) + +#define ON_BLOCK_EXIT ScopeGuard ANONYMOUS_VARIABLE(scopeGuard) = MakeGuard +#define ON_BLOCK_EXIT_OBJ ScopeGuard ANONYMOUS_VARIABLE(scopeGuard) = MakeObjGuard + +#endif //SCOPEGUARD_H_ diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/UUID.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/UUID.cpp new file mode 100644 index 00000000000..ee80e9d837a --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/UUID.cpp @@ -0,0 +1,172 @@ +//$Id$ +#include "UUID.h" + +ACE_RCSID (Utils, + UUID, + "$Id$") +#if !defined(__ACE_INLINE__) +#include "UUID.inl" +#endif /* __ACE_INLINE__ */ + +static union +{ + struct + { + ACE_UINT32 rand1; + ACE_UINT16 rand2; + } rand_node; + ACE_OS::macaddr_node_t mac_address; +} node; + +int +hex_to_byte (char h) +{ + if (h >= '0' && h <= '9') return h - '0'; + if (h >= 'A' && h <= 'F') return h - 'A' + 10; + if (h >= 'a' && h <= 'f') return h - 'a' + 10; + return -1; +} + +int +hexbyte_to_byte (const char *hexbyte) +{ + int hi = hex_to_byte(*hexbyte); + if (hi == -1) return -1; + ++hexbyte; + + int low = hex_to_byte(*hexbyte); + if (low == -1) return -1; + return (hi << 4) | low; +} + +static const int counts[] = { 4, 2, 2, 2, 6 }; +static const char *seperators = "----"; + +/** + * construct an UUID from the string representation + */ +UUID::UUID (const char *string_rep) +{ + if (this->from_string(string_rep) == false) + rep_.timestamp.hi = 0; +} + +bool +UUID::from_string (const char *string_rep) +{ + int offset = 0; + + for (int i = 0; i < 5; ++i) + { + for (int j = 0; j < counts[i]; ++j) + { + int r = hexbyte_to_byte(string_rep); + if (r == -1) + { + return false; + } + + rep_.uuid[offset++] = static_cast<unsigned char>(r); + string_rep += 2; + } + + if (*string_rep++ != seperators[i]) + { + return false; + } + } + + return true; +} + +inline char * +bytes_to_hex (const unsigned char *bytes, + char *dest, + int len) +{ + static const char *table = "0123456789abcdef"; + for (int i = 0; i < len; ++i) + { + *dest++ = table[bytes[i] >> 4]; + *dest++ = table[bytes[i] & 0x0f]; + } + + return dest; +} + +/** + * convert to a string representation + */ +void +UUID::to_string (char *string_rep) const +{ + for (int i = 0; i < 5; ++i) + { + string_rep = bytes_to_hex(rep_.uuid, + string_rep, + counts[i]); + *string_rep++ = seperators[i]; + } +} + +void +UUID::create (unsigned char *buffer) +{ + static ACE_RANDR_TYPE seed; + + if (seed == 0) seed = ACE_OS::getpid(); + + // test if node is properly initialized + if (node.rand_node.rand1 == 0) + { + // initialize the node + if (ACE_OS::getmacaddress(&node.mac_address) == -1) + { + node.rand_node.rand1 = ACE_OS::rand_r(seed); + node.rand_node.rand2 = (unsigned short) ACE_OS::rand_r(seed); + } + } + + // Days in years + static ACE_UINT64 SecondsToJan1970 = + (static_cast<ACE_UINT64>(365)*(1970-1583) // Days in years + + (1970-1583)/4 // Leap days + - 3 // Allow for 1700, 1800, 1900 not leap years + + 31 // Days in December 1583 + + 30 // Days in November 1583 + + 16)*60*60*24; // Days from 15th October + + + ACE_Time_Value now = ACE_OS::gettimeofday(); + ACE_UINT64 timestamp = + ( + SecondsToJan1970 + + now.sec() + ) * + 10000000 + + now.usec() * + 10 + + // multiplex timestamp with thread id to ensure the uniqueness between thread + + + static_cast<ACE_UINT16>(ACE_OS::thr_self()); + + buffer[0] = (unsigned char) (timestamp & 0xff); + buffer[1] = (unsigned char) ((timestamp >> 8) & 0xff); + buffer[2] = (unsigned char) ((timestamp >> 16) & 0xff); + buffer[3] = (unsigned char) ((timestamp >> 24) & 0xff); + buffer[4] = (unsigned char) ((timestamp >> 32) & 0xff); + buffer[5] = (unsigned char) ((timestamp >> 40) & 0xff); + buffer[6] = (unsigned char) ((timestamp >> 48) & 0xff); + + // Version number is 1 + buffer[7] = (unsigned char) (((timestamp >> 56) & 0x0f) + 0x10); + + ACE_UINT16 clockSequence = static_cast< + ACE_UINT16>(ACE_OS::rand_r(seed) & 0x2ff); + + buffer[8] = (unsigned char) ((clockSequence >> 8) & 0x1f); + buffer[9] = (unsigned char) (clockSequence & 0x1f); + + memcpy(buffer + 10, &node, 6); +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/UUID.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/UUID.h new file mode 100644 index 00000000000..856d996532a --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/UUID.h @@ -0,0 +1,118 @@ +// -*- C++ -*- +//============================================================================= +/** + * @file UUID.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= +#ifndef UUID_H +#define UUID_H +#include "ace/pre.h" + +#include "ftrtevent_export.h" +#include "ace/OS.h" +#include "ace/SString.h" + +#if defined(TAO_EXPORT_MACRO) +#undef TAO_EXPORT_MACRO +#endif +#define TAO_EXPORT_MACRO FtRtEvent_Export + +#if defined(TAO_EXPORT_NESTED_CLASSES) +#if defined(TAO_EXPORT_NESTED_MACRO) +#undef TAO_EXPORT_NESTED_MACRO +#endif /* defined (TAO_EXPORT_NESTED_MACRO) */ +#define TAO_EXPORT_NESTED_MACRO FtRtEvent_Export +#endif /* TAO_EXPORT_NESTED_CLASSES */ + +/** + * This is an implementation of Global Unique Identifier + * which follows the document draft-leach-uuids-guids-01.txt. The + * class layout is compatible with the binary representation of + * UUID specified by that document. The default constructor + * is used to create an new global unique id, not a NULL UUID. + * This class does not use dynamic memory allocation and does + * not throw any exception except to_string(ACE_CString&). + */ +class TAO_FtRtEvent_Export UUID +{ + public: + enum + { + BINRARY_LENGTH= 16, + + // the required length for the string representation including the termination '\0' + STRING_LENGTH = 37 + }; + + /* Construct an Global Unique Identifier. */ + UUID(void); + + /* This is used to create an uninitialized UUID. */ + UUID(int); + + /* + * Construct an UUID from the binary represetation. If you want to avoid a memory + * copy operation for this constructor. You can safely reinterpret_cast the 16 + * bytes buffer into the UUID object and use all the member functions provided in + * this class except is_valid() which is only useful if a UUID object is + * constructed from the string representation. + */ + UUID(const unsigned char *buffer); + + /* + * Construct an UUID from the string representation. Use is_valid() to test if the + * construction is successful or not. + */ + UUID(const char *); + + /* Construct an uuid from the string representation. */ + bool from_string(const char *string_rep); + + bool operator==(const UUID &other) const; + bool operator!=(const UUID &other) const; + + /* + * Test if the UUID is valid. Used after constructing an UUID from an string + * representation. This is done by testing whether the time_hi and time_mid fields + * of the timestamp are 0. By current time, those two field shouldn't be 0 at all. + */ + bool is_valid(void) const; + + /* + * convert to a string representation the buffer size provided must be at least + * STRING_LENGTH + */ + void to_string(char *string_rep) const; + + void to_string(ACE_CString &string) const; + + /* + * convert to a string representation the buffer size provided must be at least + * BINRARY_LENGTH + */ + void to_binary(unsigned char *binary_rep) const; + + /* create an UUID in the specified buffer */ + static void create(unsigned char *buffer); + private: + union + { + struct + { + ACE_UINT32 low; + ACE_UINT32 hi; + } timestamp; + unsigned char uuid[BINRARY_LENGTH]; + } rep_; +}; + +#if defined(__ACE_INLINE__) +#include "UUID.inl" +#endif /* __ACE_INLINE__ */ + +#include "ace/post.h" +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/UUID.inl b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/UUID.inl new file mode 100644 index 00000000000..3093cf873dd --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/UUID.inl @@ -0,0 +1,52 @@ +// $Id$ + +ACE_INLINE +UUID::UUID() +{ + create(rep_.uuid); +} + +ACE_INLINE +UUID::UUID(int) +{ +} + +/// construct an UUID from the binary represetation +ACE_INLINE +UUID::UUID(const unsigned char* id) +{ + memcpy(rep_.uuid, id, 16); +} + +ACE_INLINE +bool UUID::operator == (const UUID& other) const +{ + return memcmp(this->rep_.uuid, other.rep_.uuid, BINRARY_LENGTH) == 0; +} + +ACE_INLINE +bool UUID::operator != (const UUID& other) const +{ + return !(*this == other); +} + + +ACE_INLINE +bool UUID::is_valid() const +{ + return !this->rep_.timestamp.hi; +} + + +ACE_INLINE +void UUID::to_binary(unsigned char* binary_rep) const +{ + memcpy(binary_rep, rep_.uuid, 16); +} + +ACE_INLINE +void UUID::to_string(ACE_CString& string) const +{ + string.resize(STRING_LENGTH-1); + this->to_string(&string[0]); +} diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/activate_with_id.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/activate_with_id.h new file mode 100644 index 00000000000..7a80a82a28b --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/activate_with_id.h @@ -0,0 +1,33 @@ +// -*- C++ -*- +//============================================================================= +/** + * @file activate_with_id.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= +#ifndef ACTIVATE_WITH_ID_H +#define ACTIVATE_WITH_ID_H + +template<class T> +void +activate_object_with_id (T * &result, + PortableServer::POA_var poa, + PortableServer::ServantBase *servant, + const PortableServer::ObjectId &oid + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + poa->activate_object_with_id(oid, + servant ACE_ENV_ARG_PARAMETER); + + ACE_CHECK_RETURN(T::_nil()); + + CORBA::Object_var object = poa-> + id_to_reference(oid ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(T::_nil()); + + result = T::_narrow(object.in() ACE_ENV_ARG_PARAMETER); +} +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/ftrtevent_export.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/ftrtevent_export.h new file mode 100644 index 00000000000..03c2575ce12 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/ftrtevent_export.h @@ -0,0 +1,67 @@ + + // -*- C++ -*- + +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl TAO_FtRtEvent +// ------------------------------ +#ifndef TAO_FTRTEVENT_EXPORT_H +#define TAO_FTRTEVENT_EXPORT_H + +#include "ace/config-all.h" + +#if !defined(TAO_FTRTEVENT_HAS_DLL) +#define TAO_FTRTEVENT_HAS_DLL 1 +#endif /* ! TAO_FTRTEVENT_HAS_DLL */ + +#if defined(TAO_FTRTEVENT_HAS_DLL) \ +&& (TAO_FTRTEVENT_HAS_DLL == 1) +#if defined(TAO_FTRTEVENT_BUILD_DLL) +#define TAO_FtRtEvent_Export \ + ACE_Proper_Export_Flag +#define TAO_FTRTEVENT_SINGLETON_DECLARATION (T) ACE_EXPORT_SINGLETON_DECLARATION(T) +#define TAO_FTRTEVENT_SINGLETON_DECLARE (SINGLETON_TYPE, \ + CLASS, \ + LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, \ + CLASS, \ + LOCK) +#else /* TAO_FTRTEVENT_BUILD_DLL */ +#define TAO_FtRtEvent_Export \ + ACE_Proper_Import_Flag +#define TAO_FTRTEVENT_SINGLETON_DECLARATION (T) ACE_IMPORT_SINGLETON_DECLARATION(T) +#define TAO_FTRTEVENT_SINGLETON_DECLARE (SINGLETON_TYPE, \ + CLASS, \ + LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, \ + CLASS, \ + LOCK) +#endif /* TAO_FTRTEVENT_BUILD_DLL */ +#else /* TAO_FTRTEVENT_HAS_DLL == 1 */ +#define TAO_FtRtEvent_Export +#define TAO_FTRTEVENT_SINGLETON_DECLARATION(T) +#define TAO_FTRTEVENT_SINGLETON_DECLARE (SINGLETON_TYPE, \ + CLASS, \ + LOCK) +#endif /* TAO_FTRTEVENT_HAS_DLL == 1 */ + +// Set TAO_FTRTEVENT_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined(TAO_FTRTEVENT_NTRACE) +#if (ACE_NTRACE == 1) +#define TAO_FTRTEVENT_NTRACE 1 +#else /* (ACE_NTRACE == 1) */ +#define TAO_FTRTEVENT_NTRACE 0 +#endif /* (ACE_NTRACE == 1) */ +#endif /* !TAO_FTRTEVENT_NTRACE */ + +#if (TAO_FTRTEVENT_NTRACE == 1) +#define TAO_FTRTEVENT_TRACE(X) +#else /* (TAO_FTRTEVENT_NTRACE == 1) */ +#if !defined(ACE_HAS_TRACE) +#define ACE_HAS_TRACE +#endif /* ACE_HAS_TRACE */ +#define TAO_FTRTEVENT_TRACE(X) ACE_TRACE_IMPL(X) +#include "ace/Trace.h" +#endif /* (TAO_FTRTEVENT_NTRACE == 1) */ +#endif /* TAO_FTRTEVENT_EXPORT_H */ + +// End of auto generated file. diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/resolve_init.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/resolve_init.h new file mode 100644 index 00000000000..0cefc3da7e9 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/resolve_init.h @@ -0,0 +1,66 @@ +// -*- C++ -*- +//============================================================================= +/** + * @file resolve_init.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= +#ifndef RESOVLE_INIT_H +#define RESOVLE_INIT_H + +template<class T> +typename T::_ptr_type +resolve_init (CORBA::ORB_ptr orb, + const char *id ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + typename T::_var_type ref; + CORBA::Object_var obj; + ACE_TRY + { + CORBA::Object_var obj; + obj = orb->resolve_initial_references(id ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + ref = T::_narrow(obj.in() ACE_ENV_ARG_PARAMETER); + } + + ACE_CATCHANY + { + ACE_ERROR(( + LM_ERROR, + " (%P|%t) Unable to initialize %s.\n", + id + )); + if (!CORBA::is_nil(obj.in())) + ACE_ERROR(( + LM_ERROR, + " due to narrowing problem\n" + )); + ACE_RE_THROW; + } + + ACE_ENDTRY; + return ref._retn(); +} + +#ifdef TAO_Naming_Export +template<class T> +typename T::_ptr_type +resolve (CosNaming::NamingContext_ptr context, + const CosNaming::Name &id + ACE_ENV_ARG_DECL_WITH_DEFAULTS) +{ + CORBA::Object_var obj; + obj = context->resolve(id ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(T::_nil()); + + ACE_ASSERT(!CORBA::is_nil(obj.in())); + + typename T::_var_type ref = T::_narrow(obj.in() ACE_ENV_ARG_PARAMETER); + return ref._retn(); +} +#endif +#endif diff --git a/TAO/orbsvcs/orbsvcs/FtRtecEventChannelAdmin.idl b/TAO/orbsvcs/orbsvcs/FtRtecEventChannelAdmin.idl new file mode 100644 index 00000000000..866640ef114 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtecEventChannelAdmin.idl @@ -0,0 +1,194 @@ +// -*- IDL -*- + +//============================================================================= +/** + * @file FtRtecEventChannelAdmin.idl + * + * $Id$ + * + * @author Huang-Ming Huang + */ +//============================================================================= + +#ifndef TAO_FTRTEC_EVENTCHANNELADMIN_IDL +#define TAO_FTRTEC_EVENTCHANNELADMIN_IDL + +#include "orbsvcs/RtecEventChannelAdmin.idl" +#include "FTRT.idl" +#include "FTRT_GroupManager.idl" +#include "FtRtecEventComm.idl" + +module FtRtecEventChannelAdmin +{ + typedef FtRtecEventComm::ObjectId ObjectId; + + struct ProxyPushConsumerConnectionInfo + { + RtecEventComm::PushSupplier push_supplier; + RtecEventChannelAdmin::SupplierQOS qos; + }; + + union ProxyPushConsumerConnectionParamter switch (boolean) + { + case FALSE: + case TRUE: + ProxyPushConsumerConnectionInfo info; + }; + + struct ProxyPushConsumerStat + { + ObjectId object_id; + ProxyPushConsumerConnectionParamter parameter; + }; + + + struct ProxyPushSupplierConnectionInfo + { + RtecEventComm::PushConsumer push_consumer; + RtecEventChannelAdmin::ConsumerQOS qos; + }; + + union ProxyPushSupplierConnectionParamter switch (boolean) + { + case FALSE: + case TRUE: + ProxyPushSupplierConnectionInfo info; + }; + + struct ProxyPushSupplierStat + { + ObjectId object_id; + boolean suspended; + ProxyPushSupplierConnectionParamter parameter; + }; + + typedef sequence<ProxyPushConsumerStat> ProxyConsumerStates; + typedef sequence<ProxyPushSupplierStat> ProxySupplierStates; + + struct ConsumerAdminState + { + ProxySupplierStates proxies; + }; + + struct SupplierAdminState + { + ProxyConsumerStates proxies; + }; + + struct CachedResult + { + long retention_id; + any result; + }; + + + struct CacheEntry + { + string client_id; + CachedResult cached_result; + }; + + typedef sequence<CacheEntry> CachedOptionResults; + + struct EventChannelState + { + CachedOptionResults cached_operation_results; + SupplierAdminState supplier_admin_state; + ConsumerAdminState consumer_admin_state; + }; + + struct Connect_push_consumer_param + { + RtecEventComm::PushConsumer push_consumer; + RtecEventChannelAdmin::ConsumerQOS qos; + }; + + struct Connect_push_supplier_param + { + RtecEventComm::PushSupplier push_supplier; + RtecEventChannelAdmin::SupplierQOS qos; + }; + + enum OperationType { + OBTAIN_PUSH_SUPPLIER, + OBTAIN_PUSH_CONSUMER, + DISCONNECT_PUSH_SUPPLIER, + DISCONNECT_PUSH_CONSUMER, + SUSPEND_CONNECTION, + RESUME_CONNECTION, + CONNECT_PUSH_SUPPLIER, + CONNECT_PUSH_CONSUMER + }; + + union OperationParam switch(OperationType) { + case CONNECT_PUSH_SUPPLIER: + Connect_push_supplier_param connect_supplier_param; + case CONNECT_PUSH_CONSUMER: + Connect_push_consumer_param connect_consumer_param; + }; + + + struct Operation { + ObjectId object_id; + OperationParam param; + }; + + interface EventChannelFacade : FtRtecEventComm::PushConsumer { + /** + * Directly connect to push consumer. This method is + * equivalent to the effect of executing the following + * 3 methods. + * + * consumer_admin = ec->for_consumers(); + * proxy_supplier = consumer_admin->obtain_push_supplier(); + * proxy_supplier->connect_push_consumer(push_consumer, + * qos); + * + * @returns the ObjectId of proxy_push_supplier + */ + ObjectId connect_push_consumer( + in RtecEventComm::PushConsumer push_consumer, + in RtecEventChannelAdmin::ConsumerQOS qos) + raises(RtecEventChannelAdmin::TypeError); + + /** + * Directly connect to push supplier. This method is + * equivalent to the effect of executing the following + * 3 methods. + * + * supplier_admin = ec->for_suppliers(); + * push_consumer = supplier_admin->obtain_push_supplier(); + * push_consumer->connect_push_consumer(proxy_supplier, + * qos); + * + * @returns the ObjectId of proxy_push_consumer + */ + ObjectId connect_push_supplier( + in RtecEventComm::PushSupplier push_supplier, + in RtecEventChannelAdmin::SupplierQOS qos); + + void disconnect_push_supplier(in ObjectId oid) + raises(FtRtecEventComm::InvalidObjectID); + void disconnect_push_consumer(in ObjectId oid) + raises(FtRtecEventComm::InvalidObjectID); + void suspend_push_supplier(in ObjectId oid) + raises(FtRtecEventComm::InvalidObjectID); + void resume_push_supplier(in ObjectId oid) + raises(FtRtecEventComm::InvalidObjectID); + }; + + exception InvalidState{}; + + interface EventChannel : RtecEventChannelAdmin::EventChannel + , EventChannelFacade + , FTRT::Updateable + , FTRT::ObjectGroupManager + { + }; + + typedef sequence<EventChannel> EventChannelList; + +}; + +#endif + diff --git a/TAO/orbsvcs/orbsvcs/FtRtecEventComm.idl b/TAO/orbsvcs/orbsvcs/FtRtecEventComm.idl new file mode 100644 index 00000000000..d722141fb03 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtecEventComm.idl @@ -0,0 +1,33 @@ +// -*- IDL -*- + +//============================================================================= +/** + * @file FtRtEventComm.idl + * + * $Id$ + * + * @author Huang-Ming Huang + */ +//============================================================================= + +#ifndef FTRTECEVNETCOMM_H +#define FTRTECEVNETCOMM_H + +#include "OctetSeq.pidl" +#include "orbsvcs/RtecEventComm.idl" + +module FtRtecEventComm { + + typedef CORBA::OctetSeq ObjectId; + + exception InvalidObjectID { + }; + + interface PushConsumer { + void push(in ObjectId oid, in RtecEventComm::EventSet data) + raises(InvalidObjectID); + }; + +}; + +#endif diff --git a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_CPU_Monitor.cpp b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_CPU_Monitor.cpp index 6e373d47fa4..32e3cbf1e52 100644 --- a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_CPU_Monitor.cpp +++ b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_CPU_Monitor.cpp @@ -42,9 +42,10 @@ TAO_LB_CPU_Monitor::TAO_LB_CPU_Monitor (const char * location_id, else { this->location_[0].id = CORBA::string_dup (location_id); - - if (location_kind != 0) - this->location_[0].kind = CORBA::string_dup (location_kind); + this->location_[0].kind = + (location_kind == 0 + ? CORBA::string_dup ("User Specified") + : CORBA::string_dup (location_kind)); } } @@ -129,7 +130,11 @@ TAO_LB_CPU_Monitor::loads (ACE_ENV_SINGLE_ARG_DECL) # else +# if defined (ACE_HAS_SYS_LOADAVG_H) const int samples = ::getloadavg (loadavg, 1); +# else + const int samples = 0; +# endif /* ACE_HAS_SYS_LOADAVG_H */ # endif /* linux && ((__GLIBC__ == 2 && __GLIBC_MINOR__ < 2) diff --git a/TAO/orbsvcs/orbsvcs/Makefile b/TAO/orbsvcs/orbsvcs/Makefile index 9464da34798..0995a110611 100644 --- a/TAO/orbsvcs/orbsvcs/Makefile +++ b/TAO/orbsvcs/orbsvcs/Makefile @@ -83,8 +83,6 @@ ifndef TAO_ORBSVCS TAO_ORBSVCS += ImplRepo - TAO_ORBSVCS += RTCosScheduling - endif # minimum_corba ifeq ($(ssl),1) @@ -165,11 +163,6 @@ ifneq (,$(findstring RTKokyuEvent, $(TAO_ORBSVCS))) MKLIST += Makefile.RTKokyuEvent endif endif -ifneq (,$(findstring RTCosScheduling, $(TAO_ORBSVCS))) - ifeq (,$(findstring Makefile.RTCosScheduling, $(MKLIST))) - MKLIST += Makefile.RTCosScheduling - endif -endif ifneq (,$(findstring RTCORBAEvent, $(TAO_ORBSVCS))) ifeq (,$(findstring Makefile.RTCORBAEvent, $(MKLIST))) MKLIST += Makefile.RTCORBAEvent diff --git a/TAO/orbsvcs/orbsvcs/Makefile.RTCosScheduling b/TAO/orbsvcs/orbsvcs/Makefile.RTCosScheduling deleted file mode 100644 index 556719e798a..00000000000 --- a/TAO/orbsvcs/orbsvcs/Makefile.RTCosScheduling +++ /dev/null @@ -1,193 +0,0 @@ -#---------------------------------------------------------------------------- -# GNU Makefile -# -# @file Makefile.RTCosScheduling -# -# $Id$ -# -# This file was automatically generated by MPC. Any changes made directly to -# this file will be lost the next time it is generated. -# -#---------------------------------------------------------------------------- -MAKEFILE = Makefile.RTCosScheduling -DEPENDENCY_FILE = .depend.Makefile.RTCosScheduling -LIB = libTAO_RTCosScheduling.a -SHLIB = libTAO_RTCosScheduling.$(SOEXT) - -ifndef TAO_ROOT - TAO_ROOT = $(ACE_ROOT)/TAO -endif -ifndef CIAO_ROOT - CIAO_ROOT = $(TAO_ROOT)/CIAO -endif - -TAO_IDL = ../../../bin/tao_idl -IDL_FILES = RTCosScheduling -IDL_SRC = $(foreach ext, C.cpp S.cpp, $(foreach file, $(IDL_FILES), $(file)$(ext))) - -RTCosScheduling = \ - RTCosScheduling/RTCosScheduling_ClientScheduler_i \ - RTCosScheduling/RTCosScheduling_PCP_Manager \ - RTCosScheduling/RTCosScheduling_ServerScheduler_i - -ifndef ORBSVCS_COMPONENTS - ORBSVCS_COMPONENTS = \ - RTCosScheduling -endif # ORBSVCS_COMPONENTS - -ifneq (,$(findstring RTCosScheduling, $(ORBSVCS_COMPONENTS))) - FILES += $(RTCosScheduling) -endif # RTCosScheduling - -VPATH = .:RTCosScheduling - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- -ACE_SHLIBS = -lTAO_RTPortableServer -lTAO_RTCORBA -lTAO_PortableServer -lTAO_IORInterceptor -lTAO_Valuetype -lTAO_ObjRefTemplate -lTAO -lACE -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -## We don't need the ACELIB setting from wrapper_macros.GNU -ACELIB = -include $(TAO_ROOT)/rules.tao.GNU - -# To build multiple executables in the same directory on AIX, it works -# best to have a template directory per project. -# The compiler/linker isn't too smart about instantiating templates... -ifdef TEMPINCDIR -TEMPINCDIR := $(TEMPINCDIR)/RTCosScheduling - -all: $(TEMPINCDIR) - -$(TEMPINCDIR): - @-test -d $(TEMPINCDIR) || mkdir -p $(TEMPINCDIR) $(ACE_NUL_STDERR) - -endif - -CURRENT_COMPONENTS := $(shell sh $(ACE_ROOT)/bin/ace_components --orbsvcs) -ifeq ($(interceptors),1) -ifeq ($(rt_corba),1) -else - LIB = - SHLIB = - all: require_warning -endif -else - LIB = - SHLIB = - all: require_warning -endif - -ifeq (,$(TAO_ORBSVCS)) -ifeq ($(interceptors),1) -ifeq ($(rt_corba),1) -else - LIB = - SHLIB = - all: require_warning -endif -else - LIB = - SHLIB = - all: require_warning -endif -else -ifeq ($(interceptors),1) -ifeq ($(rt_corba),1) - ifeq (RTCosScheduling, $(findstring RTCosScheduling, $(TAO_ORBSVCS))) - else - LIB = - SHLIB = - endif -else - LIB = - SHLIB = - all: require_warning -endif -else - LIB = - SHLIB = - all: require_warning -endif -endif - -LSRC = $(addsuffix .cpp, $(FILES)) -ifeq (,$(TAO_ORBSVCS)) -BUILD += ORBSVCS_COMPONENTS -else - ifeq (RTCosScheduling, $(findstring RTCosScheduling, $(TAO_ORBSVCS))) - BUILD += ORBSVCS_COMPONENTS - endif -endif - -ifneq ($(SHLIB),) -all: idl_stubs - -# This rule forces make to run the idl_stubs -# target before building any of the source files. -RTCosScheduling/RTCosScheduling_ClientScheduler_i.cpp RTCosScheduling/RTCosScheduling_PCP_Manager.cpp RTCosScheduling/RTCosScheduling_ServerScheduler_i.cpp: idl_stubs -endif - -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU - -INSTALL_CHECK = ../../../lib -ifeq ($(INSTALL_CHECK),.) - INSLIB = $(PWD) -else - INSLIB = $(INSTALL_CHECK) -endif - -include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU -include $(TAO_ROOT)/taoconfig.mk - -CPPFLAGS += -I../../orbsvcs -I../.. -I../../tao -I../../.. -ifeq ($(shared_libs),1) - ifneq ($(SHLIB),) - CPPFLAGS += -DTAO_RTCOSSCHEDULING_BUILD_DLL - endif -endif -ifeq ($(static_libs),1) - ifneq ($(LIB),) - CPPFLAGS += -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS - endif -endif - - -LDFLAGS += -L../../../lib - -TAO_IDLFLAGS += -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling/RTCosScheduling_export.h -Gv -I../.. -I../../orbsvcs -Ge 1 -Sc -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- -require_warning: - @echo This project will not be built due to one of the following missing features: - @echo interceptors rt_corba - -../../../lib: - -@mkdir -p "../../../lib" - - -.PHONY: ORBSVCS_COMPONENTS -ORBSVCS_COMPONENTS: - @sh ../../../bin/ace_components --orbsvcs --append '$(ORBSVCS_COMPONENTS)' - -compclean: - @sh ../../../bin/ace_components --orbsvcs --remove - -ADDITIONAL_IDL_TARGETS = -# IDL File Directory: . - -ifneq ($(ADDITIONAL_IDL_TARGETS),) -idl_stubs: $(ADDITIONAL_IDL_TARGETS) -endif - -.PRECIOUS: $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext))) - -realclean: clean compclean - -$(RM) $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext))) -ifneq ($(GENERATED_DIRTY),) - -$(RM) -r $(GENERATED_DIRTY) -endif - diff --git a/TAO/orbsvcs/orbsvcs/Makefile.SSLIOP b/TAO/orbsvcs/orbsvcs/Makefile.SSLIOP index 49ccd2053b2..00a89e5ab66 100644 --- a/TAO/orbsvcs/orbsvcs/Makefile.SSLIOP +++ b/TAO/orbsvcs/orbsvcs/Makefile.SSLIOP @@ -86,7 +86,9 @@ CPPFLAGS += -I$(TAO_ROOT) -I$(TAO_ROOT)/orbsvcs $(PLATFORM_SSL_CPPFLAGS) LDFLAGS += -L$(TAO_ROOT)/tao -L$(TAO_ROOT)/orbsvcs/orbsvcs $(PLATFORM_SSL_LDFLAGS) LIBS += $(PLATFORM_SSL_LIBS) +ifeq ($(HPUX_VERS),) ACE_SHLIBS = -lTAO_Security -lTAO_PortableServer -lTAO -lACE_SSL -lACE -lssl -lcrypto +endif # HPUX_VERS # Extra dependencies not caught by make depend. diff --git a/TAO/orbsvcs/orbsvcs/Makefile.bor b/TAO/orbsvcs/orbsvcs/Makefile.bor index 73f9542287f..8201132bc1c 100644 --- a/TAO/orbsvcs/orbsvcs/Makefile.bor +++ b/TAO/orbsvcs/orbsvcs/Makefile.bor @@ -25,7 +25,6 @@ MAKEFILES = \ FaultTolerance.bor \ PortableGroup.bor \ CosLoadBalancing.bor \ - IFRService.bor \ - RTCosScheduling.bor + IFRService.bor !include <$(ACE_ROOT)/include/makeinclude/recurse.bor> diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling.bor b/TAO/orbsvcs/orbsvcs/RTCosScheduling.bor deleted file mode 100644 index 4b207a989be..00000000000 --- a/TAO/orbsvcs/orbsvcs/RTCosScheduling.bor +++ /dev/null @@ -1,97 +0,0 @@ -# Makefile for building the TAO_RTCosScheduling library with Borland C++ Builder - -NAME = TAO_RTCosScheduling - -TAO_IDL = $(CORE_BINDIR)\tao_idl -g $(CORE_BINDIR)\gperf.exe - -OBJFILES = \ - $(OBJDIR)\RTCosSchedulingC.obj \ - $(OBJDIR)\RTCosSchedulingS.obj \ - $(OBJDIR)\RTCosScheduling_ClientScheduler_i.obj \ - $(OBJDIR)\RTCosScheduling_PCP_Manager.obj \ - $(OBJDIR)\RTCosScheduling_ServerScheduler_i.obj - -LFLAGS = \ - -j..\..\..\lib\$(CONFIG_SUBDIR) -j..\..\..\lib \ - -L..\..\..\lib\$(CONFIG_SUBDIR) -L..\..\..\lib \ - -j..\..\tao\RTPortableServer\$(CONFIG_SUBDIR) -j..\..\tao\RTPortableServer \ - -L..\..\tao\RTPortableServer\$(CONFIG_SUBDIR) -L..\..\tao\RTPortableServer \ - -j..\..\tao\RTCORBA\$(CONFIG_SUBDIR) -j..\..\tao\RTCORBA \ - -L..\..\tao\RTCORBA\$(CONFIG_SUBDIR) -L..\..\tao\RTCORBA \ - -j..\..\tao\PortableServer\$(CONFIG_SUBDIR) -j..\..\tao\PortableServer \ - -L..\..\tao\PortableServer\$(CONFIG_SUBDIR) -L..\..\tao\PortableServer \ - -j..\..\tao\IORInterceptor\$(CONFIG_SUBDIR) -j..\..\tao\IORInterceptor \ - -L..\..\tao\IORInterceptor\$(CONFIG_SUBDIR) -L..\..\tao\IORInterceptor \ - -j..\..\tao\ValueType\$(CONFIG_SUBDIR) -j..\..\tao\ValueType \ - -L..\..\tao\ValueType\$(CONFIG_SUBDIR) -L..\..\tao\ValueType \ - -j..\..\tao\ObjRefTemplate\$(CONFIG_SUBDIR) -j..\..\tao\ObjRefTemplate \ - -L..\..\tao\ObjRefTemplate\$(CONFIG_SUBDIR) -L..\..\tao\ObjRefTemplate \ - -j..\..\tao\$(CONFIG_SUBDIR) -j..\..\tao \ - -L..\..\tao\$(CONFIG_SUBDIR) -L..\..\tao \ - -j..\..\..\ace\$(CONFIG_SUBDIR) -j..\..\..\ace \ - -L..\..\..\ace\$(CONFIG_SUBDIR) -L..\..\..\ace \ - -j..\..\..\lib\$(CONFIG_SUBDIR) -j..\..\..\lib \ - -L..\..\..\lib\$(CONFIG_SUBDIR) -L..\..\..\lib \ - -j$(CORE_BINDIR) \ - -L$(CORE_BINDIR) - -LIBFILES = \ - TAO_RTPortableServer$(LIB_DECORATOR).lib \ - TAO_RTCORBA$(LIB_DECORATOR).lib \ - TAO_PortableServer$(LIB_DECORATOR).lib \ - TAO_IORInterceptor$(LIB_DECORATOR).lib \ - TAO_Valuetype$(LIB_DECORATOR).lib \ - TAO_ObjRefTemplate$(LIB_DECORATOR).lib \ - TAO$(LIB_DECORATOR).lib \ - ACE$(LIB_DECORATOR).lib \ - - -IDLFILES = \ - $(IDLDIR)\RTCosScheduling.idl - -!ifdef STATIC -LIB_FLAGS = -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS -DLL_FLAGS = -!else -LIB_FLAGS = -DLL_FLAGS = -DTAO_RTCOSSCHEDULING_BUILD_DLL -!endif - -CFLAGS = \ - -I..\..\orbsvcs \ - -I..\.. \ - -I..\..\tao \ - -I..\..\.. \ - $(LIB_FLAGS) \ - $(DLL_FLAGS) - -CPPDIR = .;RTCosScheduling - -IDLDIR = . - -INCLUDES = \ - RTCosScheduling\RTCosScheduling_ClientScheduler_i.h \ - RTCosScheduling\RTCosScheduling_PCP_Manager.h \ - RTCosScheduling\RTCosScheduling_ServerScheduler_i.h \ - RTCosScheduling\RTCosScheduling_ClientScheduler_i.i \ - RTCosScheduling\RTCosScheduling_PCP_Manager.i \ - RTCosScheduling\RTCosScheduling_ServerScheduler_i.i \ - RTCosScheduling.idl - -INCDIR_NAME = orbsvcs - -all: idl_src_files - -BASE_BINDIR = ..\..\..\lib - -!include <$(ACE_ROOT)\include\makeinclude\build_library.bor> - -# -# IDL Build rules -# - -idl_src_files: $(IDLFILES:.idl=C.cpp) $(IDLFILES:.idl=S.cpp) - -# IDL File Directory: . -$(IDLDIR)\RTCosSchedulingS.cpp $(IDLDIR)\RTCosSchedulingC.cpp: $(IDLDIR)\RTCosScheduling.idl - $(TAO_IDL) -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I..\.. -I..\..\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $** diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling.dsp b/TAO/orbsvcs/orbsvcs/RTCosScheduling.dsp deleted file mode 100644 index c2e8ecc13b2..00000000000 --- a/TAO/orbsvcs/orbsvcs/RTCosScheduling.dsp +++ /dev/null @@ -1,194 +0,0 @@ -# Microsoft Developer Studio Project File - Name="RTCosScheduling" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=RTCosScheduling - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE run the tool that generated this project file and specify the
-!MESSAGE nmake output type. You can then use the following command:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling.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 "RTCosScheduling.mak" CFG="RTCosScheduling - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "RTCosScheduling - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "RTCosScheduling - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "RTCosScheduling - Win32 Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\lib"
-# PROP Intermediate_Dir "Release\RTCosScheduling"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD CPP /nologo /O2 /W3 /GX /MD /Zi /GR /I "$(TAO_ROOT)\orbsvcs" /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\.." /D NDEBUG /D WIN32 /D _WINDOWS /D TAO_RTCOSSCHEDULING_BUILD_DLL /FD /c
-# SUBTRACT CPP /YX
-# ADD RSC /l 0x409 /d NDEBUG /i "$(TAO_ROOT)\orbsvcs" /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo /o"..\..\..\lib\TAO_RTCosScheduling.bsc"
-LINK32=link.exe
-# ADD LINK32 advapi32.lib user32.lib /INCREMENTAL:NO TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\lib" /nologo /version:1.3.4 /subsystem:windows /pdb:"..\..\..\lib\TAO_RTCosScheduling.pdb" /dll /machine:I386 /out:"..\..\..\lib\TAO_RTCosScheduling.dll"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling - Win32 Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\lib"
-# PROP Intermediate_Dir "Debug\RTCosScheduling"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD CPP /nologo /Ob0 /W3 /Gm /GX /Zi /MDd /GR /Gy /I "$(TAO_ROOT)\orbsvcs" /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\.." /D _DEBUG /D WIN32 /D _WINDOWS /D TAO_RTCOSSCHEDULING_BUILD_DLL /FD /c
-# SUBTRACT CPP /Fr /YX
-# ADD RSC /l 0x409 /d _DEBUG /i "$(TAO_ROOT)\orbsvcs" /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo /o"..\..\..\lib\TAO_RTCosScheduling.bsc"
-LINK32=link.exe
-# ADD LINK32 advapi32.lib user32.lib /INCREMENTAL:NO TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\lib" /nologo /version:1.3.4 /subsystem:windows /pdb:"..\..\..\lib\TAO_RTCosSchedulingd.pdb" /dll /debug /machine:I386 /out:"..\..\..\lib\TAO_RTCosSchedulingd.dll"
-
-!ENDIF
-
-# Begin Target
-
-# Name "RTCosScheduling - Win32 Release"
-# Name "RTCosScheduling - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;cxx;c"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ClientScheduler_i.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_PCP_Manager.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ServerScheduler_i.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hh"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ClientScheduler_i.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_PCP_Manager.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ServerScheduler_i.h"
-# End Source File
-# End Group
-# Begin Group "Inline Files"
-
-# PROP Default_Filter "i;inl"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ClientScheduler_i.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_PCP_Manager.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ServerScheduler_i.i"
-# End Source File
-# End Group
-# Begin Group "IDL Files"
-
-# PROP Default_Filter "idl"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling.idl"
-
-!IF "$(CFG)" == "RTCosScheduling - Win32 Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\RTCosScheduling.idl
-InputName=RTCosScheduling
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\Release\tao_idl -o . -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I$(TAO_ROOT) -I$(TAO_ROOT)\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling - Win32 Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\RTCosScheduling.idl
-InputName=RTCosScheduling
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I$(TAO_ROOT) -I$(TAO_ROOT)\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling.idl b/TAO/orbsvcs/orbsvcs/RTCosScheduling.idl deleted file mode 100644 index 10d68c8815c..00000000000 --- a/TAO/orbsvcs/orbsvcs/RTCosScheduling.idl +++ /dev/null @@ -1,110 +0,0 @@ -/* -*- idl -*- */ - -//============================================================================= -/** - * @file RTCosScheduling.idl - * - * $Id$ - * - * @author Matt Murphy <murphym@cs.uri.edu> - */ -//============================================================================= - -/** - * This directory contains the idl for the RTCORBA 1.0 Scheduling Service. - * To generate the stubs and skeletons, run - * tao_idl -I $TAO_ROOT/ RTCosScheduling.idl - * - */ - - -#ifndef _RT_COS_SCHEDULING_ -#define _RT_COS_SCHEDULING_ - -#include <orb.idl> -#include "tao/PortableServer/PortableServer.pidl" - -/** - * @module RTCosScheduling - * - * @brief This module contains the interfaces for the RTCORBA 1.0 - * Scheduling Service. - */ - - -module RTCosScheduling { - - /** - * This exception is thrown by schedule activity when an activity name - * is passed that is associated with a priority in the config file. - * It is thrown by schedule_object when an object name is passed in - * that was not assiciated with a resource priority ceiling in the - * config file. - */ - exception UnknownName {}; - - /** - * @interface ClientScheduler - * - * @brief This interface is used by clients who wish to - * schedule activities using the RT CORBA 1.0 Scheduling Service. - */ - local interface ClientScheduler { - - /** - * schedule_activity associates an activity name with a known priority - * for that activity. It then sets RT Current to that priority. - * If the name passed does not have a priority associated then - * schedule_activity throws an UnknownName exception. - * - * @param activity_name is the name of the activity that the client - * would like to run. The activity_name is associated with a - * priority by schedule_activity and RT Current is set to that - * priority. - */ - void schedule_activity(in string activity_name ) - raises (UnknownName); - }; - - /** - * @interface ServerScheduler - * - * @brief This interface is used by nodes that hold a local object - * reference. - */ - local interface ServerScheduler { - - /** - * create_POA is called by servers that would like to use the - * RT CORBA 2.0 Scheduling Service. - * - * @param parent The poa to base the RT POA upon - * @param adapter_name the adapter name for the poa - * @param a_POAManager the poa_manager - * @param policies the list of non real time policies to be set - * - */ - PortableServer::POA create_POA ( - in PortableServer::POA parent, - in string adapter_name, - in PortableServer::POAManager a_POAManager, - in CORBA::PolicyList policies) - raises (PortableServer::POA::AdapterAlreadyExists, - PortableServer::POA::InvalidPolicy); - - /** - * schedule_object is called on servers to associate a - * CORBA object reference with a name. This allows the - * scheduling service to map a server object name to a resource - * ceiling. An UnknownName exception is found if the object name - * is not found in the config file. - */ - void schedule_object(in Object obj, in string name) - raises (UnknownName); - - }; - -}; - - -#endif // _RT_COS_SCHEDULING_IDL_ diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling.mpc b/TAO/orbsvcs/orbsvcs/RTCosScheduling.mpc deleted file mode 100644 index 36a3e8e30dc..00000000000 --- a/TAO/orbsvcs/orbsvcs/RTCosScheduling.mpc +++ /dev/null @@ -1,19 +0,0 @@ -project : orbsvcslib, rtportableserver { - requires += interceptors - sharedname = TAO_RTCosScheduling - idlflags += -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling/RTCosScheduling_export.h - dynamicflags += TAO_RTCOSSCHEDULING_BUILD_DLL - tagchecks += RTCosScheduling - - IDL_Files { - RTCosScheduling.idl - } - Source_Files(ORBSVCS_COMPONENTS) { - RTCosScheduling { - RTCosScheduling - } - } - Template_Files { - } -} - diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling.vcp b/TAO/orbsvcs/orbsvcs/RTCosScheduling.vcp deleted file mode 100644 index 8075948b282..00000000000 --- a/TAO/orbsvcs/orbsvcs/RTCosScheduling.vcp +++ /dev/null @@ -1,424 +0,0 @@ -# Microsoft eMbedded Visual Tools Project File - Name="RTCosScheduling" - Package Owner=<4>
-# Microsoft eMbedded Visual Tools Generated Build File, Format Version 6.02
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (WCE ARM) Dynamic-Link Library" 0x8502
-# TARGTYPE "Win32 (WCE x86) Dynamic-Link Library" 0x8302
-# TARGTYPE "Win32 (WCE emulator) Dynamic-Link Library" 0xa602
-
-CFG=RTCosScheduling - Win32 (WCE ARM) Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE run the tool that generated this project file and specify the
-!MESSAGE nmake output type. You can then use the following command:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling.vcn".
-!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 "RTCosScheduling.vcn" CFG="RTCosScheduling - Win32 (WCE ARM) Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "RTCosScheduling - Win32 (WCE ARM) Release" (based on "Win32 (WCE ARM) Dynamic-Link Library")
-!MESSAGE "RTCosScheduling - Win32 (WCE ARM) Debug" (based on "Win32 (WCE ARM) Dynamic-Link Library")
-!MESSAGE "RTCosScheduling - Win32 (WCE x86) Release" (based on "Win32 (WCE x86) Dynamic-Link Library")
-!MESSAGE "RTCosScheduling - Win32 (WCE x86) Debug" (based on "Win32 (WCE x86) Dynamic-Link Library")
-!MESSAGE "RTCosScheduling - Win32 (WCE emulator) Release" (based on "Win32 (WCE emulator) Dynamic-Link Library")
-!MESSAGE "RTCosScheduling - Win32 (WCE emulator) Debug" (based on "Win32 (WCE emulator) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-# PROP ATL_Project 2
-
-!IF "$(CFG)" == "RTCosScheduling - Win32 (WCE ARM) Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\lib\ARM"
-# PROP Intermediate_Dir "Release\RTCosScheduling\ARM"
-# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d NDEBUG /d UNICODE /d _UNICODE /d ARM /d _ARM_ /i "..\..\orbsvcs" /i "..\.." /i "..\..\tao" /i "..\..\.." /r
-CPP=clarm.exe
-# ADD CPP /nologo /O2 /W3 /Zi /I "..\..\orbsvcs" /I "..\.." /I "..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D NDEBUG /D UNICODE /D _UNICODE /D ARM /D _ARM_ /D TAO_RTCOSSCHEDULING_BUILD_DLL /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo /o"..\..\..\lib\TAO_RTCosScheduling.bsc"
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\lib\ARM" /libpath:"..\..\tao\RTPortableServer\ARM" /libpath:"..\..\tao\RTCORBA\ARM" /libpath:"..\..\tao\PortableServer\ARM" /libpath:"..\..\tao\IORInterceptor\ARM" /libpath:"..\..\tao\ValueType\ARM" /libpath:"..\..\tao\ObjRefTemplate\ARM" /libpath:"..\..\tao\ARM" /libpath:"..\..\..\ace\ARM" /libpath:"..\..\..\lib\ARM" /nologo /base:"0x00100000" /entry:"_DllMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"..\..\..\lib\ARM\TAO_RTCosScheduling.pdb" /dll /debug /machine:ARM /out:"..\..\..\lib\ARM\TAO_RTCosScheduling.dll"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling - Win32 (WCE ARM) Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\lib\ARM"
-# PROP Intermediate_Dir "Debug\RTCosScheduling\ARM"
-# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d _DEBUG /d UNICODE /d _UNICODE /d ARM /d _ARM_ /i "..\..\orbsvcs" /i "..\.." /i "..\..\tao" /i "..\..\.." /r
-CPP=clarm.exe
-# ADD CPP /nologo /Ob0 /W3 /Zi /I "..\..\orbsvcs" /I "..\.." /I "..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D _DEBUG /D UNICODE /D _UNICODE /D ARM /D _ARM_ /D TAO_RTCOSSCHEDULING_BUILD_DLL /FR /FD /c
-# SUBTRACT CPP /Fr /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo /o"..\..\..\lib\TAO_RTCosScheduling.bsc"
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\lib\ARM" /libpath:"..\..\tao\RTPortableServer\ARM" /libpath:"..\..\tao\RTCORBA\ARM" /libpath:"..\..\tao\PortableServer\ARM" /libpath:"..\..\tao\IORInterceptor\ARM" /libpath:"..\..\tao\ValueType\ARM" /libpath:"..\..\tao\ObjRefTemplate\ARM" /libpath:"..\..\tao\ARM" /libpath:"..\..\..\ace\ARM" /libpath:"..\..\..\lib\ARM" /nologo /base:"0x00100000" /entry:"_DllMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"..\..\..\lib\ARM\TAO_RTCosSchedulingd.pdb" /dll /debug /machine:ARM /out:"..\..\..\lib\ARM\TAO_RTCosSchedulingd.dll"
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling - Win32 (WCE x86) Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\lib\IX86"
-# PROP Intermediate_Dir "Release\RTCosScheduling\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d NDEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\orbsvcs" /i "..\.." /i "..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /O2 /W3 /Zi /I "..\..\orbsvcs" /I "..\.." /I "..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D NDEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /D TAO_RTCOSSCHEDULING_BUILD_DLL /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo /o"..\..\..\lib\TAO_RTCosScheduling.bsc"
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\lib\IX86" /libpath:"..\..\tao\RTPortableServer\IX86" /libpath:"..\..\tao\RTCORBA\IX86" /libpath:"..\..\tao\PortableServer\IX86" /libpath:"..\..\tao\IORInterceptor\IX86" /libpath:"..\..\tao\ValueType\IX86" /libpath:"..\..\tao\ObjRefTemplate\IX86" /libpath:"..\..\tao\IX86" /libpath:"..\..\..\ace\IX86" /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /entry:"_DllMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"..\..\..\lib\IX86\TAO_RTCosScheduling.pdb" /dll /debug /machine:IX86 /out:"..\..\..\lib\IX86\TAO_RTCosScheduling.dll"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling - Win32 (WCE x86) Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\lib\IX86"
-# PROP Intermediate_Dir "Debug\RTCosScheduling\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d _DEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\orbsvcs" /i "..\.." /i "..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /Ob0 /W3 /Zi /I "..\..\orbsvcs" /I "..\.." /I "..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D _DEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /D TAO_RTCOSSCHEDULING_BUILD_DLL /FR /FD /c
-# SUBTRACT CPP /Fr /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo /o"..\..\..\lib\TAO_RTCosScheduling.bsc"
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\lib\IX86" /libpath:"..\..\tao\RTPortableServer\IX86" /libpath:"..\..\tao\RTCORBA\IX86" /libpath:"..\..\tao\PortableServer\IX86" /libpath:"..\..\tao\IORInterceptor\IX86" /libpath:"..\..\tao\ValueType\IX86" /libpath:"..\..\tao\ObjRefTemplate\IX86" /libpath:"..\..\tao\IX86" /libpath:"..\..\..\ace\IX86" /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /entry:"_DllMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"..\..\..\lib\IX86\TAO_RTCosSchedulingd.pdb" /dll /debug /machine:IX86 /out:"..\..\..\lib\IX86\TAO_RTCosSchedulingd.dll"
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling - Win32 (WCE emulator) Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\lib\IX86"
-# PROP Intermediate_Dir "Release\RTCosScheduling\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d NDEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\orbsvcs" /i "..\.." /i "..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /O2 /W3 /Zi /I "..\..\orbsvcs" /I "..\.." /I "..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D NDEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /D TAO_RTCOSSCHEDULING_BUILD_DLL /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo /o"..\..\..\lib\TAO_RTCosScheduling.bsc"
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\lib\IX86" /libpath:"..\..\tao\RTPortableServer\IX86" /libpath:"..\..\tao\RTCORBA\IX86" /libpath:"..\..\tao\PortableServer\IX86" /libpath:"..\..\tao\IORInterceptor\IX86" /libpath:"..\..\tao\ValueType\IX86" /libpath:"..\..\tao\ObjRefTemplate\IX86" /libpath:"..\..\tao\IX86" /libpath:"..\..\..\ace\IX86" /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /entry:"_DllMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"..\..\..\lib\IX86\TAO_RTCosScheduling.pdb" /dll /debug /machine:IX86 /out:"..\..\..\lib\IX86\TAO_RTCosScheduling.dll"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling - Win32 (WCE emulator) Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\lib\IX86"
-# PROP Intermediate_Dir "Debug\RTCosScheduling\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d _DEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\orbsvcs" /i "..\.." /i "..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /Ob0 /W3 /Zi /I "..\..\orbsvcs" /I "..\.." /I "..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D _DEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /D TAO_RTCOSSCHEDULING_BUILD_DLL /FR /FD /c
-# SUBTRACT CPP /Fr /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo /o"..\..\..\lib\TAO_RTCosScheduling.bsc"
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\lib\IX86" /libpath:"..\..\tao\RTPortableServer\IX86" /libpath:"..\..\tao\RTCORBA\IX86" /libpath:"..\..\tao\PortableServer\IX86" /libpath:"..\..\tao\IORInterceptor\IX86" /libpath:"..\..\tao\ValueType\IX86" /libpath:"..\..\tao\ObjRefTemplate\IX86" /libpath:"..\..\tao\IX86" /libpath:"..\..\..\ace\IX86" /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /entry:"_DllMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"..\..\..\lib\IX86\TAO_RTCosSchedulingd.pdb" /dll /debug /machine:IX86 /out:"..\..\..\lib\IX86\TAO_RTCosSchedulingd.dll"
-
-!ENDIF
-
-
-# Begin Target
-
-# Name "RTCosScheduling - Win32 (WCE ARM) Release"
-# Name "RTCosScheduling - Win32 (WCE ARM) Debug"
-# Name "RTCosScheduling - Win32 (WCE x86) Release"
-# Name "RTCosScheduling - Win32 (WCE x86) Debug"
-# Name "RTCosScheduling - Win32 (WCE emulator) Release"
-# Name "RTCosScheduling - Win32 (WCE emulator) Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;cxx;c"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ClientScheduler_i.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_PCP_Manager.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ServerScheduler_i.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hh"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ClientScheduler_i.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_PCP_Manager.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ServerScheduler_i.h"
-# End Source File
-# End Group
-# Begin Group "Inline Files"
-
-# PROP Default_Filter "i;inl"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ClientScheduler_i.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_PCP_Manager.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ServerScheduler_i.i"
-# End Source File
-# End Group
-# Begin Group "IDL Files"
-
-# PROP Default_Filter "idl"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling.idl"
-
-!IF "$(CFG)" == "RTCosScheduling - Win32 (WCE ARM) Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\RTCosScheduling.idl
-InputName=RTCosScheduling
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I..\.. -I..\..\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling - Win32 (WCE ARM) Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\RTCosScheduling.idl
-InputName=RTCosScheduling
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I..\.. -I..\..\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling - Win32 (WCE x86) Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\RTCosScheduling.idl
-InputName=RTCosScheduling
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I..\.. -I..\..\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling - Win32 (WCE x86) Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\RTCosScheduling.idl
-InputName=RTCosScheduling
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I..\.. -I..\..\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling - Win32 (WCE emulator) Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\RTCosScheduling.idl
-InputName=RTCosScheduling
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I..\.. -I..\..\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling - Win32 (WCE emulator) Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\RTCosScheduling.idl
-InputName=RTCosScheduling
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I..\.. -I..\..\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/README b/TAO/orbsvcs/orbsvcs/RTCosScheduling/README deleted file mode 100644 index 6f0261edead..00000000000 --- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/README +++ /dev/null @@ -1,301 +0,0 @@ -README,v 1.0 2003/08/21 - -RTCORBA 1.0 Scheduling Service. - -Matt Murphy <murphym@cs.uri.edu> -University of Rhode Island - -This is an implementation of the RTCORBA 1.0 Scheduling Service. -Per section 3 of the RTCORBA 1.0 specification (OMG), the scheduling -service is comprised of two local interfaces, a ClientScheduler and -a ServerScheduler. - - -Build Issues: ---------- -Run tao_idl -I $TAO_ROOT/ RTCosScheduling.pidl -Some versions of TAO incorrectly include the line -#include "tao/PortableServer/PortableServerS.h" -in RTCosSchedulingS.h when making the IDL. Before running -make on your program, please check if this line was included in -RTCosSchedulingS.h, and if so, comment it out. -Run make -f Makefile.RTCosScheduling from ../ - - - -Synopsis: ---------- -The RTCosScheduler allows clients to schedule tasks according to -scheduling information determined a priori. This scheduling information -is stored in a config file so that both the client and the server has -access to it. (If the client and server exists on different nodes then -place a copy of the config file on each node.) - -Per the RTCORBA 1.0 spec, clients use a ClientScheduler object and -servers use a ServerScheduler object to schedule activities on the -system. Since each may or may not use its scheduler, there are four -possible scenarios in which the system may run. These are: - -1. Client uses ClientScheduler, Server uses ServerScheduler. - In this case the system follows the rules set forth in the - "Scheduling Service" section of this document below. - -2. Client uses ClientScheduler, Server does not use ServerScheduler. - In this case activities are scheduled on the client - and run at the mapped Real Time priority set forth in the config - file while executing on the client. However, any activity on the - server does not run at a real time priority. This means that - Multiprocessor Priority Ceiling Protocol does not manage activities - on the server. Currently, the client has no way of knowing that - activity on the server did not follow the MPCP protocol. Future - enhancements to the RTCORBA 1.0 scheduling service should notify - the client (perhaps through a flag to a client interceptor) that - the server did not use MPCP. Please note that this scenario is generally - not recommended as there is a strong possibility for - priority inversion or unexpected blocking in this situation - since any and all server activity that uses the ServerScheduler - will run at a higher priority that server activity that does not. - Use scenario 1 above. Here, the server's priority lowers from - RTCORBA::maxPriority to RTCORBA::minPriority and things will - execute on a best effort basis. - -3. Client does not use ClientScheduler, Server uses ServerScheduler. - In this case the client does not use priorities set forth in the - config file. The ServerScheduler, on the other hand, does use - MPCP to schedule execution on the server. It uses the priority sent - to the server by the client, which is the default priority that the - client ran at (since the client priority was not changed by - schedule_activity(). This follows the scenario of the ServerScheduler - set forth below. Please note that it is recommended that you use - scenario 1, above, instead so that the client sends appropriate priorities - to the server. - -4. Client does not use ClientScheduler, server does not use - ServerScheduler. - In this case neither the client nor the server take advantage of - the RTCORBA 1.0 Scheduler. - - - -Scheduling Service: ------------------- -ClientScheduler: -Clients wishing to use the ClientScheduler to schedule activities -must first create a local ClientScheduler object reference. The -ClientScheduler is declared as: - -RTCosScheduling_ClientScheduler_i ( - CORBA::ORB_var orb, /// Orb reference - char* node, /// Node the client resides on - char* file); /// Config file holding scheduling information - - -The ClientScheduler constructor parses the config file and populates -an ACE_MAP with the activity/priority associations for the node on -which the client resides. It also constructs a ClientScheduler_Interceptor -that adds a service context the send_request interceptor that contains -the priority the client is running at when the call is made. - -Once initialized, calls to the ClientScheduler schedule_activity( -const char * activity_name) method will match the activity_name -parameter to the CORBA priority value in the ACE_Map. It linearly -maps CORBA priority to a local OS priority and sets the local OS -priority using RT Current. If the activity name provided is not -valid (i.e. not found in the config file), a -RTCosScheduling::UnknownName exception is thrown. - -The ClientScheduler also registers an client side interceptor with the -orb. This ClientScheduler_Interceptor finds the CORBA priority that the -client is running at when the remote method call is made and adds this priority -to a service context for the ServerScheduler_Interceptor to use. Initial -tests find that this interceptor adds 0.00015 seconds of execution on an -Intel 3.0 GHz processor. - - -ServerScheduler: -Servers that contain local objects that will accept CORBA calls must -create a local ServerScheduler object. The ServerScheduler uses -TAO's PortableInterceptors to intercept incoming client requests and -schedule execution on the server. These interceptors are registered -by the ORB_Core as explained in the create_POA method below. -The ServerScheduler is defined as: - - RTCosScheduling_ServerScheduler_i ( - char *node, /// Node the ServerScheduler resides on - char *file, /// Config file holding scheduling information - char *shared_file, /// File used for shared memory - int numthreads); /// Number of threads to create in the threadpool - -During initialization, the ServerScheduler finds the appropriate node -information in the config file and stores resources (key) on the node -and the appropriate priority ceiling (value) in a map. It also reads -in the base priority for the resource. - -The ServerScheduler constructor then registers the PortableInterceptors -necessary to scheduler execution on the server. It also set up the -linear mapping policy and a reference to the RT Current object, both -of which are used for adjusting the server's local OS priority when -using the priority ceiling control protocol. - -Once the ServerScheduler object is constructed, users may create an -orb and establish any non real time POA policies they wish to install by -calling the ServerScheduler's create_POA method. - -ServerScheduler's create_POA method creates a real time POA that will -set and enforce all non-real time policies. This method also sets the -real time POA to enforce the Server Declared Priority Model Policy and -creates a threadpool responsible for executing calls to the server. -Server Declared Priority Model is used so that the server threads may run at -a high enough priority to intercept requests as soon as they come in. -If Client Propagated Priority Ceilings were used, incoming requests would not -be intercepted until all existing servant execution is completed. This is -because MPCP elevates the priority of servant execution to be higher than -the client priorities. - -Recall that the number of threads in the threadpool was supplied by the -ServerScheduler constructor. The create_POA method is defined as: - - virtual ::PortableServer::POA_ptr create_POA ( - PortableServer::POA_ptr parent, /// Non RT POA parent - const char * adapter_name, /// Name for the POA - PortableServer::POAManager_ptr a_POAManager, /// Manager for the POA - const CORBA::PolicyList & policies /// List of non RT policies - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - , PortableServer::POA::AdapterAlreadyExists - , PortableServer::POA::InvalidPolicy - )); - - -Once a RT POA has been created, schedule_object is called to store CORBA -Object references (key) with a name (value) in an ACE_MAP. An -RTCosScheduling::UnknownName exception is thrown if the schedule_object -name parameter is not found in the resource map (i.e. it was not in the -config file.) -The schedule_object method is declared as: - virtual void schedule_object ( - CORBA::Object_ptr obj, /// A CORBA object reference - const char * name /// Name to associate with obj - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException - , RTCosScheduling::UnknownName - )); - - -Once all objects that will receive client requests have been scheduled -using schedule_object, clients are free to make calls on those objects. -The scheduling service interceptors catch these calls and perform the -necessary priority ceiling control measures to ensure that the calls -are executed in the appropriate order. The ServerScheduler_Interceptor -receive_request method intercepts all incoming request immediately since it -is set to run at RTCORBA::maxPriority (the highest priority on the server -OS). It then gets the client priority sent in the service context as well -as the resource ceiling for the object and the base priority for the server. -Initial tests indicate that the receive_request interceptor takes around -0.002 seconds to complete on an Intel 3.0 GHz processor. - -Given these values it is able to use the Multiprocessor Priority Ceiling -Protocol to schedule execution on the server to handle the request. MPCP -schedules all global critical sections at a higher priority than tasks on -the local processor by adding the client priority to the base -priority of the servant, then adding the resource ceiling of the resource -to the base priority to find the appropriate priority ceiling. For more -information about MPCP, please refer to the book "Real Time Systems", -By Jane Liu (2000). - -Please not that the locking mechanisms are stored in shared memory -on the server. This means that the locks cannot be stored in linked lists -and are therefore manipulated using memory offsets. The total number of -locks that may be stored in shared memory is currently set at 1024. - -When remote execution is complete the send_reply interceptor resets the thread -to listen at RTCORBA::maxPriority and removes the task form the Invocation -list. Initial test indicate that the send_reply interceptor takes 0.000075 -seconds to complete on an Intel 3.0 GHz processor. - - -Scheduling Service Config File: -The scheduling service config file holds the information necessary to -schedule the system. Task and resource ceiling information is stored for -each of the nodes as follows: - -Node 1 /// The node name is 1 - -Resources: -BP 6000 /// The base priority for the resource -Server1 1000 /// A list of resources and their priority ceiling -Server2 2000 -END /// The end of the resource list - -Tasks: /// A list of tasks that will execute on the node -Client1 1000 -Client2 3000 -Client3 5000 -END /// The end of the task list. - -Please note that these associations are tab delimited. Please do not include -comments in the scheduling service config file. The priorities associated -with each task and resource are considered to be CORBA priorities, and -will be mapped to local OS level priorities using the Linear Mapping -model. Per the OMG RT CORBA spec, CORBA priorities have a valid range up -to 32767, where a larger value indicates a higher priority. The current -config file assumes that the Multiprocessor Priority Ceiling Protocol is -used. - -Known Issues: -TAO does not currently support request buffering, and there are no immediate -plans to do so. Consequently, the RT CORBA 1.0 Scheduling Service is -limited in that it will only function properly in systems that do not -require request buffering on the servant side. - -There is a bug in TAO in which mapped priorities are mapped a second time -when using Client Propagated Priority Ceiling Protocol. This in effect -lowers the priority that the servant receives. This happens to each -priority, so there should be no effect on the system. - -The config file assumes CORBA priorities in the range of 0 to 32767. -The Linear Priority Mapping Manager will map these to valid local OS -priorities. Take care though, in determining the priority range in -the config file, as low numbers or numbers very close in value may -produce priority inversion and other issues. For example, if the CORBA -priorities used for three tasks are 100 200 300, these will all map to -OS priority 1 in on some real time Linux systems. Please take this into -account when determining the CORBA priority range to use. - -The 1.0 Scheduling service currently works with one orb and one POA. -If someone tries to install more than one scheduling service (client or server -side) on a single POA, then it should not add a second interceptor. Please -use a single scheduling service per POA. Furthermore, there is a bug when -more than one orb is created, an invalid policy exception is thrown during the -second call to create_POA. This bug is actively being investigated. In the -meantime please use the scheduling service with one ORB. - - - -Future Enhancements: -ACE_XML -The current RT CORBA 1.0 Scheduling Service uses a private method to -read the config file. This will soon be replaced with a new XML based config -file using ACE_XML to parse the config file. - -Priority Lanes -Although not currently implemented, Priority Lanes and Thread Borrowing -may increase performance as they would help to prevent lower priority -tasks from exhausting all threads. This is considered a possible future -enhancement. - -Client Interceptor -A client interceptor that sends a flag to notify the server interceptor if -schedule_activity() was used to set the client priority. If -schedule_activity() was not used, then the server should probably not try -and schedule server execution using MPCP. Doing so adds competition to other -method calls by other client requests that were scheduled with -schedule_activity(). - -References -The Object Management Group, Real Time CORBA 1.0 Specification, www.omg.org -Liu, Jane, Real Time Systems, Prentice Hall, 2000 - - diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.cpp b/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.cpp deleted file mode 100644 index 3a1ebb803b3..00000000000 --- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.cpp +++ /dev/null @@ -1,450 +0,0 @@ -/* -*- C++ -*- */ - -//============================================================================= -/** - * @file RTCosScheduling_ClientScheduler_i.cpp - * - * $Id$ - * - * @author Matt Murphy <murphym@cs.uri.edu> - */ -//============================================================================= - -#include "RTCosScheduling_ClientScheduler_i.h" - -#if !defined (__ACE_INLINE__) -#include "RTCosScheduling_ClientScheduler_i.i" -#endif /* __ACE_INLINE__ */ - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - - -/** - * Note - Before making this file with Makefile.RTCosScheduling, please make - * sure that you first comment out the following line from the - * RTCosSchedulingS.h file: - * //#include "tao/PortableServer/PortableServerS.h" - */ - -#include "tao/ORB_Core.h" -#include "tao/LocalObject.h" -#include "tao/PortableInterceptorC.h" - -namespace TAO -{ - -/// Constructor -RTCosScheduling_ClientScheduler_i::RTCosScheduling_ClientScheduler_i ( - const CORBA::ORB_var orb, - char *node_name, - char *file) -{ - ACE_TRY_NEW_ENV - { - /// Read the resources and ceilings from the config file - /// and put them into the activity_map_ - if ( !ACE_OS::strcmp(file,"") || file == NULL) - { - ACE_DEBUG((LM_DEBUG, - "No config supplied to the ServerScheduler, " - "Server will not scheudle object execution " - "(ServerScheduler interceptor not installed)")); - } - else if (!tasks(node_name, file, &activity_map_)) - { - ACE_DEBUG((LM_DEBUG,"Invalid Filename given, aborting!\n")); - ACE_OS::exit(1); - } - // The tasks were successfully read in, create the client interceptor - else - { -#ifdef TAO_HAS_INTERCEPTORS - ACE_NEW_THROW_EX(this->client_interceptor_, - RTCosScheduling_ClientScheduler_Interceptor(orb), - CORBA::NO_MEMORY()); - ACE_CHECK; - - TAO_ORB_Core *orb_core = orb->orb_core(); - - /// First, get a list of all interceptors currently registered - TAO_ClientRequestInterceptor_List::TYPE &interceptors = - orb_core->client_request_interceptors(); - - - /// Now check to see if the ServerScheduler Interceptor has already - /// been registered - u_int i; - u_int unregistered = 1; - for (i = 0; i < interceptors.size() && unregistered; ++i) - { - if (ACE_OS::strncmp(interceptors[i]->_interface_repository_id (), - this->client_interceptor_->_interface_repository_id(), - ACE_OS::strlen( - this->client_interceptor_->_interface_repository_id()-2)) - == 0) - { - /// The interceptor is already registered, - /// don't try to register it again - unregistered = 0; - } - } - - /// if the ServerScheduler Interceptor was not registered by - /// another POA then register it now - if (unregistered) - { - orb_core->add_interceptor(this->client_interceptor_ - ACE_ENV_ARG_PARAMETER); - } -#endif /* TAO_HAS_INTERCEPTORS */ - - /// Now resolve a reference to the Real Time ORB - CORBA::Object_var rt_obj = - orb->resolve_initial_references("RTORB" - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - // Get a reference to the real time orb - RTCORBA::RTORB_var rt_orb = - RTCORBA::RTORB::_narrow (rt_obj.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - /// resolve a reference to RT Current - rt_obj = - orb->resolve_initial_references ("RTCurrent" - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - this->current_ = - RTCORBA::Current::_narrow (rt_obj.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK - - /// Resolve a reference to the Linear Priority Mapping Manager - rt_obj = - orb->resolve_initial_references("PriorityMappingManager" - ACE_ENV_ARG_PARAMETER); - RTCORBA::PriorityMappingManager_var mapping_manager = - RTCORBA::PriorityMappingManager::_narrow(rt_obj.in() - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - /// Create the Linear Priority Mapping Manager - ACE_NEW_THROW_EX(this->pm_, - TAO_Linear_Priority_Mapping( - ACE_SCHED_FIFO), - CORBA::NO_MEMORY()); - // WHERE the parameter is one of SCHED_OTHER, SCHED_FIFO, or SCHED_RR - - mapping_manager->mapping(this->pm_); - ACE_TRY_CHECK; - } - } - ACE_CATCHANY - { - ACE_ERROR((LM_ERROR, "Could not configure the orb")); - ACE_OS::exit(1); - } - ACE_ENDTRY; -} - - -/// Implementation skeleton destructor -RTCosScheduling_ClientScheduler_i::~RTCosScheduling_ClientScheduler_i (void) -{ - delete this->pm_; -#ifdef TAO_HAS_INTERCEPTORS - delete this->client_interceptor_; -#endif /* TAO_HAS_INTERCEPTORS */ -} - - -void RTCosScheduling_ClientScheduler_i::schedule_activity ( - const char * activity_name - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( - CORBA::SystemException, - RTCosScheduling::UnknownName)) -{ - /// Look up the priority using the activity name in the activity map - COS_SCHEDULER_ACTIVITY_VALUE priority; - CORBA::Short result = - this->activity_map_.find(activity_name, - priority); - - /// If the activity/priority was found, set the current to the - /// appropriate priority. - if (result != -1) - { - this->current_->the_priority(priority - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - } - /// If the activity was not found, throw an UnknownName exception. - else - { - ACE_THROW (RTCosScheduling::UnknownName()); - } -} - - -int -RTCosScheduling_ClientScheduler_i::tasks( - const char *node_name, - const char *file_name, - CosSchedulerActivityMap *activity_map) -{ - /// get the activity list just for the particular node - const unsigned int BUF_MAX = 256; - - FILE *fp = ACE_OS::fopen(file_name, "r"); - /// Make sure we can open the file - if (fp == NULL) - { - /// Error return of we cannot open the file. - ACE_ERROR_RETURN((LM_ERROR, - "Could not find the config file %s, aborting\n", - file_name), - 0); - } - - - char line[BUF_MAX], key[16]; - ACE_OS::strsncpy(key, "Node ", sizeof(key)); - ACE_OS::strcat(key, node_name); - - /// Skip to the appropriate node - ACE_OS::clearerr(fp); - do - { - ACE_OS::fgets(line, BUF_MAX, fp); - } - while (ACE_OS::strncmp(line, key, ACE_OS::strlen(key)) != 0); - - /// Make sure we did not hit the end of file - if (ACE_OS::last_error() == EOF) - { - ACE_ERROR_RETURN((LM_ERROR, - "Node %s not found in config file\n", - node_name), - 0); - } - - /// Skip to the appropriate task section of the node - ACE_OS::clearerr(fp); - do - { - ACE_OS::fgets(line, BUF_MAX, fp); - } - while (ACE_OS::strncmp(line, "Tasks:", ACE_OS::strlen("Tasks:")) != 0); - - /// Make sure we did not hit the end of file - if (ACE_OS::last_error() == EOF) - { - ACE_ERROR_RETURN((LM_ERROR, - "Task list not found for node %s\n", - node_name), - 0); - } - - CORBA::Short done = 0; - COS_SCHEDULER_ACTIVITY_KEY name; - COS_SCHEDULER_ACTIVITY_VALUE priority; - u_int delimiter; - - /// read each activity/priority pair from the config file - while (!done) - { - /// get the activity name - ACE_OS::fgets(line, BUF_MAX, fp); - - /// check to make sure we have not reached the end of the list. - if (ACE_OS::strncmp(line, "END", ACE_OS::strlen("END")) != 0) - { - name = ACE_CString(line); - delimiter = name.find('\t'); - priority = ACE_OS::atoi(ACE_OS::strchr(line, '\t')); - if (delimiter < name.length() && delimiter > 0) - { - activity_map->bind(name.substr(0, delimiter), priority); - } - else - { - ACE_ERROR_RETURN((LM_ERROR, - "Error in reading activities from %s", - file_name), - 0); - } - } - else - { - done = 1; - } - } - - return 1; -} - -RTCosScheduling_ClientScheduler_Interceptor::RTCosScheduling_ClientScheduler_Interceptor() : name_("RTCosScheduling_Client_Interceptor") -{ - ACE_TRY_NEW_ENV - { - /// resolve a reference to RT Current - int argc = 0; - CORBA::ORB_var orb = CORBA::ORB_init (argc, - 0, - 0 - ACE_ENV_ARG_PARAMETER); - CORBA::Object_var obj = - orb->resolve_initial_references ("RTCurrent" - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - if (CORBA::is_nil(obj.in())) - { - ACE_OS::exit(1); - } - else - { - this->current_ = - RTCORBA::Current::_narrow (obj.in () ACE_ENV_ARG_PARAMETER); - } - ACE_CHECK; - - obj = - orb->resolve_initial_references("CodecFactory" - ACE_ENV_ARG_PARAMETER); - - IOP::CodecFactory_var codec_factory; - if (CORBA::is_nil(obj.in())) - { - ACE_DEBUG((LM_DEBUG, - "Could not initialize client interceptor, aborting!\n")); - ACE_OS::exit(1); - } - else - { - codec_factory = IOP::CodecFactory::_narrow(obj.in()); - } - - - IOP::Encoding encoding; - encoding.format = IOP::ENCODING_CDR_ENCAPS; - encoding.major_version = 1; - encoding.minor_version = 2; - - this->codec_ = codec_factory->create_codec(encoding); - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, - "There was an error constructing the " - "ClientScheduler Interceptor\n"); - } - ACE_ENDTRY; -} - - -RTCosScheduling_ClientScheduler_Interceptor::RTCosScheduling_ClientScheduler_Interceptor( - const CORBA::ORB_var orb) : name_("RTCosScheduling_Client_Interceptor") -{ - ACE_TRY_NEW_ENV - { - /// resolve a reference to RT Current - CORBA::Object_var obj = - orb->resolve_initial_references ("RTCurrent" - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - if (CORBA::is_nil(obj.in())) - { - ACE_OS::exit(1); - } - else - { - this->current_ = - RTCORBA::Current::_narrow (obj.in () ACE_ENV_ARG_PARAMETER); - } - ACE_TRY_CHECK; - - obj = - orb->resolve_initial_references("CodecFactory" - ACE_ENV_ARG_PARAMETER); - - // set up the codec factory to create the codec necessary to - // encode the octet stream for the service context - IOP::CodecFactory_var codec_factory; - if (CORBA::is_nil(obj.in())) - { - ACE_DEBUG((LM_DEBUG, - "Could not initialize client interceptor, aborting!\n")); - ACE_OS::exit(1); - } - else - { - codec_factory = IOP::CodecFactory::_narrow(obj.in()); - } - - - IOP::Encoding encoding; - encoding.format = IOP::ENCODING_CDR_ENCAPS; - encoding.major_version = 1; - encoding.minor_version = 2; - - // Create the codec - this->codec_ = codec_factory->create_codec(encoding); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, - "Error in creating Client Interceptor\n"); - } - ACE_ENDTRY; -} - - -void -RTCosScheduling_ClientScheduler_Interceptor::send_request ( - PortableInterceptor::ClientRequestInfo_ptr ri - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableInterceptor::ForwardRequest)) -{ - ACE_UNUSED_ARG(ri); - ACE_TRY - { - - // Get the Corba priority that the activity is currently running at - CORBA::Any the_priority_as_any; - the_priority_as_any <<= - this->current_->the_priority(); - ACE_TRY_CHECK; - - // Set up a service context to hold the priority - IOP::ServiceContext sc; - sc.context_id = IOP::RTCorbaPriority; - - // Convert the priority to an octet stream - // (that is how service contexts send data) - sc.context_data = - ACE_reinterpret_cast( - IOP::ServiceContext::_tao_seq_Octet_context_data &, - *this->codec_->encode(the_priority_as_any)); - ACE_TRY_CHECK; - - // add the service context - ri->add_request_service_context(sc, 0); - ACE_TRY_CHECK; - - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "ERROR - in Client interceptor\n"); - ACE_TRY_THROW (CORBA::INTERNAL ()); - } - ACE_ENDTRY; -} - -} diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.h b/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.h deleted file mode 100644 index d5a216ee469..00000000000 --- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.h +++ /dev/null @@ -1,228 +0,0 @@ -/* -*- C++ -*- */ - -//============================================================================= -/** - * @file RTCosScheduling_ClientScheduler_i.h - * - * $Id$ - * - * @author Matt Murphy <murphym@cs.uri.edu> - */ -//============================================================================= - -#ifndef CLIENT_SCHEDULER_I_H -#define CLIENT_SCHEDULER_I_H - -#include /**/ "ace/pre.h" - -/** - * Note - Before making this file with Makefile.RTCosScheduling, please make - * sure that you first comment out the following line from the - * RTCosSchedulingS.h file: - * //#include "tao/PortableServer/PortableServerS.h" - */ - -#include "ace/Map_T.h" -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#if defined (__BORLANDC__) -#pragma option push -w-rvl -w-rch -w-ccc -w-inl -#endif /* __BORLANDC__ */ - - -#if defined(_MSC_VER) -#if (_MSC_VER >= 1200) -#pragma warning(push) -#endif /* _MSC_VER >= 1200 */ -#pragma warning(disable:4250) -#endif /* _MSC_VER */ - -#include "ace/SString.h" -#include <orbsvcs/RTCosSchedulingC.h> -#include <orbsvcs/RTCosScheduling/RTCosScheduling_export.h> -#include "tao/RTCORBA/Priority_Mapping_Manager.h" -#include "tao/RTCORBA/Linear_Priority_Mapping.h" - - -namespace TAO { - -#ifndef COS_SCHEDULER_ACTIVITY_MAP -#define COS_SCHEDULER_ACTIVITY_MAP - /** - * This typedef is used in RTCosScheduling_ClientScheduler - * to map activity names,stored as an ACE_CString, - * to CORBA priorities - */ - typedef ACE_CString COS_SCHEDULER_ACTIVITY_KEY; - typedef CORBA::Long COS_SCHEDULER_ACTIVITY_VALUE; - - typedef ACE_Map_Manager_Adapter< - COS_SCHEDULER_ACTIVITY_KEY, - COS_SCHEDULER_ACTIVITY_VALUE, - ACE_Noop_Key_Generator<COS_SCHEDULER_ACTIVITY_KEY> > - CosSchedulerActivityMap; -#endif /* ACTIVITY_MAP */ - -#if TAO_HAS_INTERCEPTORS -/** - * @class ClientRequestInterceptor - * - * @brief Simple concrete client request interceptor. - */ -class RTCosScheduling_ClientScheduler_Interceptor - : public PortableInterceptor::ClientRequestInterceptor -{ -public: - - RTCosScheduling_ClientScheduler_Interceptor(); - RTCosScheduling_ClientScheduler_Interceptor(const CORBA::ORB_var orb); - - virtual ~RTCosScheduling_ClientScheduler_Interceptor() { } - /** - * @name Methods Required by the Client Request Interceptor - * Interface - * - * These are methods that must be implemented since they are pure - * virtual in the abstract base class. They are the canonical - * methods required for all client request interceptors. - */ - //@{ - /// Return the name of this ClientRequestInterceptor. - // - virtual char * name (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual void destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual void send_request ( - PortableInterceptor::ClientRequestInfo_ptr ri - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableInterceptor::ForwardRequest)); - - virtual void send_poll ( - PortableInterceptor::ClientRequestInfo_ptr ri - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual void receive_reply ( - PortableInterceptor::ClientRequestInfo_ptr ri - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual void receive_exception ( - PortableInterceptor::ClientRequestInfo_ptr ri - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableInterceptor::ForwardRequest)); - - virtual void receive_other ( - PortableInterceptor::ClientRequestInfo_ptr ri - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException, - PortableInterceptor::ForwardRequest)); - //@} - -private: - - /// The name of the interceptor - const char* name_; - - /// reference to set local priority - RTCORBA::Current_var current_; - - IOP::Codec_var codec_; - -}; -#endif /* TAO_HAS_INTERCEPTORS */ - -/** - * @class RTCosScheduling_ClientScheduler - * - * @brief Used in conjunction with the class ServerScheduler to - * provide RTCORBA 1.0 compliant scheduling - * - * This class provides the framework necessary for a client node - * to retrieve scheduling information from a config file and set - * the local OS priority. - * - */ -class TAO_RTCosScheduling_Export RTCosScheduling_ClientScheduler_i : - public virtual RTCosScheduling::ClientScheduler, - public virtual CORBA::LocalObject -{ - - public: -//@{ - /* - * Constructs a new ClientScheduler object for use on a client - * that wishes to use the RTCORBA 1.0 Scheduling Service. - * - * @param orb The orb - * @param node The name of the node the client resides on - */ - RTCosScheduling_ClientScheduler_i (CORBA::ORB_var orb, - char* node, - char* file); - - ///Destructor - virtual ~RTCosScheduling_ClientScheduler_i (void); - - - /** - * Called by clients to set the local thread priority to - * that specified in the scheduling config file - * - * @param activity_name the name of the activity that signifies - * the desired priority - */ - virtual void schedule_activity ( - const char *activity_name - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC (( - CORBA::SystemException, - RTCosScheduling::UnknownName)); -//@} - - private: - /// The map to match activity names with corba priorities - CosSchedulerActivityMap activity_map_; - - /// RT Current, to change the priority of the thread - RTCORBA::Current_var current_; - - /// RT Corba Priority Mapping - RTCORBA::PriorityMapping *pm_; - -#if TAO_HAS_INTERCEPTORS - /// The Server Interceptor that handles the PCP control - RTCosScheduling_ClientScheduler_Interceptor *client_interceptor_; -#endif /* TAO_HAS_INTERCEPTORS */ - - int tasks(const char *node_name, - const char *file_name, - CosSchedulerActivityMap *activity_map); - -}; - -} - -#if defined (__ACE_INLINE__) -#include "RTCosScheduling_ClientScheduler_i.i" -#endif /* __ACE_INLINE__ */ - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -#pragma warning(pop) -#endif /* _MSC_VER */ - -#if defined (__BORLANDC__) -#pragma option pop -#endif /* __BORLANDC__ */ - - - -#include /**/ "ace/post.h" -#endif /* CLIENT_SCHEDULER_I */ diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.i b/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.i deleted file mode 100644 index 3f30182575f..00000000000 --- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.i +++ /dev/null @@ -1,64 +0,0 @@ -/* -*- C++ -*- */ - -//============================================================================= -/** - * @file RTCosScheduling_ClientScheduler_i.i - * - * $Id$ - * - * @author Matt Murphy <murphym@cs.uri.edu> - */ -//============================================================================= - -ACE_INLINE char * -TAO::RTCosScheduling_ClientScheduler_Interceptor::name ( - ACE_ENV_SINGLE_ARG_DECL_NOT_USED) -ACE_THROW_SPEC ((CORBA::SystemException)) -{ -return CORBA::string_dup(this->name_); -} - -ACE_INLINE void -TAO::RTCosScheduling_ClientScheduler_Interceptor::destroy ( - ACE_ENV_SINGLE_ARG_DECL_NOT_USED) -ACE_THROW_SPEC ((CORBA::SystemException)) -{ -} - -ACE_INLINE void -TAO::RTCosScheduling_ClientScheduler_Interceptor::send_poll ( - PortableInterceptor::ClientRequestInfo_ptr ri - ACE_ENV_ARG_DECL_NOT_USED) -ACE_THROW_SPEC ((CORBA::SystemException)) -{ - ACE_UNUSED_ARG(ri); -} - -ACE_INLINE void -TAO::RTCosScheduling_ClientScheduler_Interceptor::receive_reply ( - PortableInterceptor::ClientRequestInfo_ptr ri - ACE_ENV_ARG_DECL_NOT_USED) -ACE_THROW_SPEC ((CORBA::SystemException)) -{ - ACE_UNUSED_ARG(ri); -} - -ACE_INLINE void -TAO::RTCosScheduling_ClientScheduler_Interceptor::receive_exception ( - PortableInterceptor::ClientRequestInfo_ptr ri - ACE_ENV_ARG_DECL_NOT_USED) -ACE_THROW_SPEC ((CORBA::SystemException, - PortableInterceptor::ForwardRequest)) -{ - ACE_UNUSED_ARG(ri); -} - -ACE_INLINE void -TAO::RTCosScheduling_ClientScheduler_Interceptor::receive_other ( - PortableInterceptor::ClientRequestInfo_ptr ri - ACE_ENV_ARG_DECL_NOT_USED) -ACE_THROW_SPEC ((CORBA::SystemException, - PortableInterceptor::ForwardRequest)) -{ - ACE_UNUSED_ARG(ri); -} diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.cpp b/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.cpp deleted file mode 100644 index d7ff04632eb..00000000000 --- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.cpp +++ /dev/null @@ -1,531 +0,0 @@ -/* -*- C++ -*- */ - -//============================================================================= -/** - * @file RTCosScheduling_PCP_Manager.cpp - * - * $Id$ - * - * @author Matt Murphy <murphym@cs.uri.edu> - */ -//============================================================================= - -#include "RTCosScheduling_PCP_Manager.h" - -#if !defined (__ACE_INLINE__) -#include "RTCosScheduling_PCP_Manager.i" -#endif /* __ACE_INLINE__ */ - - - -namespace TAO { - -struct -CosSchedulingLockNode *CosSchedulingLockNode::next() -{ - /// INT_MAX is a special value indicating the end of a list - if (this->next_offset_ == INT_MAX) - { - return 0; - } - else - { - return ACE_reinterpret_cast(CosSchedulingLockNode *, - (ACE_reinterpret_cast(int, this) + this->next_offset_) - ); - } -} - -void -CosSchedulingLockNode::next(struct CosSchedulingLockNode *next_lock) -{ - /// INT_MAX is a special value indicating the end of a list - if (next_lock == 0) - { - this->next_offset_ = INT_MAX; - } - else - { - this->next_offset_ = - (ACE_reinterpret_cast(int, next_lock) - - ACE_reinterpret_cast(int, this)); - } -} - -const CosSchedulingLockNode& CosSchedulingLockNode::operator=(const CosSchedulingLockNode& L) -{ - this->threadID_ = L.threadID_; - this->priority_ceiling_ = L.priority_ceiling_; - this->priority_ = L.priority_; - this->elevated_priority_ = L.elevated_priority_; - - return *this; -} - -CosSchedulingLockList::CosSchedulingLockList(CosSchedulingLockNode *lock_array, - int size, - ACE_SYNCH_MUTEX *mutex) -{ - ACE_TRY_NEW_ENV - { - /* - * The pointers to the beginnings of the lists must be globally visible, - * so I have chosen to use the first three locks in the array. - * lock_array[0].next() (== free_->next() ) -> start of free list - * lock_array[1].next() (== granted_->next()) -> start of granted list - * lock_array[2].next() (== pending_->next()) -> start of pending list - */ - - /// start of the free list - lock_array[0].next(&lock_array[3]); - - /// start with an empty granted list - lock_array[1].next(0); - - /// start with an empty pending list - lock_array[2].next(0); - - /// initialize the free list (link together the elements in the array) - for (int i = 3; i < (size - 1); ++i) - { - lock_array[i].next(&lock_array[i + 1]); - ACE_NEW_THROW_EX(lock_array[i].condition_, - ACE_Thread_Condition<ACE_Thread_Mutex>(*mutex), - CORBA::NO_MEMORY()); - } - ACE_TRY_CHECK; - lock_array[size - 1].next(0); /// terminate the free list - - - /// Update the positions - this->free_ = &lock_array[0]; - this->granted_ = &lock_array[1]; - this->pending_ = &lock_array[2]; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, - "Error in generating Locklist on ServerScheduler\n"); - } - ACE_ENDTRY; -} - -void -CosSchedulingLockList::destroy(int size) -{ - for (int i = 3; i < size; ++i) - { - this->free_[i].condition_->remove(); - delete &free_[i].condition_; - } -} - -int -CosSchedulingLockList::grant_lock(const CosSchedulingLockNode& L) -{ - if (this->free_->next() == 0) - { - return 0; /// no free nodes left - } - /// take a node from the free list - CosSchedulingLockNode *new_lock = this->free_->next(); - this->free_->next(this->free_->next()->next()); - *new_lock = L; - - if ((this->granted_->next() == 0) - || (this->granted_->next()->priority_ceiling_ <= L.priority_ceiling_)) - { - /// insert at the head of the list - new_lock->next(this->granted_->next()); - this->granted_->next(new_lock); - } - else - { - /// find the proper location to insert - /// the new lock (ordered by priority ceiling) - CosSchedulingLockNode *current_lock = granted_->next(); - while ((current_lock->next() != 0) - && (current_lock->next()->priority_ceiling_ > L.priority_ceiling_)) - { - current_lock = current_lock->next(); - } - new_lock->next(current_lock->next()); - current_lock->next(new_lock); - } - - return 1; -} - -int -CosSchedulingLockList::defer_lock(const CosSchedulingLockNode& L, - ACE_SYNCH_MUTEX & mutex) -{ - if (this->free_->next() == 0) - { - return 0; /// no free nodes left - } - CosSchedulingLockNode *new_lock = free_->next(); - this->free_->next(free_->next()->next()); - *new_lock = L; - - if ((this->pending_->next() == 0) - ||(this->pending_->next()->priority_ <= L.priority_)) - { - /// insert at the head of the list - new_lock->next(this->pending_->next()); - this->pending_->next(new_lock); - } - else - { - /// find the proper location to insert the new lock - CosSchedulingLockNode *current_lock = pending_->next(); - while ((current_lock->next() != 0) - && (current_lock->next()->priority_ceiling_ > L.priority_ceiling_)) - { - current_lock = current_lock->next(); - } - new_lock->next(current_lock->next()); - current_lock->next(new_lock); - } - - - if (new_lock->condition_) - { - new_lock->condition_->wait(mutex); - return 1; - } - else - { - return 0; - } -} - - -int -CosSchedulingLockList::release_lock(CosSchedulingLockNode& L) -{ - if (this->granted_->next() == 0) - { - return 0; /// empty list of granted locks - } - - if (this->granted_->next()->threadID_ == L.threadID_) - { - /// remove the lock at the head of the list and put it on the free list - - /// Set the Lock to the next one in the granted list - L = *(this->granted_->next()); - - /// (sets next offset from previous statement) - L.next(this->granted_->next()->next()); - - /// set the next granted's next one to be the next free one - this->granted_->next()->next(this->free_->next()); - - /// Set the next free one to be the next granted one - this->free_->next(this->granted_->next()); - - /// Set the next granted on to be the Lock's next one - this->granted_->next(L.next()); - - /// Set the Locks next on to NULL - L.next(0); - - return 1; - } - - /// find the lock to remove - CosSchedulingLockNode *current_lock = granted_->next(); - while ((current_lock->next() != 0) - && (current_lock->next()->threadID_ != L.threadID_)) - { - current_lock = current_lock->next(); - } - if (current_lock->next() != 0) - { - /// removes lock and prepends to the free list, as above - L = *(current_lock->next()); - L.next(current_lock->next()->next()); - current_lock->next()->next(this->free_->next()); - this->free_->next(current_lock->next()); - current_lock->next(L.next()); - L.next(0); - return 1; - } - - return 0; -} - -int -CosSchedulingLockList::remove_deferred_lock(CosSchedulingLockNode& L) -{ - if (this->pending_->next() == 0) - { - return 0; /// empty list of pending locks - } - - /// take pending lock off the head of the list - /// (highest priority request) and add to the free list - L = *(this->pending_->next()); - L.next(this->pending_->next()->next()); - this->pending_->next()->next(free_->next()); - this->free_->next(this->pending_->next()); - this->pending_->next(L.next()); - L.next(0); - return 1; -} - -PCP_Manager::PCP_Manager(CosSchedulingLockList *locks, - ACE_SYNCH_MUTEX *mutex, - RTCORBA::Current_var current) -: locks_(locks), - mutex_(mutex), - current_(current) -{ - /// Get the thread ID - this->threadID_ = (ACE_OS::getpid() << 16) + ACE_Thread::self(); -} - -void -PCP_Manager::lock(int priority_ceiling, int priority) -{ - ACE_TRY_NEW_ENV - { - - /// we do not want the thread to be pre-empted inside - /// this critical section, so we - /// will set its priority to the highest possible - // This is not completely necessary since the server should be running - // at RTCORBA::maxPriority - this->current_->the_priority(RTCORBA::maxPriority); - this->mutex_->acquire(); - ACE_TRY_CHECK; - - /// create a structure to store my own lock request - CosSchedulingLockNode MyLock; - MyLock.threadID_ = this->threadID_; - MyLock.priority_ceiling_ = MyLock.elevated_priority_ = priority_ceiling; - MyLock.priority_ = priority; - /// Start by assuming we don't have the lock then go look for it - int HaveLock = 0; - while (!HaveLock) - { - /// retrieve the highest priority ceiling from the list - CosSchedulingLockNode *highest_lock = this->locks_->highest_ceiling(); - int prio_ceiling; - /// check to see if are at the highest priority, - /// if so set the priority ceiling - if (highest_lock) - { - prio_ceiling = highest_lock->priority_ceiling_; - } - else - { - prio_ceiling = -1; - } - - /// if I hold the highest ceiling or my priority is higher than the - /// highest ceiling, just get the lock - if ((highest_lock == 0) || - (highest_lock->threadID_ == this->threadID_) || - (highest_lock->priority_ceiling_ < priority)) - { - /// Try and grant the lock, if it is not granted, - /// then there are unfortunately no more lock nodes - if (!this->locks_->grant_lock (MyLock)) - { - ACE_ERROR ((LM_ERROR, - "Fatal error--out of lock nodes!!!")); - } - /// Lock obtained from grant_lock, don't loop again - HaveLock = 1; - } - else - { - /// There is another lock out there active, put this one - /// in the list of pending locks - if (this->locks_->defer_lock(MyLock, *this->mutex_)) - { - /// done waiting for it, remove it from the pending - /// lock list, will try again to grant on next loop - /// iteration - this->locks_->remove_deferred_lock (MyLock); - } - else - { - ACE_ERROR((LM_ERROR, - "Error in deferring lock\n")); - } - ACE_TRY_CHECK; - } - } - - /// remove mutex on the lock list - this->mutex_->release(); - ACE_TRY_CHECK; - - /// at this point we have the right to set the OS priority - /// Do so at the priority ceiline. - this->current_->the_priority(priority_ceiling); - - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, - "Error in locking the node for ServerScheduler\n"); - } - ACE_ENDTRY; -} - -void PCP_Manager::release_lock() -{ - ACE_TRY_NEW_ENV - { - /// To prevent pre-emption in the critical section, - /// which could lead to unbounded blocking - this->current_->the_priority(RTCORBA::maxPriority); - - /// set up the mutex - this->mutex_->acquire(); - ACE_TRY_CHECK; - - /// remove the lock node from the list of locks - CosSchedulingLockNode L; - L.threadID_ = this->threadID_; - this->locks_->release_lock(L); - - /// Done with the list, release the mutex - this->mutex_->release(); - ACE_TRY_CHECK; - - /// Let the highest priority lock signal the condition variable - CosSchedulingLockNode *waiter = this->locks_->highest_priority(); - if (waiter) - { - waiter->condition_->signal(); - } - ACE_TRY_CHECK; - - /// We do not need to restore priority because we have already set this - // thread to wait at RTCORBA::maxPriority at the start of this method - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, - "Error in unlocking the node for ServerScheduler\n"); - } - ACE_ENDTRY; -} - - -PCP_Manager_Factory::PCP_Manager_Factory(char *shared_file) -{ - ACE_TRY_NEW_ENV - { -#if !defined (ACE_LACKS_MMAP) - char temp_file[MAXPATHLEN + 1]; - - /// Get the temporary directory - if (ACE::get_temp_dir (temp_file, - MAXPATHLEN - ACE_OS_String::strlen(shared_file)) - == -1) - ACE_ERROR ((LM_ERROR, - "Temporary path too long\n")); - ACE_TRY_CHECK; - - /// Add the filename to the end - ACE_OS_String::strcat (temp_file, shared_file); - - /// Store in the global variable. - this->shm_key_ = temp_file; - -#ifndef ACE_LACKS_MKSTEMP - if (ACE_OS::mkstemp (this->shm_key_) == 0 -#else - char *new_key = ACE_OS::mktemp (this->shm_key_); - if (ACE_OS::fopen(new_key, "w") != NULL -#endif /* ACE_LACKS_MKSTEMP */ - || (ACE_OS::unlink (this->shm_key_) == -1 -#ifndef ACE_HAS_WINCE - && errno == EPERM -#endif /* ACE_HAS_WINCE */ - )) - ACE_ERROR ((LM_ERROR, - "(%P|%t) %p\n", - this->shm_key_)); - ACE_TRY_CHECK; - -#else /* !ACE_LACKS_MMAP */ - ACE_ERROR ((LM_INFO, - "mmap is not supported on this platform\n")); -#endif /* !ACE_LACKS_MMAP */ - - /// determine space requirements for the lock list - u_int CosSchedulingLockList_space = - LOCK_ARRAY_SIZE * sizeof (CosSchedulingLockNode); - - /// allocate space in shared memory for size of the lock list - int result = - this->mem_.open(this->shm_key_, CosSchedulingLockList_space); - - /// Make sure shared memory CosSchedulingLockList is ok, scheduling - /// service cannot run without it. - if (result == -1) - { - ACE_ERROR((LM_ERROR, - "Error in creating the shared memory segment to hold " - "Lock information, aborting ServerScheduler.\n")); - ACE_OS::exit(1); - } - - ACE_CHECK; - - /// Make the shared memory a place for a lock list - this->lock_array_ = ACE_static_cast(CosSchedulingLockNode *, - this->mem_.malloc(CosSchedulingLockList_space)); - if (this->lock_array_ == 0) - { - ACE_ERROR((LM_ERROR, - "Error in creating Lock Array, locking impossible.\n")); - } - ACE_TRY_CHECK; - - /// get the pointer to the list of locks and - /// construct a lock list manager object - if (this->lock_array_ == 0) - { - ACE_ERROR((LM_ERROR, - "No Pointer for LockArray, aborting\n")); - ACE_OS::exit(1); - } - else - { - /// construct the new lock list in shared memory - ACE_NEW_THROW_EX(this->locks_, - CosSchedulingLockList(this->lock_array_, - LOCK_ARRAY_SIZE, - &this->mutex_), - CORBA::NO_MEMORY() - ); - ACE_TRY_CHECK; - } - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, - "Error in Setting lock factory for ServerScheduler\n"); - } - ACE_ENDTRY; -} - -PCP_Manager_Factory::~PCP_Manager_Factory() -{ - /// throw out all the old Locks - this->locks_->destroy(LOCK_ARRAY_SIZE); - /// and delete the shared memory - this->mem_.remove(); - delete this->locks_; -} - -} diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.h b/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.h deleted file mode 100644 index ee789204bd5..00000000000 --- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.h +++ /dev/null @@ -1,314 +0,0 @@ -/* -*- C++ -*- */ - -//============================================================================= -/** - * @file RTCosScheduling_PCP_Manager.h - * - * $Id$ - * - * @author Matt Murphy <murphym@cs.uri.edu> - * @author based upon work by Greg Cooper - * @author University of Rhode Island - */ -//============================================================================= - -#ifndef PCP_MANAGER_H -#define PCP_MANAGER_H -#include /**/ "ace/pre.h" - -#include "ace/Synch.h" -#if !defined (ACE_LACKS_PRAGMA_ONCE) -#pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "ace/Shared_Memory_MM.h" -#include "ace/Map_T.h" -#include "ace/SString.h" -#include "tao/RTCORBA/RTCORBA.h" - - -#if defined(_MSC_VER) -#if (_MSC_VER >= 1200) -#pragma warning(push) -#endif /* _MSC_VER >= 1200 */ -#pragma warning(disable:4250) -#endif /* _MSC_VER */ - -#if defined (__BORLANDC__) -#pragma option push -w-rvl -w-rch -w-ccc -w-inl -#endif /* __BORLANDC__ */ - - - -namespace TAO { - - -#if !defined (LOCK_ARRAY_SIZE) - #define LOCK_ARRAY_SIZE 1024 -#endif /* LOCK_ARRAY_SIZE */ - -#ifndef COS_SCHEDULING_CONTAINERS -#define COS_SCHEDULING_CONTAINERS - /* - * ResourceCeilingMap - * - * This typedef is used in the RTCORBA 1.0 Scheduling Service to - * map names of resources on a server with priority ceilings. - */ - typedef ACE_CString COS_SCHEDULING_RESOURCE_KEY; - typedef int COS_SCHEDULING_RESOURCE_VALUE; - - typedef ACE_Map_Manager_Adapter< - COS_SCHEDULING_RESOURCE_KEY, - COS_SCHEDULING_RESOURCE_VALUE, - ACE_Noop_Key_Generator<COS_SCHEDULING_RESOURCE_KEY> > CosSchedulingResourceMap; -#endif /* COS_SCHEDULING_CONTAINERS */ - - -/** -* @class CosSchedulingLockList -* -* @brief This program provides an abstract mechanism -* for the PCP_Manager class to store its lists of locks in -* shared memory. It provides an efficient allocation and -* retrieval system and uses a pseudo-linked-list based on -* offsets (rather than absolute pointers) which allows it -* to work regardless of where it is mapped in a process's -* address space. This means it can be used in a shared -* memory segment. -* -*/ -struct CosSchedulingLockNode -{ - /// unique ID of the thread owning the lock - int threadID_; - - /// the lock's priority ceiling - int priority_ceiling_; - - /// the thread's original global priority - int priority_; - - /// the thread's elevated priority - int elevated_priority_; - - /// offset to the next lock in the list - int next_offset_; - - /// Condition Variable to wait on Mutex - ACE_Thread_Condition<ACE_Thread_Mutex> *condition_; - - /** - * Translates the offset to the next lock - * to a pointer and returns it - */ - struct CosSchedulingLockNode *next(); - - /** - * Translates the pointer into an offset and - * stores it in the structure - */ - void next(struct CosSchedulingLockNode *Next); - - /** - * Copies the relevant fields while preserving those which should not be - *modified - */ - const CosSchedulingLockNode& operator=(const CosSchedulingLockNode& L); - -}; - -class CosSchedulingLockList -{ - public: - /** - * Creates a CosSchedulingLockList structure using the storage in lock_array: - * if Init is 1, the array is initialized to indicate that - * none of the nodes are in use - * - * @param lock_array The shared memory space for the CosSchedulingLockList - * @param size The size of the lock list - * @param mutex the mutex that guards the CosSchedulingLockList - */ - CosSchedulingLockList(CosSchedulingLockNode *lock_array, int size, ACE_Thread_Mutex *mutex); - - /** - * Calls ACE_Thread::remove() on all conditions in the list; - * should only be called when SchedInit terminates - * (may not be necessary then) - * - * @param size the number of locks to destroy, starting at head - */ - void destroy(int size); - - /** - * Adds L to the granted list, if space is available - * (returns success); the list of granted locks is kept sorted - * by priority-ceiling so that the highest ceiling can - * be found quickly at the head - * - * @param L the CosSchedulingLockNode to add to the granted list. - */ - int grant_lock(const CosSchedulingLockNode& L); - - /** - * Adds L to the pending list, if space is available - * (returns success); the list of pending locks is kept - * sorted by priority so that the highest priority thread - * awaiting a lock will be at the head; returns pointer to - * condition variable upon success, NULL otherwise - * - * @param L The lock to add to the pending list. - * @param mutex The mutex that guards the locks. - */ - int defer_lock(const CosSchedulingLockNode& L, - ACE_Thread_Mutex &mutex); - - /** - * Removes a node from the granted lock list whose threadID_ - * matches that of L, replacing L with the removed lock - * - * @param L released lock - */ - int release_lock(CosSchedulingLockNode& L); - - /** - * Removes the first node from the pending lock list, - * replacing L with the removed lock - * - * @param L Reference to the lock that is removed from pending - */ - int remove_deferred_lock(CosSchedulingLockNode& L); - - /** - * Returns a pointer to the node containing the highest ceiling (the - * first node in the list of held locks) - */ - CosSchedulingLockNode *highest_ceiling(); - - - /** - * Returns a pointer to the node with the highest priority - * (from the first node in the list of pending locks - */ - CosSchedulingLockNode *highest_priority(); - - private: - - /// A list of free locks - CosSchedulingLockNode *free_; - - /// A list of Free locks - CosSchedulingLockNode *granted_; - - /// A list of pending locks awaiting to be locked - CosSchedulingLockNode *pending_; - -}; - - -/** -* @class PCP_Manager -* -* @brief PCP_Manager handles Priority Ceiling Control Protocol for the -* RTCORBA 1.0 ServerScheduler -* Each thread needs a PCP_Manager object: these are created by the -* PCP_Manager_Factory object, of which only one is needed per process -* -*/ -class PCP_Manager -{ -public: - - /** - * Initializes a PCP_Manager object with the given lists, mutex, - * condition variable, and priority mapper. - * - * @param locks A list of the locks to use in the PCP_Manager. - * @param mutex The mutex to guard the locks. - */ - PCP_Manager(CosSchedulingLockList *locks, - ACE_SYNCH_MUTEX *mutex, - RTCORBA::Current_var current); - - /** - * Acquires a lock on a shared resource using the - * priority ceiling protocol - * - * @param PriorityCeiling The priority ceiling of the lock - * @param priority The priority to lock at. - */ - void lock(int PriorityCeiling, int Priority); - - /** - * Releases a lock previously granted with lock() - */ - void release_lock(); - - /** - * Returns the mThreadID data member - */ - int threadID(); - - private: - int threadID_; /// ID of thread owning this object - CosSchedulingLockList *locks_; /// combined list of locks - ACE_SYNCH_MUTEX *mutex_; /// Mutex to guard lock list - RTCORBA::Current_var current_; /// reference to set local priority - -}; - -/** -* @class PCP_Manager_Factory -* -* @brief Creates PCP_Managers. Each process needs only one of -* these objects: it can create a PCP_Manager object for each -* thread as need arises. -*/ -class PCP_Manager_Factory -{ -public: - - /** - * Initializes a PCP_Manager_Factory: each process should only - * do this once. It attaches a shared memory segment and retrieves - * pointers to the granted and pending lock lists as well as - * the mutex and condition variable. - */ - PCP_Manager_Factory(char *shared_file); - - ~PCP_Manager_Factory(); - - /** - * Creates a new PCP manager object using the lists and - * synchronization objects found in shared memory. - */ - PCP_Manager New_PCP_Manager(RTCORBA::Current_var current); - - private: - CosSchedulingLockList *locks_; /// lists of granted and pending locks - ACE_SYNCH_MUTEX mutex_; /// The mutex for locking the lock list - ACE_Shared_Memory_MM mem_; /// shared memory space - char *shm_key_; /// Key for shared memory - CosSchedulingLockNode *lock_array_; /// The lock list - -}; - - -} - -#if defined (__ACE_INLINE__) -#include "RTCosScheduling_PCP_Manager.i" -#endif /* __ACE_INLINE__ */ - - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -#pragma warning(pop) -#endif /* _MSC_VER */ - -#if defined (__BORLANDC__) -#pragma option pop -#endif /* __BORLANDC__ */ - -#include /**/ "ace/post.h" -#endif /* PCP_MANAGER_H */ diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.i b/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.i deleted file mode 100644 index ec0aa3de003..00000000000 --- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.i +++ /dev/null @@ -1,55 +0,0 @@ -/* -*- C++ -*- */ - -//============================================================================= -/** - * @file RTCosScheduling_PCP_Manager.i - * - * $Id$ - * - * @author Matt Murphy <murphym@cs.uri.edu> - * @author based upon work by Greg Cooper - * @author University of Rhode Island - */ -//============================================================================= - -/** - * Returns a pointer to the node containing the highest ceiling (the - * first node in the list of held locks) - */ -ACE_INLINE TAO::CosSchedulingLockNode * -TAO::CosSchedulingLockList::highest_ceiling() -{ - return this->granted_->next(); -} - - -/** - * Returns a pointer to the node with the highest priority - * (from the first node in the list of pending locks - */ -ACE_INLINE TAO::CosSchedulingLockNode * -TAO::CosSchedulingLockList::highest_priority() -{ - return this->pending_->next(); -} - - -/** - * Returns the mThreadID data member - */ -ACE_INLINE int -TAO::PCP_Manager::threadID() -{ - return this->threadID_; -} - - -/** - * Creates a new PCP manager object using the lists and - * synchronization objects found in shared memory. - */ -ACE_INLINE TAO::PCP_Manager -TAO::PCP_Manager_Factory::New_PCP_Manager(RTCORBA::Current_var current) -{ - return TAO::PCP_Manager(this->locks_, &this->mutex_, current); -} diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.cpp b/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.cpp deleted file mode 100644 index 38a0c267bda..00000000000 --- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.cpp +++ /dev/null @@ -1,748 +0,0 @@ -/* -*- C++ -*- */ - -//============================================================================= -/** - * @file RTCosScheduling_ServerScheduler_i.cpp - * - * $Id$ - * - * @author Matt Murphy <murphym@cs.uri.edu> - */ -//============================================================================= - -#include "RTCosScheduling_ServerScheduler_i.h" - -#if !defined (__ACE_INLINE__) -#include "RTCosScheduling_ServerScheduler_i.i" -#endif /* __ACE_INLINE__ */ - - - -#include "tao/ORB_Core.h" -#include "tao/PortableServer/POA.h" -#include "tao/RTCORBA/Linear_Priority_Mapping.h" -#include "tao/RTCORBA/Priority_Mapping_Manager.h" -#include "tao/RTPortableServer/RTPortableServer.h" - - -namespace TAO { - -RTCosScheduling_ServerScheduler_i:: - RTCosScheduling_ServerScheduler_i (char *node, - char *file, - char *shared_file, - int numthreads - ) -: num_threads_(numthreads), - shared_file_(shared_file) -{ - /// Read the Resources and ceilings from the config file - /// and put them into the resource_map_ - if ( !ACE_OS::strcmp(file,"") || file == NULL || !TAO_HAS_INTERCEPTORS) - { - ACE_DEBUG((LM_DEBUG, - "Server will not schedule object execution " - "(ServerScheduler interceptor not installed)")); - } - else if (!resources(node, file, &this->resource_map_)) - { - ACE_OS::exit(1); - } -} - - -// Implementation skeleton destructor -RTCosScheduling_ServerScheduler_i::~RTCosScheduling_ServerScheduler_i (void) -{ - delete this->pm_; -} - - -int -RTCosScheduling_ServerScheduler_i::configure_ORB(TAO_ORB_Core *orb_core) -{ - ACE_TRY_NEW_ENV - { - - // Get an object reference to orb from the orb core - CORBA::ORB_ptr orb = orb_core->orb(); - -#if TAO_HAS_INTERCEPTORS - /// Construct the interceptor that the Scheduling service uses - RTCosScheduling_ServerScheduler_Interceptor *server_interceptor = 0;; - ACE_NEW_THROW_EX(server_interceptor, - RTCosScheduling_ServerScheduler_Interceptor(orb, - this->shared_file_, - &this->object_name_map_, - &this->resource_map_), - CORBA::NO_MEMORY()); - ACE_TRY_CHECK; - - /// First, get a list of all interceptors currently registered - TAO_ServerRequestInterceptor_List::TYPE &interceptors = - orb_core->server_request_interceptors(); - - - /// Now check to see if the ServerScheduler Interceptor has already - /// been registered - u_int i; - u_int unregistered = 1; - for (i = 0; i < interceptors.size() && unregistered; ++i) - { - if (ACE_OS::strncmp( - interceptors[i]->_interface_repository_id (), - server_interceptor->_interface_repository_id(), - ACE_OS::strlen( - server_interceptor->_interface_repository_id())-2) - == 0) - { - /// The interceptor is already registered, - /// don't try to register it again - unregistered = 0; - } - } - - if (unregistered) - { - orb_core->add_interceptor(server_interceptor - ACE_ENV_ARG_PARAMETER); - } -#endif /* TAO_HAS_INTERCEPTORS */ - - /// Resolve a reference to the Linear Priority Mapping Manager - CORBA::Object_var rt_obj = - orb->resolve_initial_references("PriorityMappingManager" - ACE_ENV_ARG_PARAMETER); - if (CORBA::is_nil(rt_obj.in())) - { - ACE_DEBUG((LM_DEBUG, - "Priority Mapping Manager not available, " - "RT not used on server!\n")); - return 0; - } - RTCORBA::PriorityMappingManager_var mapping_manager = - RTCORBA::PriorityMappingManager::_narrow(rt_obj.in() - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - /// Create the Linear Priority Mapping Manager - ACE_NEW_THROW_EX(this->pm_, - TAO_Linear_Priority_Mapping( - ACE_SCHED_FIFO), - CORBA::NO_MEMORY()); - // WHERE the parameter is one of SCHED_OTHER, SCHED_FIFO, or SCHED_RR - - mapping_manager->mapping(this->pm_); - ACE_TRY_CHECK; - - } - ACE_CATCHANY - { - ACE_ERROR((LM_ERROR, "Could not configure the orb")); - ACE_OS::exit(1); - } - ACE_ENDTRY; - return 1; -} - - -::PortableServer::POA_ptr RTCosScheduling_ServerScheduler_i::create_POA ( - PortableServer::POA_ptr parent, - const char * adapter_name, - PortableServer::POAManager_ptr a_POAManager, - const CORBA::PolicyList & policies) - ACE_THROW_SPEC (( CORBA::SystemException - , PortableServer::POA::AdapterAlreadyExists - , PortableServer::POA::InvalidPolicy)) -{ - ACE_TRY_NEW_ENV - { - // We should hopefully be using more than one thread -#if defined (ACE_HAS_THREADS) - u_int has_threads = 2; -#else - u_int has_threads = 1; -#endif /* ACE_HAS_THREADS */ - - /// Get the ORB core from the POA Manager - TAO_POA *tao_poa = parent->_tao_poa_downcast(); - TAO_ORB_Core &orb_core = tao_poa->orb_core(); - - /// configure the orb (linear mapping, register interceptor, etc.) - configure_ORB(&orb_core); - - /// Get an object reference to orb from the orb core - CORBA::ORB_ptr orb = orb_core.orb(); - - /// Now resolve a reference to the Real Time ORB - CORBA::Object_var rt_obj = - orb->resolve_initial_references("RTORB" - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - if (CORBA::is_nil(rt_obj.in())) - { - ACE_DEBUG((LM_DEBUG, - "RTORB not available, " - "not using RT on the server!\n")); - return 0; - } - - /// Get the reference to the RT ORB - RTCORBA::RTORB_var rt_orb = - RTCORBA::RTORB::_narrow (rt_obj.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil(rt_orb.in ())) - { - ACE_DEBUG((LM_DEBUG, - "Could not initialize orb for the server interceptor, " - "RT will not be used!\n")); - return 0; - } - - - // Copy the non realtime policy list - CORBA::PolicyList poa_policy_list = policies; - poa_policy_list.length (policies.length()+has_threads); - - /// Set the server to run at max priority so it will immediately - /// process intercepts and place new requests into the approprate queue - poa_policy_list[policies.length()] = - rt_orb->create_priority_model_policy ( - RTCORBA::SERVER_DECLARED, - RTCORBA::maxPriority - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - // Set up the threadpool -#if defined (ACE_HAS_THREADS) - CORBA::ULong stacksize = 0; - - /// ideally 1, but not implemented in TAO. This is fine as long - /// the system is not overloaded and can accept all requests - CORBA::Boolean allow_request_buffering = 0; - - // ideally max_concurrent - num_threads_, but no request buffer in TAO - CORBA::ULong max_buffered_requests = 0; - - /// TAO does not have, nor plan to implement, request buffering - CORBA::ULong max_request_buffer_size = 0; - - /// This comes from the model of the system - CORBA::ULong static_threads = this->num_threads_; - - CORBA::ULong dynamic_threads = 0; - - /// Set it to max so there will be no priority inversions - /// while the request is accepted - CORBA::ULong default_thread_priority = RTCORBA::maxPriority; - - /// Create the threadpool the server uses to execute requests - RTCORBA::ThreadpoolId threadpool = - rt_orb->create_threadpool (stacksize, - static_threads, - dynamic_threads, - default_thread_priority, - allow_request_buffering, - max_buffered_requests, - max_request_buffer_size - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - poa_policy_list[policies.length()+1] = - rt_orb->create_threadpool_policy (threadpool - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; -#endif /* ACE_HAS_THREADS */ - - - /// Create the RT POA - PortableServer::POA_var poa = - parent->create_POA (adapter_name, - a_POAManager, - poa_policy_list - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - RTPortableServer::POA_var rt_poa = - RTPortableServer::POA::_narrow(poa.in() - ACE_ENV_ARG_PARAMETER); - - /// return the reference to the RT POA - return rt_poa.in(); - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, - "ERROR: Could not create a Scheduling Service POA\n"); - return parent; - } - ACE_ENDTRY; - return parent; -} - -void -RTCosScheduling_ServerScheduler_i::schedule_object ( - CORBA::Object_ptr obj, - const char * name - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException - , RTCosScheduling::UnknownName)) -{ - /// Check and see if the object name is in the resource map, - /// if it is, then there is a ceiling for it and we can add it to the - /// object name map. If there is no name in the resource map, then there - /// is no valid ceiling for it, throw an UnknownName exception - if (this->resource_map_.find(name) == -1) - { - ACE_THROW (RTCosScheduling::UnknownName()); - } - else - { - this->object_name_map_.rebind(obj, name); - ACE_CHECK; - } -} - - - -#if TAO_HAS_INTERCEPTORS -RTCosScheduling_ServerScheduler_Interceptor::RTCosScheduling_ServerScheduler_Interceptor( - CORBA::ORB_ptr orb, - char *shared_file, - CosSchedulingObjectMap *ObjectMap, - CosSchedulingResourceMap *resourceMap) -: name_("RTCosScheduling_ServerScheduler_Interceptor"), - orb_(orb), - object_name_map_(ObjectMap), - resource_map_(resourceMap) -{ - ACE_TRY_NEW_ENV - { - // Create a new Priority Ceiling protocol manager factory - ACE_NEW_THROW_EX(this->PCP_factory_, - PCP_Manager_Factory(shared_file), - CORBA::NO_MEMORY()); - ACE_CHECK; - - - /// Now resolve a reference to the Real Time ORB - CORBA::Object_var obj = - this->orb_->resolve_initial_references("RTORB" - ACE_ENV_ARG_PARAMETER); - RTCORBA::RTORB_var rt_orb; - ACE_TRY_CHECK; - if (CORBA::is_nil(obj.in ())) - { - ACE_DEBUG((LM_DEBUG, - "RTORB not available, " - "RT ServerScheduler not used!\n")); - return; - } - else - { - rt_orb =RTCORBA::RTORB::_narrow (obj.in () - ACE_ENV_ARG_PARAMETER); - } - - // Now get a reference to the RTCurrent - // for the PCP manager to control - obj = this->orb_->resolve_initial_references ("RTCurrent" - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - if (CORBA::is_nil(obj.in())) - { - ACE_DEBUG((LM_DEBUG, - "RTCurrent not available, " - "RT ServerScheduler not used!\n")); - return; - } - else - { - this->current_ = - RTCORBA::Current::_narrow (obj.in () - ACE_ENV_ARG_PARAMETER); - } - - // Now get a reference to the codec factory to create a codec that will - // decode the client priority sent in the service context - obj = - this->orb_->resolve_initial_references ("CodecFactory" - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil(obj.in())) - { - ACE_DEBUG((LM_DEBUG, - "Could not initalize the server interceptor Codec, " - "RT ServerScheduler not used!\n")); - return; - } - else - { - this->codec_factory_ = IOP::CodecFactory::_narrow(obj.in()); - } - ACE_TRY_CHECK; - - - // Set up the codec - IOP::Encoding encoding; - encoding.format = IOP::ENCODING_CDR_ENCAPS; - encoding.major_version = 1; - encoding.minor_version = 2; - - this->codec_ = this->codec_factory_->create_codec(encoding); - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, - "Error in installing the interceptor for the ServerScheduler\n"); - } - ACE_ENDTRY; -} - - -// Delete the objects we have made in the interceptor -RTCosScheduling_ServerScheduler_Interceptor::~RTCosScheduling_ServerScheduler_Interceptor() -{ - this->object_name_map_ = 0; - this->resource_map_ = 0; - delete this->PCP_factory_; -} - -void -RTCosScheduling_ServerScheduler_Interceptor::receive_request( - PortableInterceptor::ServerRequestInfo_ptr ri - ACE_ENV_ARG_DECL_NOT_USED) -ACE_THROW_SPEC(( - CORBA::SystemException, - PortableInterceptor::ForwardRequest)) -{ - ACE_TRY_NEW_ENV - { - - ACE_CString name = ""; - COS_SCHEDULING_RESOURCE_VALUE ceiling, base_priority = 0; - - // Now get a reference to the POA, this is used to get a reference - // to the target object - PortableInterceptor::AdapterName *adapter_seq = ri->adapter_name(); - ACE_TRY_CHECK; - PortableServer::POA_var poa; - const char *adapter_name = - (*adapter_seq)[adapter_seq->length() - 1]; - - CORBA::Object_var obj = - this->orb_->resolve_initial_references("RootPOA" - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - if (CORBA::is_nil(obj.in())) - { - ACE_DEBUG((LM_DEBUG, - "Could not get root POA, " - "RT scheduling not used on server!\n")); - return; - } - else - { - PortableServer::POA_var root_poa = - PortableServer::POA::_narrow(obj.in()); - if (CORBA::is_nil(root_poa.in())) - { - ACE_ERROR((LM_ERROR, - "No POA found in Interceptor prio not set\n")); - return; - } - poa = root_poa->find_POA(adapter_name, 0); - ACE_TRY_CHECK; - } - - // decode the Client priority sent in the service context - IOP::ServiceId id = IOP::RTCorbaPriority; - IOP::ServiceContext_var sc; - ACE_TRY_EX(svc_req) - { - sc = ri->get_request_service_context(id); - ACE_TRY_CHECK_EX(svc_req); - } - ACE_CATCHANY - { - // The RTCorbaPriority was not sent, do not use real time - // Here we cannot let the server continue to run at - // RTCORBA::maxPriority, so change to RTCORBA::minPriority - // and things will run best effort - this->current_->the_priority(RTCORBA::minPriority); - return; - } - ACE_ENDTRY; - - CORBA::OctetSeq ocSeq = CORBA::OctetSeq( - sc->context_data.length(), - sc->context_data.length(), - sc->context_data.get_buffer(), - 0); - ACE_TRY_CHECK; - - CORBA::Any the_priority_as_any; - the_priority_as_any = *this->codec_->decode(ocSeq); - ACE_TRY_CHECK; - - RTCORBA::Priority the_client_priority; - the_priority_as_any >>= the_client_priority; - ACE_TRY_CHECK; - - // get the object from the object ID that is passed - CORBA::OctetSeq_var oseq = ri->object_id(); - PortableServer::ObjectId oid(oseq -> length(), - oseq -> length(), - oseq -> get_buffer(), - 0); - ACE_TRY_CHECK; - - CORBA::Object_var target_object = poa->id_to_reference(oid); - ACE_TRY_CHECK; - - // Check to make sure we have the object as scheduled by the - // ServerScheduler - if (this->object_name_map_->find(target_object, name) == -1 ) - { - ACE_DEBUG((LM_DEBUG, - "Object not found in config file, " - "RT ServerScheduler not used!\n")); - // Here we cannot let the server continue to run at - // RTCORBA:: maxPriority, so it will run at minPriority - // and things will run best effort - this->current_->the_priority(RTCORBA::minPriority); - return; - } - - /// If the object name if found, get its priority ceiling - if (this->resource_map_->find(name, ceiling) == -1 ) - { - /// We could not find the Object's priority ceiling - /// given its name - ACE_DEBUG((LM_DEBUG, - "Object Resource Ceiling not found in config file, " - "RT ServerScheduler not used!\n")); - // Here we cannot let the server continue to run at - // RTCORBA:: maxPriority, so it will run at minPriority - // and things will run best effort - this->current_->the_priority(RTCORBA::minPriority); - return; - } - - /// Get the base priority of the server - if (this->resource_map_->find("BP", base_priority) == -1 ) - { - ACE_DEBUG((LM_DEBUG, - "Server Base Priority not found in config file, " - "RTServerScheduler not used!\n")); - // Here we cannot let the server continue to run at - // RTCORBA:: maxPriority, so it will run at minPriority - // and things will run best effort - this->current_->the_priority(RTCORBA::minPriority); - return; - } - - /// Create a new PCP Manager to manage the priority control - COS_SCHEDULING_INVOCATION_VALUE p = 0; - ACE_NEW_THROW_EX(p, - PCP_Manager( - PCP_factory_->New_PCP_Manager(this->current_)), - CORBA::NO_MEMORY()); - ACE_TRY_CHECK; - - // Get the lock on the resource, using MPCP - - p->lock(ceiling + base_priority, - the_client_priority + base_priority); - - /// store the thread in the invocation list - this->invocation_map_.bind( - p->threadID(), - p); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, - "Unknown exception in the receive request\n"); - ACE_OS::exit(1); - } - ACE_ENDTRY; -} - -void -RTCosScheduling_ServerScheduler_Interceptor::send_reply( - PortableInterceptor::ServerRequestInfo_ptr ri - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC(( - CORBA::SystemException - )) -{ - ACE_UNUSED_ARG(ri); - finish_execution(); -} - -void -RTCosScheduling_ServerScheduler_Interceptor::finish_execution() -{ - PCP_Manager *p = 0; - this->invocation_map_.unbind((ACE_OS::getpid() << 16) + ACE_Thread::self(),p); - if (p) - { - /// Release the Lock on the Thread - p->release_lock(); - /// Delete the PCP Manager - delete p; - } -} - -char* -RTCosScheduling_ServerScheduler_Interceptor::name(ACE_ENV_SINGLE_ARG_DECL_NOT_USED) - ACE_THROW_SPEC((CORBA::SystemException)) -{ - return CORBA::string_dup(this->name_); -} - -void -RTCosScheduling_ServerScheduler_Interceptor::destroy(ACE_ENV_SINGLE_ARG_DECL_NOT_USED) - ACE_THROW_SPEC((CORBA::SystemException)) -{ -} - -void -RTCosScheduling_ServerScheduler_Interceptor::receive_request_service_contexts( - PortableInterceptor::ServerRequestInfo_ptr ri - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC(( - CORBA::SystemException, - PortableInterceptor::ForwardRequest)) -{ - ACE_UNUSED_ARG(ri); -} - -void -RTCosScheduling_ServerScheduler_Interceptor::send_exception( - PortableInterceptor::ServerRequestInfo_ptr ri - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC((CORBA::SystemException, - PortableInterceptor::ForwardRequest)) -{ - ACE_UNUSED_ARG(ri); - finish_execution(); -} - -void -RTCosScheduling_ServerScheduler_Interceptor::send_other( - PortableInterceptor::ServerRequestInfo_ptr ri - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC(( - CORBA::SystemException, - PortableInterceptor::ForwardRequest)) - { - ACE_UNUSED_ARG(ri); - finish_execution(); - } - -#endif /* TAO_HAS_INTERCEPTORS */ - -int -RTCosScheduling_ServerScheduler_i::resources( - const char *node_name, - const char *file_name, - CosSchedulingResourceMap *resource_map) -{ - /// get the resource list list just for the particular node - const unsigned int BUF_MAX = 256; - FILE *fp = ACE_OS::fopen(file_name, "r"); - if (fp == NULL) - { - /// Error return of we cannot open the file. - ACE_ERROR_RETURN((LM_ERROR, - "Could not find the config file %s, aborting\n", - file_name), - 0); - } - - - char line[BUF_MAX], key[16]; - ACE_OS::strncpy(key, "Node ", sizeof("Node ")); - ACE_OS::strcat(key, node_name); - - ACE_OS::clearerr(fp); - do - { - ACE_OS::fgets(line, BUF_MAX, fp); - } - while (ACE_OS::strncmp(line,key,ACE_OS::strlen(key)) != 0); - /// Make sure we did not hit the end of file - if (ACE_OS::last_error() == EOF) - { - ACE_ERROR_RETURN((LM_ERROR, - "Node %s not found in config file, aborting\n", - node_name), - 0); - } - - - /// Skip to the appropriate Task section of the node - ACE_OS::clearerr(fp); - do - { - ACE_OS::fgets(line, BUF_MAX, fp); - } - while (ACE_OS::strncmp(line, - "Resources:", - ACE_OS::strlen("Resources:") - ) != 0); - - /// Make sure we did not hit the end of file - if (ACE_OS::last_error() == EOF) - { - ACE_ERROR_RETURN((LM_ERROR, - "Resource list not found for node %s, aborting\n", - node_name), - 0); - } - - CORBA::Short done = 0; - COS_SCHEDULING_RESOURCE_KEY name; - COS_SCHEDULING_RESOURCE_VALUE priority; - u_int delimiter; - - /// read each activity/priority pair from the config file - while (!done) - { - /// get the activity name - ACE_OS::fgets(line, BUF_MAX, fp); - - /// check to make sure we have not reached the end of the list. - if (ACE_OS::strncmp(line, "END", ACE_OS::strlen(line)-1) != 0) - { - name = ACE_CString(line); - delimiter = name.find('\t'); - priority = ACE_OS::atoi(ACE_OS::strchr(line, '\t')); - if (delimiter < name.length() && delimiter > 0) - { - resource_map->bind(name.substr(0, delimiter), priority); - } - else - { - ACE_ERROR_RETURN((LM_ERROR, - "Error in reading resources from %s, aborting", - file_name), - 0); - } - } - else - { - done = 1; - } - } - - return 1; -} - -} diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.h b/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.h deleted file mode 100644 index 9aed85e986e..00000000000 --- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.h +++ /dev/null @@ -1,320 +0,0 @@ -/* -*- C++ -*- */ - -//============================================================================= -/** - * @file RTCosScheduling_ServerScheduler_i.h - * - * $Id$ - * - * @author Matt Murphy <murphym@cs.uri.edu> - */ -//============================================================================= - -#ifndef SERVER_SCHEDULERI_H -#define SERVER_SCHEDULERI_H - -#include /**/ "ace/pre.h" - -/** - * Note - Before making this file with Makefile.RTCosScheduling, please make - * sure that you first comment out the following line from the - * RTCosSchedulingS.h file: - * //#include "tao/PortableServer/PortableServerS.h" - */ - -#include "ace/Map_T.h" -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "ace/SString.h" -#include <orbsvcs/RTCosSchedulingS.h> -#include <orbsvcs/RTCosScheduling/RTCosScheduling_export.h> -#include "RTCosScheduling_PCP_Manager.h" - - - -#if defined(_MSC_VER) -#if (_MSC_VER >= 1200) -#pragma warning(push) -#endif /* _MSC_VER >= 1200 */ -#pragma warning(disable:4250) -#endif /* _MSC_VER */ - -#if defined (__BORLANDC__) -#pragma option push -w-rvl -w-rch -w-ccc -w-inl -#endif /* __BORLANDC__ */ - - -#ifndef RTCOSSCHEDULING_SERVER_CONTAINERS -#define RTCOSSCHEDULING_SERVER_CONTAINERS - -class TAO::PCP_Manager; - -/** - * CosSchedulingObjectNameMap - * - * This typedef is used by the RTCORBA 1.0 ServerScheduler to map - * CORBA object references to names - */ - -typedef CORBA::Object_var COS_SCHEDULING_OBJECT_NAME_KEY; -typedef ACE_CString COS_SCHEDULING_OBJECT_NAME_VALUE; - -ACE_TEMPLATE_SPECIALIZATION -class ACE_Equal_To< COS_SCHEDULING_OBJECT_NAME_KEY > -{ - public: - int operator () (const COS_SCHEDULING_OBJECT_NAME_KEY lhs, - const COS_SCHEDULING_OBJECT_NAME_KEY rhs) const; -}; - - -namespace TAO { - -class CosSchedulingObjectMap_Hash_Key -{ -public: - u_long operator () (const COS_SCHEDULING_OBJECT_NAME_KEY &key) const; -}; - -typedef ACE_Hash_Map_Manager_Ex_Adapter< - COS_SCHEDULING_OBJECT_NAME_KEY, - COS_SCHEDULING_OBJECT_NAME_VALUE, - CosSchedulingObjectMap_Hash_Key, - ACE_Equal_To<COS_SCHEDULING_OBJECT_NAME_KEY>, - ACE_Noop_Key_Generator<COS_SCHEDULING_OBJECT_NAME_KEY> > CosSchedulingObjectMap; - -/** - * This typedef is used in the ServerScheduler to hold a list of - * priority ceiling protocol managers for each active method call - * from a client. - */ -typedef int COS_SCHEDULING_INVOCATION_KEY; -typedef PCP_Manager * COS_SCHEDULING_INVOCATION_VALUE; - -class CosSchedulingInvocation_Hash_key -{ -public: - u_long operator () (const COS_SCHEDULING_INVOCATION_KEY &key) const; -}; - -typedef ACE_Hash_Map_Manager_Ex_Adapter< - COS_SCHEDULING_INVOCATION_KEY, - COS_SCHEDULING_INVOCATION_VALUE, - CosSchedulingInvocation_Hash_key, - ACE_Equal_To<COS_SCHEDULING_INVOCATION_KEY>, - ACE_Noop_Key_Generator<COS_SCHEDULING_INVOCATION_KEY> > CosSchedulingInvocationMap; - - -#endif /* RTCOSSCHEDULING_SERVER_CONTAINERS */ - -#if TAO_HAS_INTERCEPTORS - /** - * @class RTCosScheduling_ServerScheduler_Interceptor - * - * @brief The RTCosScheduling_ServerScheduler_Interceptor intercepts CORBA - * requests on behalf of the RTCORBA 1.0 scheduling service and - * schedules the requests. - */ - class RTCosScheduling_ServerScheduler_Interceptor - : public PortableInterceptor::ServerRequestInterceptor - { - public : - RTCosScheduling_ServerScheduler_Interceptor(CORBA::ORB_ptr orb, - char *shared_file, - CosSchedulingObjectMap *CosSchedulingObjectMap, - CosSchedulingResourceMap *resourceMap); - - - virtual ~RTCosScheduling_ServerScheduler_Interceptor(); - - virtual char* name(ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC(( - CORBA::SystemException)); - - virtual void destroy( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC((CORBA::SystemException)); - - virtual void receive_request( - PortableInterceptor::ServerRequestInfo_ptr ri - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC(( - CORBA::SystemException, - PortableInterceptor::ForwardRequest)); - - virtual void receive_request_service_contexts( - PortableInterceptor::ServerRequestInfo_ptr ri - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC(( - CORBA::SystemException, - PortableInterceptor::ForwardRequest)); - - virtual void send_reply( - PortableInterceptor::ServerRequestInfo_ptr ri - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC((CORBA::SystemException)); - - virtual void send_exception( - PortableInterceptor::ServerRequestInfo_ptr ri - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC(( - CORBA::SystemException, - PortableInterceptor::ForwardRequest)); - - virtual void send_other( - PortableInterceptor::ServerRequestInfo_ptr ri - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC(( - CORBA::SystemException, - PortableInterceptor::ForwardRequest)); - - void finish_execution(); - - - private: - - /// The name of the interceptor - const char* name_; - - /// reference to set local priority - RTCORBA::Current_var current_; - - /// Factory reference to receive PCP_managers - PCP_Manager_Factory * PCP_factory_; - - /// Map to match threadIDs with PCP_Managers - CosSchedulingInvocationMap invocation_map_; - - //The orb - CORBA::ORB_ptr orb_; - - /// Map to match CORBA::Object_vars to names - CosSchedulingObjectMap *object_name_map_; - - /// Map to match Resource names to Ceilings - CosSchedulingResourceMap *resource_map_; - - // The codec to decode incoming CORBA Priorities - IOP::Codec_var codec_; - - - // The factory to create the codec - IOP::CodecFactory_var codec_factory_; - }; - -#endif /* TAO_HAS_INTERCEPTORS */ - - /** - * @class RTCosScheduling_ServerScheduler_i - * - * @brief The ServerScheduler class handles server side - * scheduling for the RTCORBA 1.0 Scheduling Service. - */ - class TAO_RTCosScheduling_Export RTCosScheduling_ServerScheduler_i - : public virtual RTCosScheduling::ServerScheduler, - public virtual CORBA::LocalObject - { - public: - // Constructor - RTCosScheduling_ServerScheduler_i (char *node, - char *file, - char *shared_file, - int numthreads); - - //Destructor - virtual ~RTCosScheduling_ServerScheduler_i (void); - - /** - * This creates and returns a RT POA for use on the server. - * It accepts a set of non-RT policies and sets these as - * well as RT policies (threadpooling and Server Declared). - * - * @param parent The poa to base the RT POA upon - * @param adapter_name the adapter name for the poa - * @param a_POAManager the poa_manager - * @param policies the list of non real time policies to be set - */ - virtual ::PortableServer::POA_ptr create_POA ( - PortableServer::POA_ptr parent, - const char * adapter_name, - PortableServer::POAManager_ptr a_POAManager, - const CORBA::PolicyList & policies) - ACE_THROW_SPEC (( - CORBA::SystemException - , PortableServer::POA::AdapterAlreadyExists - , PortableServer::POA::InvalidPolicy)); - - /** - * This maps a CORBA::Object_var with a name. The names are - * later associated with priority ceiling stored in the - * scheduling config file. - * - * @param obj the CORBA object reference to associate with a name - * @param name name to associate with the CORBA object reference - */ - virtual void schedule_object (CORBA::Object_ptr obj, - const char * name - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC (( CORBA::SystemException - , RTCosScheduling::UnknownName)); - - private: - - /** - * This sets the orb for the ServerScheduler, - * it also resolves references to RT current and sets - * priority mapping - */ - int configure_ORB(TAO_ORB_Core *orb_core); - - /// RT Current, to change the priority of the thread - - /// RT Corba Priority Mapping , uses - /// Linear Priority Mapping - RTCORBA::PriorityMapping *pm_; - - /// The number of threads in the server threadpool - int num_threads_; - - char *shared_file_; - - /// The map to match CORBA::Object_vars - /// to names - CosSchedulingObjectMap object_name_map_; - - /// The map to match resource names to corba priorities - CosSchedulingResourceMap resource_map_; - - /* - * resources populates a string/int map with a list of resources (keys) - * and associated priority ceilings(values) - * - * @param node_name the name of the node the client resides on, - * resources() only retrieves ceilings for the local node - * - * @param map resource_map a reference to the resource map to populate - * - */ - int resources(const char* node_name, - const char* file_name, - CosSchedulingResourceMap * resource_map); - }; -} - -#if defined (__ACE_INLINE__) -#include "RTCosScheduling_ServerScheduler_i.i" -#endif /* __ACE_INLINE__ */ - - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -#pragma warning(pop) -#endif /* _MSC_VER */ - -#if defined (__BORLANDC__) -#pragma option pop -#endif /* __BORLANDC__ */ - - -#include /**/ "ace/post.h" -#endif /* SERVER_SCHEDULERI_H */ diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.i b/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.i deleted file mode 100644 index 2fa91e392b5..00000000000 --- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.i +++ /dev/null @@ -1,35 +0,0 @@ -/* -*- C++ -*- */ - -//============================================================================= -/** - * @file RTCosScheduling_ServerScheduler_i.i - * - * $Id$ - * - * @author Matt Murphy <murphym@cs.uri.edu> - */ -//============================================================================= - -ACE_INLINE int -ACE_Equal_To< COS_SCHEDULING_OBJECT_NAME_KEY >::operator () ( - COS_SCHEDULING_OBJECT_NAME_KEY lhs, - COS_SCHEDULING_OBJECT_NAME_KEY rhs) const -{ - return lhs->_is_equivalent(rhs.in()); -} - -ACE_INLINE u_long -TAO::CosSchedulingObjectMap_Hash_Key::operator () ( - const COS_SCHEDULING_OBJECT_NAME_KEY &key) const -{ - u_long value; - value = key->_hash(LONG_MAX); - return value; -} - -ACE_INLINE u_long -TAO::CosSchedulingInvocation_Hash_key::operator () ( - const COS_SCHEDULING_INVOCATION_KEY &key) const -{ - return ACE_static_cast(u_long, key); -} diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_export.h b/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_export.h deleted file mode 100644 index 5eba867d8b5..00000000000 --- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_export.h +++ /dev/null @@ -1,54 +0,0 @@ - -// -*- C++ -*- -// $Id$ -// Definition for Win32 Export directives. -// This file is generated automatically by generate_export_file.pl TAO_RTCosScheduling -// ------------------------------ -#ifndef TAO_RTCOSSCHEDULING_EXPORT_H -#define TAO_RTCOSSCHEDULING_EXPORT_H - -#include "ace/config-all.h" - -#if !defined (TAO_RTCOSSCHEDULING_HAS_DLL) -# define TAO_RTCOSSCHEDULING_HAS_DLL 1 -#endif /* ! TAO_RTCOSSCHEDULING_HAS_DLL */ - -#if defined (TAO_RTCOSSCHEDULING_HAS_DLL) && (TAO_RTCOSSCHEDULING_HAS_DLL == 1) -# if defined (TAO_RTCOSSCHEDULING_BUILD_DLL) -# define TAO_RTCosScheduling_Export ACE_Proper_Export_Flag -# define TAO_RTCOSSCHEDULING_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) -# define TAO_RTCOSSCHEDULING_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) -# else /* TAO_RTCOSSCHEDULING_BUILD_DLL */ -# define TAO_RTCosScheduling_Export ACE_Proper_Import_Flag -# define TAO_RTCOSSCHEDULING_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) -# define TAO_RTCOSSCHEDULING_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) -# endif /* TAO_RTCOSSCHEDULING_BUILD_DLL */ -#else /* TAO_RTCOSSCHEDULING_HAS_DLL == 1 */ -# define TAO_RTCosScheduling_Export -# define TAO_RTCOSSCHEDULING_SINGLETON_DECLARATION(T) -# define TAO_RTCOSSCHEDULING_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) -#endif /* TAO_RTCOSSCHEDULING_HAS_DLL == 1 */ - -// Set TAO_RTCOSSCHEDULING_NTRACE = 0 to turn on library specific tracing even if -// tracing is turned off for ACE. -#if !defined (TAO_RTCOSSCHEDULING_NTRACE) -# if (ACE_NTRACE == 1) -# define TAO_RTCOSSCHEDULING_NTRACE 1 -# else /* (ACE_NTRACE == 1) */ -# define TAO_RTCOSSCHEDULING_NTRACE 0 -# endif /* (ACE_NTRACE == 1) */ -#endif /* !TAO_RTCOSSCHEDULING_NTRACE */ - -#if (TAO_RTCOSSCHEDULING_NTRACE == 1) -# define TAO_RTCOSSCHEDULING_TRACE(X) -#else /* (TAO_RTCOSSCHEDULING_NTRACE == 1) */ -# if !defined (ACE_HAS_TRACE) -# define ACE_HAS_TRACE -# endif /* ACE_HAS_TRACE */ -# define TAO_RTCOSSCHEDULING_TRACE(X) ACE_TRACE_IMPL(X) -# include "ace/Trace.h" -#endif /* (TAO_RTCOSSCHEDULING_NTRACE == 1) */ - -#endif /* TAO_RTCOSSCHEDULING_EXPORT_H */ - -// End of auto generated file. diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling_Static.dsp b/TAO/orbsvcs/orbsvcs/RTCosScheduling_Static.dsp deleted file mode 100644 index 69b01d560b2..00000000000 --- a/TAO/orbsvcs/orbsvcs/RTCosScheduling_Static.dsp +++ /dev/null @@ -1,194 +0,0 @@ -# Microsoft Developer Studio Project File - Name="RTCosScheduling" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=RTCosScheduling - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE run the tool that generated this project file and specify the
-!MESSAGE nmake output type. You can then use the following command:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling_Static.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 "RTCosScheduling_Static.mak" CFG="RTCosScheduling - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "RTCosScheduling - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "RTCosScheduling - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "RTCosScheduling - Win32 Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Static"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD CPP /nologo /O2 /W3 /GX /MD /Zi /GR /I "$(TAO_ROOT)\orbsvcs" /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\.." /D NDEBUG /D WIN32 /D _WINDOWS /D /D /D /FD /c
-# SUBTRACT CPP /YX
-# ADD RSC /l 0x409 /d NDEBUG /i "$(TAO_ROOT)\orbsvcs" /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo /o"..\..\..\lib\TAO_RTCosScheduling.bsc"
-LIB32=link.exe -lib
-# ADD LIB32 /nologo /out:"..\..\..\lib\TAO_RTCosSchedulings.lib"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling - Win32 Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Static"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD CPP /nologo /Ob0 /W3 /Gm /GX /Zi /MDd /GR /Gy /I "$(TAO_ROOT)\orbsvcs" /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\.." /D _DEBUG /D WIN32 /D _WINDOWS /D /D /D /FD /c
-# SUBTRACT CPP /Fr /YX
-# ADD RSC /l 0x409 /d _DEBUG /i "$(TAO_ROOT)\orbsvcs" /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo /o"..\..\..\lib\TAO_RTCosScheduling.bsc"
-LIB32=link.exe -lib
-# ADD LIB32 /nologo /out:"..\..\..\lib\TAO_RTCosSchedulingsd.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "RTCosScheduling - Win32 Release"
-# Name "RTCosScheduling - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;cxx;c"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ClientScheduler_i.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_PCP_Manager.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ServerScheduler_i.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hh"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ClientScheduler_i.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_PCP_Manager.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ServerScheduler_i.h"
-# End Source File
-# End Group
-# Begin Group "Inline Files"
-
-# PROP Default_Filter "i;inl"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ClientScheduler_i.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_PCP_Manager.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ServerScheduler_i.i"
-# End Source File
-# End Group
-# Begin Group "IDL Files"
-
-# PROP Default_Filter "idl"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling.idl"
-
-!IF "$(CFG)" == "RTCosScheduling - Win32 Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\RTCosScheduling.idl
-InputName=RTCosScheduling
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\Release\tao_idl -o . -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I$(TAO_ROOT) -I$(TAO_ROOT)\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling - Win32 Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\RTCosScheduling.idl
-InputName=RTCosScheduling
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I$(TAO_ROOT) -I$(TAO_ROOT)\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.cpp b/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.cpp index c54b3b02ff4..465f3f4e35d 100644 --- a/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.cpp +++ b/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.cpp @@ -1274,7 +1274,7 @@ TAO_MUF_FAIR_Reconfig_Sched_Strategy::assign_config (RtecScheduler::Config_Info } /////////////////////////////////////////////////// -// class TAO_RMS_FAIR_Reconfig_Sched_Strategy // +// class TAO_RMS_Reconfig_Sched_Strategy // /////////////////////////////////////////////////// @@ -1284,7 +1284,7 @@ TAO_MUF_FAIR_Reconfig_Sched_Strategy::assign_config (RtecScheduler::Config_Info // second one is higher. int -TAO_RMS_FAIR_Reconfig_Sched_Strategy::total_priority_comp (const void *s, const void *t) +TAO_RMS_Reconfig_Sched_Strategy::total_priority_comp (const void *s, const void *t) { // Convert the passed pointers: the double cast is needed to // make Sun C++ 4.2 happy. @@ -1320,7 +1320,7 @@ TAO_RMS_FAIR_Reconfig_Sched_Strategy::total_priority_comp (const void *s, const // then by subpriority. int result = - TAO_RMS_FAIR_Reconfig_Sched_Strategy::compare_priority (**first, + TAO_RMS_Reconfig_Sched_Strategy::compare_priority (**first, **second); if (result == 0) @@ -1341,7 +1341,7 @@ TAO_RMS_FAIR_Reconfig_Sched_Strategy::total_priority_comp (const void *s, const // the second one is higher. int -TAO_RMS_FAIR_Reconfig_Sched_Strategy::total_admission_comp (const void *s, +TAO_RMS_Reconfig_Sched_Strategy::total_admission_comp (const void *s, const void *t) { // Convert the passed pointers: the double cast is needed to @@ -1382,13 +1382,13 @@ TAO_RMS_FAIR_Reconfig_Sched_Strategy::total_admission_comp (const void *s, return -1; } - // First, compare by rate index. + // First, compare according to minimal rate index. - if ((*first)->rate_index < (*second)->rate_index) + if ((*first)->rate_index == 0 && (*second)->rate_index != 0) { return -1; } - else if ((*second)->rate_index < (*first)->rate_index) + else if ((*second)->rate_index == 0 && (*first)->rate_index != 0) { return 1; } @@ -1396,7 +1396,7 @@ TAO_RMS_FAIR_Reconfig_Sched_Strategy::total_admission_comp (const void *s, // Then compare by priority. int result = - TAO_RMS_FAIR_Reconfig_Sched_Strategy::compare_criticality (**first, + TAO_RMS_Reconfig_Sched_Strategy::compare_criticality (**first, **second); if (result != 0) { @@ -1412,6 +1412,17 @@ TAO_RMS_FAIR_Reconfig_Sched_Strategy::total_admission_comp (const void *s, return result; } + // Finally, compare by rate index. + + if ((*first)->rate_index < (*second)->rate_index) + { + return -1; + } + else if ((*second)->rate_index < (*first)->rate_index) + { + return 1; + } + return 0; } @@ -1420,19 +1431,19 @@ TAO_RMS_FAIR_Reconfig_Sched_Strategy::total_admission_comp (const void *s, // first one is higher, 0 if they're the same, and 1 if the second one is higher. int -TAO_RMS_FAIR_Reconfig_Sched_Strategy::compare_criticality(TAO_Reconfig_Scheduler_Entry &lhs, +TAO_RMS_Reconfig_Sched_Strategy::compare_criticality(TAO_Reconfig_Scheduler_Entry &lhs, TAO_Reconfig_Scheduler_Entry &rhs) { ACE_UNUSED_ARG (lhs); ACE_UNUSED_ARG (rhs); - // In RMS_FAIR, no consideration of criticalities + // In plain RMS, no consideration of criticalities return 0; } // Compares two RT_Info entries by criticality alone. Returns -1 if the // first one is higher, 0 if they're the same, and 1 if the second one is higher. int -TAO_RMS_FAIR_Reconfig_Sched_Strategy::compare_criticality(TAO_RT_Info_Tuple &lhs, +TAO_RMS_Reconfig_Sched_Strategy::compare_criticality(TAO_RT_Info_Tuple &lhs, TAO_RT_Info_Tuple &rhs) { ACE_UNUSED_ARG (lhs); @@ -1445,7 +1456,7 @@ TAO_RMS_FAIR_Reconfig_Sched_Strategy::compare_criticality(TAO_RT_Info_Tuple &lhs // first one is higher, 0 if they're the same, and 1 if the second one is higher. int -TAO_RMS_FAIR_Reconfig_Sched_Strategy::compare_priority (TAO_Reconfig_Scheduler_Entry &lhs, +TAO_RMS_Reconfig_Sched_Strategy::compare_priority (TAO_Reconfig_Scheduler_Entry &lhs, TAO_Reconfig_Scheduler_Entry &rhs) { //differentiate by rate. @@ -1467,10 +1478,10 @@ TAO_RMS_FAIR_Reconfig_Sched_Strategy::compare_priority (TAO_Reconfig_Scheduler_E // first one is higher, 0 if they're the same, and 1 if the second one is higher. int -TAO_RMS_FAIR_Reconfig_Sched_Strategy::compare_priority (TAO_RT_Info_Tuple &lhs, +TAO_RMS_Reconfig_Sched_Strategy::compare_priority (TAO_RT_Info_Tuple &lhs, TAO_RT_Info_Tuple &rhs) { - // In RMS_FAIR, priority is partitioned based on rate: + // In plain RMS, priority is partitioned based on rate: if (lhs.period < rhs.period) { return -1; @@ -1489,7 +1500,7 @@ TAO_RMS_FAIR_Reconfig_Sched_Strategy::compare_priority (TAO_RT_Info_Tuple &lhs, // on the operation characteristics of a representative scheduling entry. int -TAO_RMS_FAIR_Reconfig_Sched_Strategy::assign_config (RtecScheduler::Config_Info &info, +TAO_RMS_Reconfig_Sched_Strategy::assign_config (RtecScheduler::Config_Info &info, TAO_Reconfig_Scheduler_Entry &rse) { // Global and thread priority of dispatching queue are simply @@ -1497,292 +1508,10 @@ TAO_RMS_FAIR_Reconfig_Sched_Strategy::assign_config (RtecScheduler::Config_Info info.preemption_priority = rse.actual_rt_info ()->preemption_priority; info.thread_priority = rse.actual_rt_info ()->priority; - // In RMS_FAIR, all queues are static + // In plain RMS, all queues are static info.dispatching_type = RtecScheduler::STATIC_DISPATCHING; return 0; } -/////////////////////////////////////////////////// -// class TAO_RMS_MLF_Reconfig_Sched_Strategy // -/////////////////////////////////////////////////// - - -// Ordering function used to qsort an array of TAO_RT_Info_Tuple -// pointers into a total <priority, subpriority> ordering. Returns -1 -// if the first one is higher, 0 if they're the same, and 1 if the -// second one is higher. - -int -TAO_RMS_MLF_Reconfig_Sched_Strategy::total_priority_comp (const void *s, const void *t) -{ - // Convert the passed pointers: the double cast is needed to - // make Sun C++ 4.2 happy. - TAO_Reconfig_Scheduler_Entry **first = - ACE_reinterpret_cast (TAO_Reconfig_Scheduler_Entry **, - ACE_const_cast (void *, s)); - TAO_Reconfig_Scheduler_Entry **second = - ACE_reinterpret_cast (TAO_Reconfig_Scheduler_Entry **, - ACE_const_cast (void *, t)); - - // Check the converted pointers. - if (first == 0 || *first == 0) - { - return (second == 0 || *second == 0) ? 0 : 1; - } - else if (second == 0 || *second == 0) - { - return -1; - } - - // sort disabled entries to the end - if ((*first)->enabled_state () == RtecScheduler::RT_INFO_DISABLED) - { - return ((*second)->enabled_state () == RtecScheduler::RT_INFO_DISABLED) ? 0 : 1; - } - else if ((*second)->enabled_state () == RtecScheduler::RT_INFO_DISABLED) - { - return -1; - } - - - // Check whether they are distinguished by priority, and if not, - // then by subpriority. - - int result = - TAO_RMS_MLF_Reconfig_Sched_Strategy::compare_priority (**first, - **second); - - if (result == 0) - { - return TAO_Reconfig_Sched_Strategy_Base::compare_subpriority (**first, - **second); - } - else - { - return result; - } -} - - -// Ordering function used to qsort an array of RT_Info_Tuple -// pointers into a total ordering for admission control. Returns -// -1 if the first one is higher, 0 if they're the same, and 1 if -// the second one is higher. - -int -TAO_RMS_MLF_Reconfig_Sched_Strategy::total_admission_comp (const void *s, - const void *t) -{ - // Convert the passed pointers: the double cast is needed to - // make Sun C++ 4.2 happy. - TAO_RT_Info_Tuple **first = - ACE_reinterpret_cast (TAO_RT_Info_Tuple **, - ACE_const_cast (void *, s)); - - TAO_Reconfig_Scheduler_Entry * first_entry = - ACE_LONGLONG_TO_PTR (TAO_Reconfig_Scheduler_Entry *, - (*first)->volatile_token); - - TAO_RT_Info_Tuple **second = - ACE_reinterpret_cast (TAO_RT_Info_Tuple **, - ACE_const_cast (void *, t)); - - TAO_Reconfig_Scheduler_Entry * second_entry = - ACE_LONGLONG_TO_PTR (TAO_Reconfig_Scheduler_Entry *, - (*second)->volatile_token); - - // Check the converted pointers. - if (first == 0 || *first == 0) - { - return (second == 0 || *second == 0) ? 0 : 1; - } - else if (second == 0 || *second == 0) - { - return -1; - } - - // sort disabled tuples to the end - if ((*first)->enabled_state () == RtecScheduler::RT_INFO_DISABLED) - { - return ((*second)->enabled_state () == RtecScheduler::RT_INFO_DISABLED) ? 0 : 1; - } - else if ((*second)->enabled_state () == RtecScheduler::RT_INFO_DISABLED) - { - return -1; - } - - // First, compare by rate index. - - if ((*first)->rate_index < (*second)->rate_index) - { - return -1; - } - else if ((*second)->rate_index < (*first)->rate_index) - { - return 1; - } - - // Then compare by priority. - - int result = - TAO_RMS_MLF_Reconfig_Sched_Strategy::compare_criticality (**first, - **second); - if (result != 0) - { - return result; - } - - // Then compare by subpriority. - - result = TAO_Reconfig_Sched_Strategy_Base::compare_subpriority (*first_entry, - *second_entry); - if (result != 0) - { - return result; - } - - return 0; -} - - -// Compares two RT_Info entries by criticality alone. Returns -1 if the -// first one is higher, 0 if they're the same, and 1 if the second one is higher. - -int -TAO_RMS_MLF_Reconfig_Sched_Strategy::compare_criticality(TAO_Reconfig_Scheduler_Entry &lhs, - TAO_Reconfig_Scheduler_Entry &rhs) -{ - // In RMS+MLF, priority is per criticality level: compare criticalities. - - if (lhs.actual_rt_info ()->criticality > rhs.actual_rt_info ()->criticality) - { - return -1; - } - else if (lhs.actual_rt_info ()->criticality < rhs.actual_rt_info ()->criticality) - { - return 1; - } - else - { - return 0; - } -} - -// Compares two RT_Info entries by criticality alone. Returns -1 if the -// first one is higher, 0 if they're the same, and 1 if the second one is higher. -int -TAO_RMS_MLF_Reconfig_Sched_Strategy::compare_criticality(TAO_RT_Info_Tuple &lhs, - TAO_RT_Info_Tuple &rhs) -{ - if (lhs.criticality > rhs.criticality) - { - return -1; - } - else if (lhs.criticality < rhs.criticality) - { - return 1; - } - else - { - return 0; - } -} - -// Compares two RT_Info entries by priority alone. Returns -1 if the -// first one is higher, 0 if they're the same, and 1 if the second one is higher. - -int -TAO_RMS_MLF_Reconfig_Sched_Strategy::compare_priority (TAO_Reconfig_Scheduler_Entry &lhs, - TAO_Reconfig_Scheduler_Entry &rhs) -{ - // In RMS+MLF, priority is per criticality level: compare criticalities. - int result = TAO_RMS_MLF_Reconfig_Sched_Strategy::compare_criticality(lhs, rhs); - - if (result != 0) - { - return result; - } - - // Same criticality: if high criticality, differentiate by rate. - if (TAO_Reconfig_Sched_Strategy_Base::is_critical (rhs)) - { - if (lhs.actual_rt_info ()->period < rhs.actual_rt_info ()->period) - { - return -1; - } - else if (lhs.actual_rt_info ()->period > rhs.actual_rt_info ()->period) - { - return 1; - } - } - - // They're the same if we got here. - return 0; -} - - -// Compares two RT_Info tuples by priority alone. Returns -1 if the -// first one is higher, 0 if they're the same, and 1 if the second one is higher. - -int -TAO_RMS_MLF_Reconfig_Sched_Strategy::compare_priority (TAO_RT_Info_Tuple &lhs, - TAO_RT_Info_Tuple &rhs) -{ - // In RMS_Dyn, priority is first partitioned per criticality level: - // compare criticalities. - - if (lhs.criticality > rhs.criticality) - { - return -1; - } - else if (lhs.criticality < rhs.criticality) - { - return 1; - } - - // Same criticality: if high criticality, differentiate by rate. - else if (TAO_Reconfig_Sched_Strategy_Base::is_critical (rhs)) - { - if (lhs.period < rhs.period) - { - return -1; - } - else if (lhs.period > rhs.period) - { - return 1; - } - } - - // They're the same if we got here. - return 0; -} - -// Fills in a static dispatch configuration for a priority level, based -// on the operation characteristics of a representative scheduling entry. - -int -TAO_RMS_MLF_Reconfig_Sched_Strategy::assign_config (RtecScheduler::Config_Info &info, - TAO_Reconfig_Scheduler_Entry &rse) -{ - // Global and thread priority of dispatching queue are simply - // those assigned the representative operation it will dispatch. - info.preemption_priority = rse.actual_rt_info ()->preemption_priority; - info.thread_priority = rse.actual_rt_info ()->priority; - - // Critical queues are static, and non-critical ones are - // laxity-based in this strategy. - if (TAO_Reconfig_Sched_Strategy_Base::is_critical (rse)) - { - info.dispatching_type = RtecScheduler::STATIC_DISPATCHING; - } - else - { - info.dispatching_type = RtecScheduler::LAXITY_DISPATCHING; - } - - return 0; -} - - #endif /* TAO_RECONFIG_SCHED_UTILS_C */ diff --git a/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.h b/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.h index c093698b2aa..7779a9b3453 100644 --- a/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.h +++ b/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.h @@ -512,75 +512,9 @@ public: // on the operation characteristics of a representative scheduling entry. }; -class TAO_RTSched_Export TAO_RMS_FAIR_Reconfig_Sched_Strategy - : public TAO_Reconfig_Sched_Strategy_Base - // = TITLE - // A scheduling strategy that implements the Boeing RMS-Dynamic - // scheduling algorithm, and the Honeywell MNO admission control - // algorithm. - // - // = DESCRIPTION - // The strategy assigns static thread and global priority - // according to criticality and rate, assigns static subpriority - // according to importance and then topological order, and assigns - // a dispatching configuration with a static dispatching queue for - // each high criticality rate, and a single minimum laxity - // dispatching queue for all low criticality operations. It - // admits the lowest rate-index tuple for each operation, then - // admits operations at their highest admissible rates in priority - // order. -{ -public: - - static int total_priority_comp (const void *, const void *); - // Ordering function used to qsort an array of RT_Info_Tuple - // pointers into a total <priority, subpriority> ordering. Returns - // -1 if the first one is higher, 0 if they're the same, and 1 if - // the second one is higher. - - static int total_admission_comp (const void *, const void *); - // Ordering function used to qsort an array of RT_Info_Tuple - // pointers into a total ordering for admission control. Returns - // -1 if the first one is higher, 0 if they're the same, and 1 if - // the second one is higher. - - static int compare_criticality(TAO_Reconfig_Scheduler_Entry &lhs, - TAO_Reconfig_Scheduler_Entry &rhs); - // Compares two entries by criticality alone. Returns -1 if the - // first one is higher, 0 if they're the same, and 1 if the second one is higher. - - static int compare_criticality(TAO_RT_Info_Tuple &lhs, - TAO_RT_Info_Tuple &rhs); - // Compares two entries by criticality alone. Returns -1 if the - // first one is higher, 0 if they're the same, and 1 if the second one is higher. - - static int compare_priority (TAO_Reconfig_Scheduler_Entry &, - TAO_Reconfig_Scheduler_Entry &); - // Compares two entries by priority alone. Returns -1 if the - // first one is higher, 0 if they're the same, and 1 if the second one is higher. - - static int compare_priority (TAO_RT_Info_Tuple &, - TAO_RT_Info_Tuple &); - // Compares two tuples by priority alone. Returns -1 if the - // first one is higher, 0 if they're the same, and 1 if the second one is higher. - - static int compare_admission_order (TAO_RT_Info_Tuple &, - TAO_RT_Info_Tuple &); - // Compares two entries by admission ordering policy. Returns -1 if the - // first one is earlier, 0 if they're the same, and 1 if the second one is earlier. - - static int compare_subpriority (TAO_Reconfig_Scheduler_Entry &, - TAO_Reconfig_Scheduler_Entry &); - // Compares two entries by subpriority alone. Returns -1 if the - // first one is higher, 0 if they're the same, and 1 if the second one is higher. - - static int assign_config (RtecScheduler::Config_Info &, - TAO_Reconfig_Scheduler_Entry &); - // Fills in a static dispatch configuration for a priority level, based - // on the operation characteristics of a representative scheduling entry. -}; +typedef TAO_MUF_FAIR_Reconfig_Sched_Strategy TAO_MUF_Reconfig_Sched_Strategy; -class TAO_RTSched_Export TAO_RMS_MLF_Reconfig_Sched_Strategy +class TAO_RTSched_Export TAO_RMS_Reconfig_Sched_Strategy : public TAO_Reconfig_Sched_Strategy_Base // = TITLE // A scheduling strategy that implements the Boeing RMS-Dynamic diff --git a/TAO/orbsvcs/orbsvcs/Scheduler_Factory.cpp b/TAO/orbsvcs/orbsvcs/Scheduler_Factory.cpp index 9b169d85ff7..31b6903db3e 100644 --- a/TAO/orbsvcs/orbsvcs/Scheduler_Factory.cpp +++ b/TAO/orbsvcs/orbsvcs/Scheduler_Factory.cpp @@ -828,15 +828,15 @@ template class ACE_RB_Tree_Node<const char *, TAO_RT_Info_Ex*>; template class ACE_RB_Tree_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>; template class ACE_RB_Tree_Iterator_Base<char const *, TAO_RT_Info_Ex*, ACE_Less_Than<char const *>, TAO_SYNCH_MUTEX>; template class ACE_RB_Tree_Reverse_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>; -template class TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Dependency_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_DFS_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Priority_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; -template class TAO_Tuple_Admission_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy>; -template class TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Dependency_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_DFS_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Priority_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; +template class TAO_Tuple_Admission_Visitor<TAO_MUF_Reconfig_Sched_Strategy>; +template class TAO_RSE_SCC_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) #pragma instantiate ACE_Singleton<ACE_Scheduler_Factory_Data, ACE_Null_Mutex> #pragma instantiate ACE_TSS<ACE_TSS_Type_Adapter<RtecScheduler::Preemption_Priority_t> > @@ -879,13 +879,13 @@ template class TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYN #pragma instantiate ACE_RB_Tree_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX> #pragma instantiate ACE_RB_Tree_Iterator_Base<char const *, TAO_RT_Info_Ex*, ACE_Less_Than<char const *>, TAO_SYNCH_MUTEX> #pragma instantiate ACE_RB_Tree_Reverse_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Dependency_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_DFS_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Priority_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> -#pragma instantiate TAO_Tuple_Admission_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy> -#pragma instantiate TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Dependency_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_DFS_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Priority_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_Tuple_Admission_Visitor<TAO_MUF_Reconfig_Sched_Strategy> +#pragma instantiate TAO_RSE_SCC_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/tests/FtRtEvent/FtRtEvent.mpc b/TAO/orbsvcs/tests/FtRtEvent/FtRtEvent.mpc new file mode 100644 index 00000000000..f73fae7c25d --- /dev/null +++ b/TAO/orbsvcs/tests/FtRtEvent/FtRtEvent.mpc @@ -0,0 +1,30 @@ +project(*Consumer): orbsvcsexe, ftrteventclient { + exename = consumer + specific(gnuace) { + lit_libs += TAO_Strategies + } + Source_Files { + consumer.cpp + PushConsumer.cpp + } + + Header_Files { + PushConsumer.h + } +} + +project(*Supplier): orbsvcsexe, ftrteventclient { + exename = supplier + + specific(gnuace) { + lit_libs += TAO_Strategies + } + Source_Files { + supplier.cpp + PushSupplier.cpp + } + + Header_Files { + PushSupplier.h + } +} diff --git a/TAO/orbsvcs/tests/FtRtEvent/PushConsumer.cpp b/TAO/orbsvcs/tests/FtRtEvent/PushConsumer.cpp new file mode 100644 index 00000000000..7a2f3049b87 --- /dev/null +++ b/TAO/orbsvcs/tests/FtRtEvent/PushConsumer.cpp @@ -0,0 +1,56 @@ +// $Id$ + +#include "PushConsumer.h" +#include "orbsvcs/FtRtEvent/Utils/resolve_init.h" +#include <stdio.h> + +ACE_RCSID (FtRtEvent, + PushConsumer, + "$Id$") + +PushConsumer_impl::PushConsumer_impl(CORBA::ORB_ptr orb) +: orb_(CORBA::ORB::_duplicate(orb)) +{ +} + + +void +PushConsumer_impl::push (const RtecEventComm::EventSet & event + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )) +{ + CORBA::ULong x; + ACE_Time_Value time_val = ACE_OS::gettimeofday (); + + if (event.length() >0) { + TimeBase::TimeT elaps = + time_val.sec () * 10000000 + time_val.usec ()* 10 - event[0].header.ec_send_time; + event[0].data.any_value >>= x; + printf("Received data : %d, single trip time = %d usec\n", x, static_cast<long>(elaps/10)); + } +} + + +void +PushConsumer_impl::disconnect_push_consumer (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )) +{ + PortableServer::Current_var current = + resolve_init<PortableServer::Current>(orb_.in(), "POACurrent" ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + PortableServer::POA_var poa = current->get_POA(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + PortableServer::ObjectId_var oid = current->get_object_id(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + poa->deactivate_object(oid ACE_ENV_ARG_PARAMETER); + +} diff --git a/TAO/orbsvcs/tests/FtRtEvent/PushConsumer.h b/TAO/orbsvcs/tests/FtRtEvent/PushConsumer.h new file mode 100644 index 00000000000..d84080a2eac --- /dev/null +++ b/TAO/orbsvcs/tests/FtRtEvent/PushConsumer.h @@ -0,0 +1,42 @@ +// -*- C++ -*- +//============================================================================= +/** + * @file PushConsumer.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef PUSHCONSUMERIMPL_H +#define PUSHCONSUMERIMPL_H + +#include "orbsvcs/RtecEventCommS.h" + +class PushConsumer_impl : +public virtual POA_RtecEventComm::PushConsumer +{ +public: + PushConsumer_impl(CORBA::ORB_ptr orb); + + virtual void push ( + const RtecEventComm::EventSet & data + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )); + + virtual void disconnect_push_consumer ( + ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )); +private: + CORBA::ORB_var orb_; + PushConsumer_impl(const PushConsumer_impl&); + void operator==(const PushConsumer_impl&); +}; +#endif diff --git a/TAO/orbsvcs/tests/FtRtEvent/PushSupplier.cpp b/TAO/orbsvcs/tests/FtRtEvent/PushSupplier.cpp new file mode 100644 index 00000000000..c3542fa1a78 --- /dev/null +++ b/TAO/orbsvcs/tests/FtRtEvent/PushSupplier.cpp @@ -0,0 +1,145 @@ +// $Id$ + +#include "orbsvcs/CosNamingC.h" +#include "orbsvcs/Event_Utilities.h" +#include "PushSupplier.h" +#include "ace/Reactor.h" +#include "ace/Select_Reactor.h" +#include "tao/MProfile.h" +#include "tao/Stub.h" +#include "orbsvcs/FtRtEvent/Utils/resolve_init.h" + +ACE_RCSID (FtRtEvent, + PushSupplier, + "$Id$") + + +int +PushSupplier_impl::ReactorTask::svc (void) +{ + ACE_DEBUG((LM_DEBUG, "Reactor Thread started\n")); + ACE_Reactor reactor (new ACE_Select_Reactor) ; + reactor_ = &reactor; + + extern ACE_Time_Value timer_interval; + + if (reactor_->schedule_timer(handler_, 0, ACE_Time_Value::zero, timer_interval)== -1) + ACE_ERROR_RETURN((LM_ERROR,"Cannot schedule timer\n"),-1); + + reactor_->run_reactor_event_loop(); + ACE_DEBUG((LM_DEBUG, "Reactor Thread ended\n")); + + return 0; +} + + + +PushSupplier_impl::PushSupplier_impl(CORBA::ORB_ptr orb) +: orb_(orb), seq_no_(0), reactor_task_(this) +{ +} + +PushSupplier_impl::~PushSupplier_impl() +{ + reactor_task_.wait(); +} + +int PushSupplier_impl::init(RtecEventChannelAdmin::EventChannel_ptr channel ACE_ENV_ARG_DECL) +{ + + ACE_DEBUG((LM_DEBUG, "for_suppliers\n")); + RtecEventChannelAdmin::SupplierAdmin_var supplier_admin = + channel->for_suppliers(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + ACE_DEBUG((LM_DEBUG, "obtain_push_consumer\n")); + consumer_ = + supplier_admin->obtain_push_consumer(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + + + ACE_DEBUG((LM_DEBUG, "got push_consumer with %d profiles\n", + consumer_->_stubobj ()->base_profiles ().profile_count ())); + + RtecEventChannelAdmin::SupplierQOS qos; + qos.publications.length (1); + RtecEventComm::EventHeader& h0 = + qos.publications[0].event.header; + h0.type = ACE_ES_EVENT_UNDEFINED; // first free event type + h0.source = 1; // first free event source + + RtecEventComm::PushSupplier_var supplier = _this(); + + ACE_DEBUG((LM_DEBUG, "connect_push_supplier\n")); + consumer_->connect_push_supplier(supplier.in(), + qos ACE_ENV_ARG_PARAMETER); + + ACE_DEBUG((LM_DEBUG, "push_consumer connected\n")); + + + if (!reactor_task_.thr_count() && + reactor_task_.activate (THR_NEW_LWP | THR_JOINABLE, 1) != 0) + ACE_ERROR_RETURN ((LM_ERROR, + "Cannot activate reactor thread\n"), + -1); + + return 0; + +} + + + +void PushSupplier_impl::disconnect_push_supplier ( + ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )) +{ + + reactor_task_.reactor_->end_reactor_event_loop(); + + PortableServer::Current_var current = + resolve_init<PortableServer::Current>(orb_.in(), "POACurrent" ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + PortableServer::POA_var poa = current->get_POA(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + PortableServer::ObjectId_var oid = current->get_object_id(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + poa->deactivate_object(oid ACE_ENV_ARG_PARAMETER); +} + +int PushSupplier_impl::handle_timeout (const ACE_Time_Value ¤t_time, + const void *act) +{ + ACE_UNUSED_ARG(act); + ACE_UNUSED_ARG(current_time); + + ACE_DECLARE_NEW_CORBA_ENV; + ACE_TRY { + RtecEventComm::EventSet event (1); + event.length (1); + event[0].header.type = ACE_ES_EVENT_UNDEFINED; + event[0].header.source = 1; + event[0].header.ttl = 1; + + ACE_Time_Value time_val = ACE_OS::gettimeofday (); + + event[0].header.ec_send_time = time_val.sec () * 10000000 + time_val.usec ()* 10; + event[0].data.any_value <<= seq_no_; + + consumer_->push(event ACE_ENV_ARG_PARAMETER); + ACE_DEBUG((LM_DEBUG, "sending data %d\n", seq_no_)); + ++seq_no_; + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, "A CORBA Exception occurred."); + } + ACE_ENDTRY; + return 0; +} diff --git a/TAO/orbsvcs/tests/FtRtEvent/PushSupplier.h b/TAO/orbsvcs/tests/FtRtEvent/PushSupplier.h new file mode 100644 index 00000000000..a425411e6df --- /dev/null +++ b/TAO/orbsvcs/tests/FtRtEvent/PushSupplier.h @@ -0,0 +1,63 @@ +// -*- C++ -*- +//============================================================================= +/** + * @file PushSupplier.h + * + * $Id$ + * + * @author Huang-Ming Huang <hh1@cse.wustl.edu> + */ +//============================================================================= + +#ifndef PUSHSUPPLIER_H +#define PUSHSUPPLIER_H + +#include "orbsvcs/RtecEventCommS.h" +#include "orbsvcs/RtecEventChannelAdminC.h" +#include "ace/Event_Handler.h" +#include "ace/Task.h" +#include "ace/Reactor.h" +#include "ace/Time_Value.h" + +class ACE_Reactor; + +class PushSupplier_impl : +public ACE_Event_Handler +,public virtual POA_RtecEventComm::PushSupplier +{ +public: + PushSupplier_impl(CORBA::ORB_ptr orb); + ~PushSupplier_impl(); + + int init(RtecEventChannelAdmin::EventChannel_ptr ACE_ENV_ARG_DECL); + + virtual void disconnect_push_supplier ( + ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )); +private: + + class ReactorTask : public ACE_Task_Base + { + public: + // ctor + ReactorTask(ACE_Event_Handler* handler) : handler_(handler){} + virtual int svc (void); + // The thread entry point. + + ACE_Reactor* reactor_; + ACE_Event_Handler* handler_; + }; + + virtual int handle_timeout (const ACE_Time_Value ¤t_time, + const void *act = 0); + CORBA::ORB_var orb_; + CORBA::ULong seq_no_; + ReactorTask reactor_task_; + RtecEventChannelAdmin::ProxyPushConsumer_var consumer_; + PushSupplier_impl(const PushSupplier_impl&); + void operator==(const PushSupplier_impl&); +}; +#endif diff --git a/TAO/orbsvcs/tests/FtRtEvent/consumer.cpp b/TAO/orbsvcs/tests/FtRtEvent/consumer.cpp new file mode 100644 index 00000000000..f77c0f2e3ad --- /dev/null +++ b/TAO/orbsvcs/tests/FtRtEvent/consumer.cpp @@ -0,0 +1,151 @@ +// $Id$ + +#include "orbsvcs/CosNamingC.h" +#include "orbsvcs/FtRtecEventChannelAdminC.h" +#include "orbsvcs/Event_Utilities.h" +#include "PushConsumer.h" +#include "ace/Get_Opt.h" +#include "orbsvcs/FtRtEvent/Utils/resolve_init.h" +#include "orbsvcs/FtRtEvent/Utils/FTEC_Gateway.h" + +/// include this file to statically linked with FT ORB +#include "orbsvcs/FaultTolerance/FT_ClientService_Activate.h" + +/// include this file to statically linked with Transaction Depth +#include "orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Loader.h" + +ACE_RCSID (FtRtEvent, + PushConsumer, + "$Id$") + +CORBA::ORB_var orb; +auto_ptr<TAO_FTRTEC::FTEC_Gateway> gateway; + +RtecEventChannelAdmin::EventChannel_ptr +get_event_channel(int argc, ACE_TCHAR** argv ACE_ENV_ARG_DECL) +{ + FtRtecEventChannelAdmin::EventChannel_var channel; + ACE_Get_Opt get_opt (argc, argv, ACE_LIB_TEXT("hi:n")); + int opt; + int use_gateway = 1; + + while ((opt = get_opt ()) != EOF) + { + switch (opt) + { + case 'i': + { + CORBA::Object_var obj = orb->string_to_object(get_opt.opt_arg () + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + channel = FtRtecEventChannelAdmin::EventChannel::_narrow(obj.in() + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + break; + case 'n': + use_gateway = 0; + break; + case 'h': + case '?': + ACE_DEBUG((LM_DEBUG, + ACE_LIB_TEXT("Usage: %s ") + ACE_LIB_TEXT("-i ftrt_eventchannel_ior\n") + ACE_LIB_TEXT("-n do not use gateway\n") + ACE_LIB_TEXT("\n"), + argv[0])); + return 0; + } + } + + + if (CORBA::is_nil(channel.in())) + { + CosNaming::Name name(1); + name.length(1); + name[0].id = CORBA::string_dup("FT_EventService"); + + CosNaming::NamingContext_var naming_context = + resolve_init<CosNaming::NamingContext>(orb.in(), "NameService" + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + channel = resolve<FtRtecEventChannelAdmin::EventChannel>(naming_context.in(), + name + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + + if (use_gateway) + { + gateway.reset(new TAO_FTRTEC::FTEC_Gateway(orb.in(), channel.in())); + return gateway->_this(ACE_ENV_SINGLE_ARG_PARAMETER); + } + else + return channel._retn(); +} + +int main(int argc, ACE_TCHAR** argv) +{ + ACE_TRY_NEW_ENV { + orb = CORBA::ORB_init(argc, argv + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + RtecEventChannelAdmin::EventChannel_var channel + = get_event_channel(argc, argv ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + + if (CORBA::is_nil(channel.in())) + ACE_ERROR_RETURN((LM_ERROR, "Cannot Find FT_EventService\n"), -1); + + PortableServer::POA_var poa = + resolve_init<PortableServer::POA>(orb.in(), "RootPOA" + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + PortableServer::POAManager_var mgr = poa->the_POAManager(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + mgr->activate(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + PushConsumer_impl push_consumer_impl(orb.in()); + RtecEventChannelAdmin::ConsumerAdmin_var consumer_admin = + channel->for_consumers(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + RtecEventChannelAdmin::ProxyPushSupplier_var supplier = + consumer_admin->obtain_push_supplier(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + RtecEventChannelAdmin::ConsumerQOS qos; + qos.is_gateway = 1; + qos.dependencies.length(1); + + RtecEventComm::EventHeader& h0 = + qos.dependencies[0].event.header; + h0.type = ACE_ES_EVENT_UNDEFINED; // first free event type + h0.source = ACE_ES_EVENT_SOURCE_ANY; + + RtecEventComm::PushConsumer_var push_consumer = + push_consumer_impl._this(); + + supplier->connect_push_consumer(push_consumer.in(), + qos ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + orb->run(ACE_ENV_SINGLE_ARG_PARAMETER); + + } + ACE_CATCHANY { + ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, "A CORBA Exception occurred."); + } + ACE_ENDTRY; + + ACE_CHECK_RETURN(-1); + + return 0; +} + diff --git a/TAO/orbsvcs/tests/FtRtEvent/supplier.cpp b/TAO/orbsvcs/tests/FtRtEvent/supplier.cpp new file mode 100644 index 00000000000..1bfae5f5b04 --- /dev/null +++ b/TAO/orbsvcs/tests/FtRtEvent/supplier.cpp @@ -0,0 +1,142 @@ +// $Id$ +#include "orbsvcs/CosNamingC.h" +#include "orbsvcs/FtRtecEventChannelAdminC.h" +#include "PushSupplier.h" +#include "ace/Get_Opt.h" +#include "orbsvcs/FtRtEvent/Utils/resolve_init.h" +#include "orbsvcs/FtRtEvent/Utils/FTEC_Gateway.h" + +/// include this file to statically linked with FT ORB +#include "orbsvcs/FaultTolerance/FT_ClientService_Activate.h" + +/// include this file to statically linked with Transaction Depth +#include "orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Loader.h" + +ACE_RCSID (FtRtEvent, + supplier, + "$Id$") + + +ACE_Time_Value timer_interval(1,0); +CORBA::ORB_var orb; +auto_ptr<TAO_FTRTEC::FTEC_Gateway> gateway; + +RtecEventChannelAdmin::EventChannel_ptr +get_event_channel(int argc, ACE_TCHAR** argv ACE_ENV_ARG_DECL) +{ + FtRtecEventChannelAdmin::EventChannel_var channel; + ACE_Get_Opt get_opt (argc, argv, ACE_LIB_TEXT("hi:nt:?")); + int opt; + int use_gateway = 1; + + while ((opt = get_opt ()) != EOF) + { + switch (opt) + { + case 'i': + { + CORBA::Object_var obj = orb->string_to_object(get_opt.opt_arg () + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + channel = FtRtecEventChannelAdmin::EventChannel::_narrow(obj.in() + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + break; + case 'n': + use_gateway = 0; + break; + case 't': + timer_interval.set(atof(get_opt.opt_arg ())); + case 'h': + case '?': + ACE_DEBUG((LM_DEBUG, + ACE_LIB_TEXT("Usage: %s ") + ACE_LIB_TEXT("-i ftrt_eventchannel_ior\n") + ACE_LIB_TEXT("-n do not use gateway\n") + ACE_LIB_TEXT("-t time Time interval in seconds between events (default 1.0)\n") + ACE_LIB_TEXT("\n"), + argv[0])); + return 0; + + } + } + + + if (CORBA::is_nil(channel.in())) + { + /// Find the FTRTEC from the Naming Service + CosNaming::Name name(1); + name.length(1); + name[0].id = CORBA::string_dup("FT_EventService"); + + CosNaming::NamingContext_var naming_context = + resolve_init<CosNaming::NamingContext>(orb.in(), "NameService" + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + channel = resolve<FtRtecEventChannelAdmin::EventChannel>(naming_context.in(), + name + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + + if (use_gateway) + { + // use local gateway to communicate with FTRTEC + gateway.reset(new TAO_FTRTEC::FTEC_Gateway(orb.in(), channel.in())); + return gateway->_this(ACE_ENV_SINGLE_ARG_PARAMETER); + } + else + return channel._retn(); +} + + +int main(int argc, ACE_TCHAR** argv) +{ + ACE_DECLARE_NEW_CORBA_ENV; + ACE_TRY { + orb = CORBA::ORB_init(argc, argv + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + + RtecEventChannelAdmin::EventChannel_var channel + = get_event_channel(argc, argv ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + + if (CORBA::is_nil(channel.in())) + return -1; + + PortableServer::POA_var poa = + resolve_init<PortableServer::POA>(orb.in(), "RootPOA" + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + PortableServer::POAManager_var mgr = poa->the_POAManager(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + mgr->activate(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + PushSupplier_impl push_supplier(orb.in()); + if (push_supplier.init(channel.in() ACE_ENV_ARG_PARAMETER) == -1) + return -1; + + RtecEventComm::PushSupplier_var + supplier = push_supplier._this(); + + + orb->run(ACE_ENV_SINGLE_ARG_PARAMETER); + + } + ACE_CATCHANY { + ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, "A CORBA Exception occurred."); + } + ACE_ENDTRY; + + ACE_CHECK_RETURN(-1); + + return 0; +} diff --git a/TAO/orbsvcs/tests/FtRtEvent/svc.conf b/TAO/orbsvcs/tests/FtRtEvent/svc.conf new file mode 100644 index 00000000000..49c3a8a3d04 --- /dev/null +++ b/TAO/orbsvcs/tests/FtRtEvent/svc.conf @@ -0,0 +1,3 @@ +## $Id$ + +static FTRT_ClientORB_Service "-ORBTransactionDepth $FTEC_TransactionDepth"
\ No newline at end of file diff --git a/TAO/orbsvcs/tests/LoadBalancing/GenericFactory/Infrastructure_Controlled/server.dsp b/TAO/orbsvcs/tests/LoadBalancing/GenericFactory/Infrastructure_Controlled/server.dsp index f3a433329a9..36dfd44bbcd 100644 --- a/TAO/orbsvcs/tests/LoadBalancing/GenericFactory/Infrastructure_Controlled/server.dsp +++ b/TAO/orbsvcs/tests/LoadBalancing/GenericFactory/Infrastructure_Controlled/server.dsp @@ -50,7 +50,7 @@ BSC32=bscmake.exe # 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 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 ace.lib TAO.lib TAO_PortableServer.lib TAO_Messaging.lib TAO_CosNaming.lib TAO_PortableGroup.lib TAO_CosLoadBalancing.lib TAO_Valuetype.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\..\..\..\ace" /libpath:"..\..\..\..\..\tao" /libpath:"..\..\..\..\..\tao\PortableServer" /libpath:"..\..\..\..\..\tao\Messaging" /libpath:"..\..\..\..\..\orbsvcs\orbsvcs" /libpath:"..\..\..\..\..\tao\Valuetype"
+# ADD LINK32 ace.lib TAO.lib TAO_PortableServer.lib TAO_Messaging.lib TAO_CosNaming.lib TAO_PortableGroup.lib TAO_CosLoadBalancing.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\..\..\..\ace" /libpath:"..\..\..\..\..\tao" /libpath:"..\..\..\..\..\tao\PortableServer" /libpath:"..\..\..\..\..\tao\Messaging" /libpath:"..\..\..\..\..\orbsvcs\orbsvcs" /libpath:"..\..\..\..\..\tao\Valuetype"
!ELSEIF "$(CFG)" == "server - Win32 Debug"
@@ -74,7 +74,7 @@ BSC32=bscmake.exe # 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 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 aced.lib TAOd.lib TAO_PortableServerd.lib TAO_Messagingd.lib TAO_CosNamingd.lib TAO_PortableGroupd.lib TAO_CosLoadBalancingd.lib TAO_Valuetyped.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\..\..\ace" /libpath:"..\..\..\..\..\tao" /libpath:"..\..\..\..\..\tao\PortableServer" /libpath:"..\..\..\..\..\tao\Messaging" /libpath:"..\..\..\..\..\orbsvcs\orbsvcs" /libpath:"..\..\..\..\..\tao\Valuetype"
+# ADD LINK32 aced.lib TAOd.lib TAO_PortableServerd.lib TAO_Messagingd.lib TAO_CosNamingd.lib TAO_PortableGroupd.lib TAO_CosLoadBalancingd.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\..\..\ace" /libpath:"..\..\..\..\..\tao" /libpath:"..\..\..\..\..\tao\PortableServer" /libpath:"..\..\..\..\..\tao\Messaging" /libpath:"..\..\..\..\..\orbsvcs\orbsvcs" /libpath:"..\..\..\..\..\tao\Valuetype"
!ENDIF
diff --git a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/CPU.dsw b/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/CPU.dsw deleted file mode 100644 index 02168c6f4f1..00000000000 --- a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/CPU.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "CPU Server"=.\client.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/Makefile b/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/Makefile deleted file mode 100644 index 14f002f9217..00000000000 --- a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/Makefile +++ /dev/null @@ -1,433 +0,0 @@ -#---------------------------------------------------------------------------- -# $Id$ -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -ifndef TAO_ROOT - TAO_ROOT = $(ACE_ROOT)/TAO -endif # ! TAO_ROOT - -BIN2 = client - -SRC = $(addsuffix .cpp, $(BIN)) - -LDLIBS = \ - -lTAO_CosLoadBalancing \ - -lTAO_PortableGroup \ - -lTAO_CosNaming \ - -lTAO_Messaging \ - $(TAO_SRVR_LIBS) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(TAO_ROOT)/rules.tao.GNU -#### If the TAO orbsvcs library wasn't built with sufficient components, -#### don't try to build here. -TAO_ORBSVCS := $(shell sh $(ACE_ROOT)/bin/ace_components --orbsvcs) -ifeq (CosLoadBalancing,$(findstring CosLoadBalancing,$(TAO_ORBSVCS))) - BIN = $(BIN2) -endif # CosLoadBalancing -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -LDFLAGS += -L$(TAO_ROOT)/orbsvcs/orbsvcs -L$(TAO_ROOT)/tao -CPPFLAGS += -I$(TAO_ROOT)/orbsvcs -I$(TAO_ROOT) - -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- - - -realclean: clean - -$(RM) $(foreach ext, $(IDL_EXT), test$(ext)) - - -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - - -.obj/client.o .obj/client.so .shobj/client.o .shobj/client.so: client.cpp \ - $(TAO_ROOT)/orbsvcs/orbsvcs/CosLoadBalancingC.h \ - $(ACE_ROOT)/ace/pre.h \ - $(TAO_ROOT)/tao/corba.h \ - $(ACE_ROOT)/ace/post.h \ - $(ACE_ROOT)/ace/ace_wchar.h \ - $(ACE_ROOT)/ace/ace_wchar.inl \ - $(TAO_ROOT)/tao/corbafwd.h \ - $(ACE_ROOT)/ace/CDR_Base.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/os_include/os_limits.h \ - $(ACE_ROOT)/ace/os_include/os_unistd.h \ - $(ACE_ROOT)/ace/os_include/sys/os_types.h \ - $(ACE_ROOT)/ace/os_include/os_stddef.h \ - $(ACE_ROOT)/ace/os_include/os_inttypes.h \ - $(ACE_ROOT)/ace/os_include/os_stdint.h \ - $(ACE_ROOT)/ace/os_include/os_stdio.h \ - $(ACE_ROOT)/ace/os_include/os_stdarg.h \ - $(ACE_ROOT)/ace/os_include/os_float.h \ - $(ACE_ROOT)/ace/os_include/os_stdlib.h \ - $(ACE_ROOT)/ace/os_include/sys/os_wait.h \ - $(ACE_ROOT)/ace/os_include/os_signal.h \ - $(ACE_ROOT)/ace/os_include/os_time.h \ - $(ACE_ROOT)/ace/os_include/os_ucontext.h \ - $(ACE_ROOT)/ace/os_include/sys/os_resource.h \ - $(ACE_ROOT)/ace/os_include/sys/os_time.h \ - $(ACE_ROOT)/ace/os_include/sys/os_select.h \ - $(ACE_ROOT)/ace/ACE_export.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/Default_Constants.h \ - $(ACE_ROOT)/ace/CDR_Base.inl \ - $(TAO_ROOT)/tao/orbconf.h \ - $(ACE_ROOT)/ace/Global_Macros.h \ - $(ACE_ROOT)/ace/OS_Export.h \ - $(ACE_ROOT)/ace/Synch_Traits.h \ - $(ACE_ROOT)/ace/Lock.h \ - $(ACE_ROOT)/ace/Lock.inl \ - $(TAO_ROOT)/tao/TAO_Export.h \ - $(TAO_ROOT)/tao/corbafwd.i \ - $(TAO_ROOT)/tao/Typecode.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ - $(ACE_ROOT)/ace/Functor.h \ - $(ACE_ROOT)/ace/Functor.i \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/Flag_Manip.h \ - $(ACE_ROOT)/ace/Flag_Manip.i \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/OS_Dirent.h \ - $(ACE_ROOT)/ace/OS_Errno.h \ - $(ACE_ROOT)/ace/os_include/os_errno.h \ - $(ACE_ROOT)/ace/OS_Errno.inl \ - $(ACE_ROOT)/ace/os_include/os_dirent.h \ - $(ACE_ROOT)/ace/OS_Dirent.inl \ - $(ACE_ROOT)/ace/OS_String.h \ - $(ACE_ROOT)/ace/OS_String.inl \ - $(ACE_ROOT)/ace/os_include/os_string.h \ - $(ACE_ROOT)/ace/os_include/os_strings.h \ - $(ACE_ROOT)/ace/os_include/os_ctype.h \ - $(ACE_ROOT)/ace/OS_Memory.h \ - $(ACE_ROOT)/ace/OS_Memory.inl \ - $(ACE_ROOT)/ace/OS_TLI.h \ - $(ACE_ROOT)/ace/OS_TLI.inl \ - $(ACE_ROOT)/ace/os_include/os_dlfcn.h \ - $(ACE_ROOT)/ace/os_include/sys/os_mman.h \ - $(ACE_ROOT)/ace/os_include/os_netdb.h \ - $(ACE_ROOT)/ace/os_include/netinet/os_in.h \ - $(ACE_ROOT)/ace/os_include/sys/os_socket.h \ - $(ACE_ROOT)/ace/os_include/sys/os_uio.h \ - $(ACE_ROOT)/ace/os_include/net/os_if.h \ - $(ACE_ROOT)/ace/os_include/sys/os_sem.h \ - $(ACE_ROOT)/ace/os_include/sys/os_ipc.h \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/Time_Value.inl \ - $(ACE_ROOT)/ace/Min_Max.h \ - $(ACE_ROOT)/ace/os_include/os_pthread.h \ - $(ACE_ROOT)/ace/os_include/os_assert.h \ - $(ACE_ROOT)/ace/os_include/os_fcntl.h \ - $(ACE_ROOT)/ace/os_include/sys/os_stat.h \ - $(ACE_ROOT)/ace/iosfwd.h \ - $(ACE_ROOT)/ace/os_include/arpa/os_inet.h \ - $(ACE_ROOT)/ace/os_include/netinet/os_tcp.h \ - $(ACE_ROOT)/ace/os_include/sys/os_shm.h \ - $(ACE_ROOT)/ace/os_include/os_pwd.h \ - $(ACE_ROOT)/ace/os_include/os_stropts.h \ - $(ACE_ROOT)/ace/os_include/os_termios.h \ - $(ACE_ROOT)/ace/os_include/os_aio.h \ - $(ACE_ROOT)/ace/os_include/sys/os_un.h \ - $(ACE_ROOT)/ace/os_include/os_poll.h \ - $(ACE_ROOT)/ace/os_include/sys/os_msg.h \ - $(ACE_ROOT)/ace/os_include/sys/os_utsname.h \ - $(ACE_ROOT)/ace/os_include/os_syslog.h \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Handle_Ops.h \ - $(ACE_ROOT)/ace/Handle_Ops.i \ - $(ACE_ROOT)/ace/Lib_Find.h \ - $(ACE_ROOT)/ace/Lib_Find.i \ - $(ACE_ROOT)/ace/Init_ACE.h \ - $(ACE_ROOT)/ace/Init_ACE.i \ - $(ACE_ROOT)/ace/Sock_Connect.h \ - $(ACE_ROOT)/ace/Sock_Connect.i \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Functor_T.h \ - $(ACE_ROOT)/ace/Functor_T.i \ - $(ACE_ROOT)/ace/Functor_T.cpp \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.h \ - $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.inl \ - $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ - $(ACE_ROOT)/ace/Guard_T.h \ - $(ACE_ROOT)/ace/Guard_T.inl \ - $(ACE_ROOT)/ace/Guard_T.cpp \ - $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Unbounded_Queue.h \ - $(ACE_ROOT)/ace/Node.h \ - $(ACE_ROOT)/ace/Node.cpp \ - $(ACE_ROOT)/ace/Unbounded_Queue.inl \ - $(ACE_ROOT)/ace/Unbounded_Queue.cpp \ - $(ACE_ROOT)/ace/Thread_Mutex.h \ - $(ACE_ROOT)/ace/Thread_Mutex.inl \ - $(TAO_ROOT)/tao/Exception.h \ - $(ACE_ROOT)/ace/CORBA_macros.h \ - $(ACE_ROOT)/ace/Exception_Macros.h \ - $(ACE_ROOT)/ace/SStringfwd.h \ - $(TAO_ROOT)/tao/Exception.i \ - $(TAO_ROOT)/tao/Pseudo_VarOut_T.h \ - $(TAO_ROOT)/tao/Pseudo_VarOut_T.inl \ - $(TAO_ROOT)/tao/Pseudo_VarOut_T.cpp \ - $(TAO_ROOT)/tao/Typecode.i \ - $(TAO_ROOT)/tao/Any_Impl_T.h \ - $(TAO_ROOT)/tao/Any.h \ - $(ACE_ROOT)/ace/CDR_Stream.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/CDR_Stream.i \ - $(TAO_ROOT)/tao/Any.i \ - $(TAO_ROOT)/tao/Any_Impl_T.inl \ - $(TAO_ROOT)/tao/Any_Impl_T.cpp \ - $(TAO_ROOT)/tao/Marshal.h \ - $(TAO_ROOT)/tao/Marshal.i \ - $(TAO_ROOT)/tao/CDR.h \ - $(TAO_ROOT)/tao/CDR.i \ - $(TAO_ROOT)/tao/Environment.h \ - $(TAO_ROOT)/tao/Environment.i \ - $(ACE_ROOT)/ace/Auto_Ptr.h \ - $(ACE_ROOT)/ace/Auto_Ptr.i \ - $(ACE_ROOT)/ace/Auto_Ptr.cpp \ - $(TAO_ROOT)/tao/Any_Basic_Impl_T.h \ - $(TAO_ROOT)/tao/Any_Basic_Impl_T.inl \ - $(TAO_ROOT)/tao/Any_Basic_Impl_T.cpp \ - $(TAO_ROOT)/tao/Any_Special_Impl_T.h \ - $(TAO_ROOT)/tao/Any_Special_Impl_T.inl \ - $(TAO_ROOT)/tao/Any_Special_Impl_T.cpp \ - $(TAO_ROOT)/tao/Any_Special_Basic_Impl_T.h \ - $(TAO_ROOT)/tao/Any_Special_Basic_Impl_T.inl \ - $(TAO_ROOT)/tao/Any_Special_Basic_Impl_T.cpp \ - $(TAO_ROOT)/tao/debug.h \ - $(TAO_ROOT)/tao/Any_Array_Impl_T.h \ - $(TAO_ROOT)/tao/Any_Array_Impl_T.inl \ - $(TAO_ROOT)/tao/Any_Array_Impl_T.cpp \ - $(TAO_ROOT)/tao/Any_Dual_Impl_T.h \ - $(TAO_ROOT)/tao/Any_Dual_Impl_T.inl \ - $(TAO_ROOT)/tao/Any_Dual_Impl_T.cpp \ - $(TAO_ROOT)/tao/CORBA_String.h \ - $(TAO_ROOT)/tao/Managed_Types.h \ - $(TAO_ROOT)/tao/Managed_Types.i \ - $(TAO_ROOT)/tao/CORBA_String.inl \ - $(TAO_ROOT)/tao/NVList.h \ - $(TAO_ROOT)/tao/NVList.i \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Policy_ForwardC.h \ - $(TAO_ROOT)/tao/Sequence.h \ - $(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/Objref_VarOut_T.h \ - $(TAO_ROOT)/tao/varbase.h \ - $(TAO_ROOT)/tao/Objref_VarOut_T.inl \ - $(TAO_ROOT)/tao/Objref_VarOut_T.cpp \ - $(TAO_ROOT)/tao/Seq_Var_T.h \ - $(TAO_ROOT)/tao/Seq_Var_T.inl \ - $(TAO_ROOT)/tao/Seq_Var_T.cpp \ - $(TAO_ROOT)/tao/Seq_Out_T.h \ - $(TAO_ROOT)/tao/Seq_Out_T.inl \ - $(TAO_ROOT)/tao/Seq_Out_T.cpp \ - $(TAO_ROOT)/tao/Policy_ForwardC.i \ - $(TAO_ROOT)/tao/IOP_IORC.h \ - $(TAO_ROOT)/tao/OctetSeqC.h \ - $(TAO_ROOT)/tao/OctetSeqC.i \ - $(TAO_ROOT)/tao/VarOut_T.h \ - $(TAO_ROOT)/tao/VarOut_T.inl \ - $(TAO_ROOT)/tao/VarOut_T.cpp \ - $(TAO_ROOT)/tao/IOP_IORC.i \ - $(TAO_ROOT)/tao/Object.i \ - $(TAO_ROOT)/tao/LocalObject.h \ - $(TAO_ROOT)/tao/LocalObject.i \ - $(TAO_ROOT)/tao/Principal.h \ - $(TAO_ROOT)/tao/Principal.i \ - $(TAO_ROOT)/tao/ORB.h \ - $(TAO_ROOT)/tao/ServicesC.h \ - $(TAO_ROOT)/tao/ServicesC.i \ - $(TAO_ROOT)/tao/ObjectIdListC.h \ - $(TAO_ROOT)/tao/ObjectIdListC.i \ - $(TAO_ROOT)/tao/objectid.h \ - $(TAO_ROOT)/tao/PolicyC.h \ - $(TAO_ROOT)/tao/CurrentC.h \ - $(TAO_ROOT)/tao/CurrentC.i \ - $(TAO_ROOT)/tao/Remote_Object_Proxy_Impl.h \ - $(TAO_ROOT)/tao/Object_Proxy_Impl.h \ - $(TAO_ROOT)/tao/PolicyC.i \ - $(TAO_ROOT)/tao/ORB.i \ - $(TAO_ROOT)/tao/BoundsC.h \ - $(TAO_ROOT)/tao/BoundsC.i \ - $(TAO_ROOT)/tao/DomainC.h \ - $(TAO_ROOT)/tao/DomainC.i \ - $(TAO_ROOT)/tao/WrongTransactionC.h \ - $(TAO_ROOT)/tao/WrongTransactionC.i \ - $(TAO_ROOT)/tao/StringSeqC.h \ - $(TAO_ROOT)/tao/StringSeqC.i \ - $(TAO_ROOT)/tao/Object_KeyC.h \ - $(TAO_ROOT)/tao/Object_KeyC.i \ - $(TAO_ROOT)/tao/Array_VarOut_T.h \ - $(TAO_ROOT)/tao/Array_VarOut_T.inl \ - $(TAO_ROOT)/tao/Array_VarOut_T.cpp \ - $(TAO_ROOT)/tao/PortableInterceptorC.h \ - $(TAO_ROOT)/tao/PI_ForwardC.h \ - $(TAO_ROOT)/tao/PI_ForwardC.i \ - $(TAO_ROOT)/tao/DynamicC.h \ - $(TAO_ROOT)/tao/DynamicC.i \ - $(TAO_ROOT)/tao/Messaging_SyncScopeC.h \ - $(TAO_ROOT)/tao/Messaging_SyncScopeC.i \ - $(TAO_ROOT)/tao/IOPC.h \ - $(TAO_ROOT)/tao/IOP_CodecC.h \ - $(TAO_ROOT)/tao/IOP_CodecC.i \ - $(TAO_ROOT)/tao/IOPC.i \ - $(TAO_ROOT)/tao/PortableInterceptorC.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/LoadBalancing/LoadBalancing_export.h \ - $(TAO_ROOT)/tao/Messaging/Messaging.h \ - $(TAO_ROOT)/tao/Messaging/messaging_export.h \ - $(TAO_ROOT)/tao/Messaging/MessagingC.h \ - $(TAO_ROOT)/tao/Messaging/Messaging_SyncScope_PolicyC.h \ - $(TAO_ROOT)/tao/Messaging/Messaging_SyncScope_PolicyC.i \ - $(TAO_ROOT)/tao/Messaging/Messaging_RT_PolicyC.h \ - $(TAO_ROOT)/tao/TimeBaseC.h \ - $(TAO_ROOT)/tao/TimeBaseC.i \ - $(TAO_ROOT)/tao/Messaging/Messaging_RT_PolicyC.i \ - $(TAO_ROOT)/tao/Messaging/Messaging_No_ImplC.h \ - $(TAO_ROOT)/tao/Messaging/Messaging_No_ImplC.i \ - $(TAO_ROOT)/tao/Valuetype/Value_VarOut_T.h \ - $(TAO_ROOT)/tao/Valuetype/Value_VarOut_T.inl \ - $(TAO_ROOT)/tao/Valuetype/Value_VarOut_T.cpp \ - $(TAO_ROOT)/tao/Valuetype/ValueBase.h \ - $(TAO_ROOT)/tao/Valuetype/valuetype_export.h \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/Auto_Event.h \ - $(ACE_ROOT)/ace/Event.h \ - $(ACE_ROOT)/ace/Event.inl \ - $(ACE_ROOT)/ace/Auto_Event.inl \ - $(ACE_ROOT)/ace/Barrier.h \ - $(ACE_ROOT)/ace/Condition_Thread_Mutex.h \ - $(ACE_ROOT)/ace/Condition_Thread_Mutex.inl \ - $(ACE_ROOT)/ace/Barrier.inl \ - $(ACE_ROOT)/ace/Condition_Recursive_Thread_Mutex.h \ - $(ACE_ROOT)/ace/Recursive_Thread_Mutex.h \ - $(ACE_ROOT)/ace/Recursive_Thread_Mutex.inl \ - $(ACE_ROOT)/ace/Condition_Recursive_Thread_Mutex.inl \ - $(ACE_ROOT)/ace/Manual_Event.h \ - $(ACE_ROOT)/ace/Manual_Event.inl \ - $(ACE_ROOT)/ace/Mutex.h \ - $(ACE_ROOT)/ace/Mutex.inl \ - $(ACE_ROOT)/ace/Null_Barrier.h \ - $(ACE_ROOT)/ace/Null_Condition.h \ - $(ACE_ROOT)/ace/Null_Mutex.h \ - $(ACE_ROOT)/ace/Null_Semaphore.h \ - $(ACE_ROOT)/ace/RW_Mutex.h \ - $(ACE_ROOT)/ace/RW_Mutex.inl \ - $(ACE_ROOT)/ace/RW_Thread_Mutex.h \ - $(ACE_ROOT)/ace/RW_Thread_Mutex.inl \ - $(ACE_ROOT)/ace/Semaphore.h \ - $(ACE_ROOT)/ace/Semaphore.inl \ - $(ACE_ROOT)/ace/Thread_Semaphore.h \ - $(ACE_ROOT)/ace/Thread_Semaphore.inl \ - $(ACE_ROOT)/ace/TSS_Adapter.h \ - $(ACE_ROOT)/ace/TSS_Adapter.inl \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Lock_Adapter_T.h \ - $(ACE_ROOT)/ace/Lock_Adapter_T.inl \ - $(ACE_ROOT)/ace/Lock_Adapter_T.cpp \ - $(ACE_ROOT)/ace/Reverse_Lock_T.h \ - $(ACE_ROOT)/ace/Reverse_Lock_T.inl \ - $(ACE_ROOT)/ace/Reverse_Lock_T.cpp \ - $(ACE_ROOT)/ace/TSS_T.h \ - $(ACE_ROOT)/ace/TSS_T.inl \ - $(ACE_ROOT)/ace/TSS_T.cpp \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread_Adapter.h \ - $(ACE_ROOT)/ace/Base_Thread_Adapter.h \ - $(ACE_ROOT)/ace/Base_Thread_Adapter.inl \ - $(ACE_ROOT)/ace/Thread_Adapter.inl \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Condition_T.h \ - $(ACE_ROOT)/ace/Condition_T.inl \ - $(ACE_ROOT)/ace/Condition_T.cpp \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(TAO_ROOT)/tao/Valuetype/ValueBase.inl \ - $(TAO_ROOT)/tao/Valuetype/ValueFactory.h \ - $(TAO_ROOT)/tao/Valuetype/ValueFactory.inl \ - $(TAO_ROOT)/tao/Messaging/MessagingC.i \ - $(TAO_ROOT)/tao/Messaging/TAO_ExtC.h \ - $(TAO_ROOT)/tao/Messaging/TAO_ExtC.i \ - $(TAO_ROOT)/tao/TAOC.h \ - $(TAO_ROOT)/tao/TAOC.i \ - $(TAO_ROOT)/tao/Valuetype/Valuetype_Adapter_Impl.h \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Unbounded_Set.h \ - $(ACE_ROOT)/ace/Unbounded_Set.inl \ - $(ACE_ROOT)/ace/Unbounded_Set.cpp \ - $(ACE_ROOT)/ace/SString.h \ - $(ACE_ROOT)/ace/String_Base.h \ - $(ACE_ROOT)/ace/String_Base_Const.h \ - $(ACE_ROOT)/ace/String_Base.i \ - $(ACE_ROOT)/ace/String_Base.cpp \ - $(ACE_ROOT)/ace/SString.i \ - $(ACE_ROOT)/ace/XML_Svc_Conf.h \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Timer_Queue_fwd.h \ - $(ACE_ROOT)/ace/Reactor_Timer_Interface.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Atomic_Op.h \ - $(ACE_ROOT)/ace/Atomic_Op_T.h \ - $(ACE_ROOT)/ace/Atomic_Op_T.i \ - $(ACE_ROOT)/ace/Atomic_Op_T.cpp \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(TAO_ROOT)/tao/Valuetype_Adapter.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/DLL.h \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(TAO_ROOT)/tao/Valuetype/Sequence_T.h \ - $(TAO_ROOT)/tao/Valuetype/Sequence_T.inl \ - $(TAO_ROOT)/tao/Valuetype/Sequence_T.cpp \ - $(TAO_ROOT)/orbsvcs/orbsvcs/PortableGroupC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/PortableGroup/portablegroup_export.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/Naming/naming_export.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingC.i \ - $(TAO_ROOT)/tao/GIOPC.h \ - $(TAO_ROOT)/tao/GIOPC.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/PortableGroupC.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/CosLoadBalancingC.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/PortableGroup/PG_Operators.h \ - $(ACE_ROOT)/ace/Get_Opt.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Array_Base.h \ - $(ACE_ROOT)/ace/Array_Base.inl \ - $(ACE_ROOT)/ace/Array_Base.cpp \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Get_Opt.i - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/Makefile.bor b/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/Makefile.bor deleted file mode 100644 index 50e91e8a27a..00000000000 --- a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/Makefile.bor +++ /dev/null @@ -1,44 +0,0 @@ -# -# Makefile for building the CPU load monitor test client executable -# -# $Id$ -# - -!ifndef MINIMUM_CORBA -NAME = client -!else -!undef NAME -!endif - -OBJFILES = \ - $(OBJDIR)\client.obj - -CFLAGS = \ - $(ACE_CFLAGS) \ - $(TAO_CFLAGS) \ - $(TAO_PORTABLESERVER_CFLAGS) \ - $(TAO_MESSAGING_CFLAGS) \ - $(TAO_SVC_UTILS_CFLAGS) \ - $(TAO_NAMING_CFLAGS) \ - $(TAO_PORTABLEGROUP_CFLAGS) \ - $(TAO_COSLOADBALANCING_CFLAGS) \ - $(TAO_VALUETYPE_CFLAGS) \ - $(TAO_IORINTERCEPTOR_CFLAGS) \ - $(TAO_ORT_CFLAGS) - -LIBFILES = \ - $(ACE_LIB) \ - $(TAO_LIB) \ - $(TAO_PORTABLESERVER_LIB) \ - $(TAO_MESSAGING_LIB) \ - $(TAO_SVC_UTILS_LIB) \ - $(TAO_NAMING_LIB) \ - $(TAO_PORTABLEGROUP_LIB) \ - $(TAO_COSLOADBALANCING_LIB) \ - $(TAO_VALUETYPE_LIB) \ - $(TAO_IORINTERCEPTOR_LIB) \ - $(TAO_ORT_LIB) - -CPPDIR = . - -!include <$(ACE_ROOT)\include\makeinclude\build_core_exe.bor> diff --git a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/README b/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/README deleted file mode 100644 index ee845ff6081..00000000000 --- a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/README +++ /dev/null @@ -1,11 +0,0 @@ -# $Id$ - -This test verifies that Cygnus' CPU load monitor is working correctly. -Run the test using the `run_test.pl' Perl script. The expected test -output is the following: - -==== Running CPU Load Monitor test - -Retrieving loads from LoadManager ...... DONE -Retrieving loads directly from LoadMonitor ... DONE -CPU Load Monitor test passed. diff --git a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/client.cpp b/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/client.cpp deleted file mode 100644 index 810fa131ee7..00000000000 --- a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/client.cpp +++ /dev/null @@ -1,180 +0,0 @@ -// $Id$ - -#include "orbsvcs/CosLoadBalancingC.h" -#include "orbsvcs/PortableGroup/PG_Operators.h" -#include "ace/Get_Opt.h" - - -ACE_RCSID (CPU, - client, - "$Id$") - - -const char * location = "MyLocation"; - -const int MAX_RETRIES = 10; -const CosLoadBalancing::LoadId LOAD_ID = CosLoadBalancing::CPU; - -int -parse_args (int argc, char *argv[]) -{ - ACE_Get_Opt get_opts (argc, argv, "l:"); - - int c; - - while ((c = get_opts ()) != -1) - switch (c) - { - case 'l': - location = get_opts.opt_arg (); - break; - - default: - ACE_ERROR_RETURN ((LM_ERROR, - "Usage: %s -l <ior>\n", - argv[0]), - -1); - } - - return 0; -} - -void -check_loads (const CosLoadBalancing::LoadList & loads - ACE_ENV_ARG_DECL) -{ - if (loads.length () != 1) - { - ACE_ERROR ((LM_ERROR, - "ERROR: Load list length is not equal to one.\n")); - - ACE_THROW (CORBA::INTERNAL ()); - } - - if (loads[0].id != LOAD_ID - || loads[0].value < 0) - { - ACE_ERROR ((LM_ERROR, - "ERROR: Returned load is not a CPU load.\n")); - - ACE_THROW (CORBA::INTERNAL ()); - } -} - -int -main (int argc, char *argv[]) -{ - ACE_DECLARE_NEW_CORBA_ENV; - ACE_TRY - { - CORBA::ORB_var orb = - CORBA::ORB_init (argc, - argv, - "" - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - // Obtain a reference to the CodecFactory. - CORBA::Object_var obj = - orb->resolve_initial_references ("LoadManager" - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CosLoadBalancing::LoadManager_var lm = - CosLoadBalancing::LoadManager::_narrow (obj.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CosLoadBalancing::Location the_location (1); - the_location.length (1); - - the_location[0].id = CORBA::string_dup (location); - - // Attempt to get loads from the LoadManager. - ACE_DEBUG ((LM_INFO, - "\n" - "Retrieving loads from LoadManager ...")); - - CosLoadBalancing::LoadList_var loads; - - CORBA::Boolean retrieved_load = 0; - - // Try a few times until a load is capable of being retrieved. - for (int i = 0; i < MAX_RETRIES && retrieved_load == 0; ++i) - { - ACE_TRY_EX (foo) - { - loads = lm->get_loads (the_location - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK_EX (foo); - - retrieved_load = 1; - } - ACE_CATCHANY - { - ACE_DEBUG ((LM_DEBUG, ".")); // Show some progress. - - // Give some time for loads to be reported to the - // LoadManager. - ACE_OS::sleep (2); - } - ACE_ENDTRY; - ACE_TRY_CHECK; - } - - if (retrieved_load == 0) - ACE_ERROR_RETURN ((LM_ERROR, - "\nERROR: Unable to retrieve loads " - "from LoadManager.\n"), - -1); - else - ACE_DEBUG ((LM_INFO, - " DONE\n")); - - ::check_loads (loads.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - // Attempt to get loads directly from the LoadMonitor. - CosLoadBalancing::LoadMonitor_var monitor = - lm->get_load_monitor (the_location - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CosLoadBalancing::Location_var cpu_mon_location = - monitor->the_location (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (cpu_mon_location.in () != the_location) - { - ACE_ERROR ((LM_ERROR, - "ERROR: Mismatched CPU load monitor location\n")); - - ACE_TRY_THROW (CORBA::INTERNAL ()); - } - - ACE_DEBUG ((LM_INFO, - "Retrieving loads directly from LoadMonitor ...")); - - loads = monitor->loads (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - ACE_DEBUG ((LM_INFO, - " DONE\n")); - - ::check_loads (loads.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "CPU Load Monitor test:"); - return -1; - } - ACE_ENDTRY; - - ACE_DEBUG ((LM_INFO, "CPU Load Monitor test passed.\n\n")); - - return 0; -} diff --git a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/client.dsp b/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/client.dsp deleted file mode 100644 index 4c1a46bef52..00000000000 --- a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/client.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="CPU Client" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=CPU Client - 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 "client.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 "client.mak" CFG="CPU Client - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "CPU Client - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "CPU Client - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "CPU Client - 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 "../../../../../.." /I "../../../../.." /I "../../../../../orbsvcs" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
-# SUBTRACT CPP /YX
-# 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 ace.lib TAO.lib TAO_PortableServer.lib TAO_Messaging.lib TAO_CosNaming.lib TAO_PortableGroup.lib TAO_CosLoadBalancing.lib TAO_Valuetype.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\..\..\..\ace" /libpath:"..\..\..\..\..\tao" /libpath:"..\..\..\..\..\tao\PortableServer" /libpath:"..\..\..\..\..\tao\Messaging" /libpath:"..\..\..\..\..\orbsvcs\orbsvcs" /libpath:"..\..\..\..\..\tao\Valuetype"
-
-!ELSEIF "$(CFG)" == "CPU Client - 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 "../../../../../.." /I "../../../../.." /I "../../../../../orbsvcs" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
-# SUBTRACT CPP /YX
-# 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 aced.lib TAOd.lib TAO_PortableServerd.lib TAO_Messagingd.lib TAO_CosNamingd.lib TAO_PortableGroupd.lib TAO_CosLoadBalancingd.lib TAO_Valuetyped.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\..\..\ace" /libpath:"..\..\..\..\..\tao" /libpath:"..\..\..\..\..\tao\PortableServer" /libpath:"..\..\..\..\..\tao\Messaging" /libpath:"..\..\..\..\..\orbsvcs\orbsvcs" /libpath:"..\..\..\..\..\tao\Valuetype"
-
-!ENDIF
-
-# Begin Target
-
-# Name "CPU Client - Win32 Release"
-# Name "CPU Client - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp"
-# Begin Source File
-
-SOURCE=.\client.cpp
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/run_test.pl b/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/run_test.pl deleted file mode 100755 index 7b7ed466ffc..00000000000 --- a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/run_test.pl +++ /dev/null @@ -1,61 +0,0 @@ -eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' - & eval 'exec perl -S $0 $argv:q' - if 0; - -# -*- perl -*- -# $Id$ - -use lib "../../../../../../bin"; -use PerlACE::Run_Test; - -print STDERR "\n\n==== Running CPU Load Monitor test\n"; - - -$lm_ior = "lm.ior"; -unlink $lm_ior; - -$status = 0; - -$init_ref = "-ORBInitRef LoadManager=file://" . $lm_ior; - -$location = "MyLocation"; - -$LM = new PerlACE::Process ("../../../../LoadBalancer/LoadManager", - "-o " . $lm_ior); - -$MON = new PerlACE::Process ("../../../../LoadBalancer/LoadMonitor", - "-l " . $location - . " -t CPU -s PULL " - . $init_ref); - -$CL = new PerlACE::Process ("client", - $init_ref - . " -l " . $location); - -$LM->Spawn (); - -if (PerlACE::waitforfile_timed ($lm_ior, 8) == -1) { - print STDERR "ERROR: cannot find file LoadManager IOR: " . $lm_ior ."\n"; - exit 1; -} - -$MON->Spawn (); - -$client = $CL->SpawnWaitKill (100); - -if ($client != 0) { - print STDERR "ERROR: client returned $client\n"; - $status = 1; -} - -$load_monitor = $MON->TerminateWaitKill (10); -$load_manager = $LM->TerminateWaitKill (10); - -if ($load_manager != 0 || $load_monitor != 0) { - print STDERR "Error terminating LoadManager or LoadMonitor.\n"; - $status = 1; -} - -unlink $lm_ior; - -exit $status; diff --git a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/Makefile b/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/Makefile deleted file mode 100644 index 21fb0e5115b..00000000000 --- a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/Makefile +++ /dev/null @@ -1,29 +0,0 @@ -#---------------------------------------------------------------------------- -# -# $Id$ -# -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -DIRS = \ - CPU - - -ifndef TAO_ROOT - TAO_ROOT = $(ACE_ROOT)/TAO -endif - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(TAO_ROOT)/rules.tao.GNU - -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nolocal.GNU diff --git a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/Makefile.bor b/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/Makefile.bor deleted file mode 100644 index 51fb5aa2254..00000000000 --- a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/Makefile.bor +++ /dev/null @@ -1,12 +0,0 @@ -# -# Makefile for building the TAO Load Monitor tests -# -# $Id$ -# - - -DIRS = \ - CPU - - -!include <$(ACE_ROOT)\include\makeinclude\recurse.bor> diff --git a/TAO/orbsvcs/tests/LoadBalancing/Makefile b/TAO/orbsvcs/tests/LoadBalancing/Makefile index 9e80fe44797..0a480c54c0c 100644 --- a/TAO/orbsvcs/tests/LoadBalancing/Makefile +++ b/TAO/orbsvcs/tests/LoadBalancing/Makefile @@ -9,8 +9,7 @@ #---------------------------------------------------------------------------- DIRS = \ - GenericFactory \ - LoadMonitor + GenericFactory ifndef TAO_ROOT diff --git a/TAO/orbsvcs/tests/LoadBalancing/Makefile.bor b/TAO/orbsvcs/tests/LoadBalancing/Makefile.bor index 1bae18dc4de..51f8f96fdb3 100644 --- a/TAO/orbsvcs/tests/LoadBalancing/Makefile.bor +++ b/TAO/orbsvcs/tests/LoadBalancing/Makefile.bor @@ -6,8 +6,7 @@ DIRS = \ - GenericFactory \ - LoadMonitor + GenericFactory !include <$(ACE_ROOT)\include\makeinclude\recurse.bor> diff --git a/TAO/orbsvcs/tests/RTCosScheduling/Makefile b/TAO/orbsvcs/tests/RTCosScheduling/Makefile deleted file mode 100644 index 4c02fec255e..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/Makefile +++ /dev/null @@ -1,78 +0,0 @@ -#---------------------------------------------------------------------------- -# -# $Id$ -# -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -ifndef TAO_ROOT - TAO_ROOT = $(ACE_ROOT)/TAO -endif # ! TAO_ROOT - -# On non-Windows environment, we should at least define -# the export_include IDL flag. -TAO_IDLFLAGS +=\ - -Wb,export_macro=testSched_Export \ - -Wb,export_include=testSched_export.h - -LIB = libtestSched_Common.a -SHLIB = libtestSched_Common.$(SOEXT) - -IDL_FILES = testSched -IDL_SRC = testSchedC testSchedS - -ACE_SHLIBS = -lTAO_PortableServer -lTAO -lACE -LDLIBS = -lTAO_PortableServer -lTAO -SRCS = $(IDL_SRC) -LSRC = $(addsuffix .cpp,$(IDL_SRC) ) -CCFLAGS := $(strip $(subst -fno-implicit-templates,,$(CCFLAGS))) -g -CPPFLAGS += -DACE_HAS_GNU_REPO -CPPFLAGS += -I$(TAO_ROOT)/orbsvcs -I$(TAO_ROOT)/tao -CPPFLAGS += -D_DEBUG -BIN = client server - - -CLIENT_OBJS = $(addsuffix .o, client ) -SERVER_OBJS = $(addsuffix .o, server Object1_i ) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(TAO_ROOT)/rules.tao.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -#---------------------------------------------------------------------------- -# Local targets (and local hacks) -#---------------------------------------------------------------------------- - -LDFLAGS += -L$(TAO_ROOT)/tao -CPPFLAGS += -I$(TAO_ROOT) -I$(TAO_ROOT)/tao -I$(TAO_ROOT)/orbsvcs - -.PRECIOUS: $(foreach file, $(IDL_FILES), $(foreach ext, $(IDL_EXT), $(file)$(ext)))) - -realclean: clean - -$(RM) $(foreach file, $(IDL_FILES), $(foreach ext, $(IDL_EXT), $(file)$(ext))) - -LDFLAGS = -L$(ACE_ROOT)/ace -L. -g -LDLIBS = -lTAO_RTCosScheduling -ltestSched_Common -lTAO_CosNaming -lTAO_Svc_Utils -lTAO_IORTable -lTAO_RTPortableServer -lTAO_PortableServer -lTAO_RTCORBA -lTAO - -include $(TAO_ROOT)/taoconfig.mk - -client: $(addprefix $(VDIR),$(CLIENT_OBJS)) - $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK) - -server: $(addprefix $(VDIR),$(SERVER_OBJS)) - $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK) - - -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. diff --git a/TAO/orbsvcs/tests/RTCosScheduling/Makefile.RTCosScheduling_Client b/TAO/orbsvcs/tests/RTCosScheduling/Makefile.RTCosScheduling_Client deleted file mode 100644 index b98bc263692..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/Makefile.RTCosScheduling_Client +++ /dev/null @@ -1,123 +0,0 @@ -#---------------------------------------------------------------------------- -# GNU Makefile -# -# @file Makefile.RTCosScheduling_Client -# -# $Id$ -# -# This file was automatically generated by MPC. Any changes made directly to -# this file will be lost the next time it is generated. -# -#---------------------------------------------------------------------------- -MAKEFILE = Makefile.RTCosScheduling_Client -DEPENDENCY_FILE = .depend.Makefile.RTCosScheduling_Client -BIN_UNCHECKED = client - -ifndef TAO_ROOT - TAO_ROOT = $(ACE_ROOT)/TAO -endif -ifndef CIAO_ROOT - CIAO_ROOT = $(TAO_ROOT)/CIAO -endif - -TAO_IDL = ../../../bin/tao_idl -IDL_FILES = testSched -IDL_SRC = $(foreach ext, C.cpp S.cpp, $(foreach file, $(IDL_FILES), $(file)$(ext))) - -FILES = \ - testSchedC \ - testSchedS \ - client - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- -LDLIBS = -lTAO_RTCosScheduling -lTAO_RTPortableServer -lTAO_RTCORBA -lTAO_PortableServer -lTAO_IORInterceptor -lTAO_Valuetype -lTAO_ObjRefTemplate -lTAO -lACE -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -## We don't need the ACELIB setting from wrapper_macros.GNU -ACELIB = -include $(TAO_ROOT)/rules.tao.GNU - -# To build multiple executables in the same directory on AIX, it works -# best to have a template directory per project. -# The compiler/linker isn't too smart about instantiating templates... -ifdef TEMPINCDIR -TEMPINCDIR := $(TEMPINCDIR)/RTCosScheduling_Client - -all: $(TEMPINCDIR) - -$(TEMPINCDIR): - @-test -d $(TEMPINCDIR) || mkdir -p $(TEMPINCDIR) $(ACE_NUL_STDERR) - -endif - -CURRENT_COMPONENTS := $(shell sh $(ACE_ROOT)/bin/ace_components --orbsvcs) -ifeq ($(rt_corba),1) -BIN = $(BIN_UNCHECKED) -else - all: require_warning -endif - -OBJS = $(addsuffix .o, $(notdir $(FILES))) -SRC = $(addsuffix .cpp, $(FILES)) - -ifneq ($(BIN),) -all: idl_stubs - -# This rule forces make to run the idl_stubs -# target before building any of the source files. -testSchedC.cpp testSchedS.cpp client.cpp: idl_stubs -endif - -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU - -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU -include $(TAO_ROOT)/taoconfig.mk - -CPPFLAGS += -I../../../orbsvcs -I../../.. -I../../../tao -I../../.. -ifeq ($(static_libs),1) - ifneq ($(LIB),) - CPPFLAGS += -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS - endif -endif - - -LDFLAGS += -L../../../lib - -TAO_IDLFLAGS += -Ge 1 -Sc -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h -Gv -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- -require_warning: - @echo This project will not be built due to one of the following missing features: - @echo rt_corba - -../../../lib: - -@mkdir -p "../../../lib" - - -ADDITIONAL_IDL_TARGETS = -# IDL File Directory: . - -ifneq ($(ADDITIONAL_IDL_TARGETS),) -idl_stubs: $(ADDITIONAL_IDL_TARGETS) -endif - -.PRECIOUS: $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext))) - -ifndef kylix -$(BIN): $(addprefix $(VDIR), $(OBJS)) - $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $@ $^ $(VLDLIBS) $(POSTLINK) -else -$(BIN): $(addprefix $(VDIR), $(OBJS)) - $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $(VLDLIBS) $(BORINITEXEOBJ) $(POSTLINK) $^, $@,, -endif - -realclean: clean - -$(RM) $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext))) -ifneq ($(GENERATED_DIRTY),) - -$(RM) -r $(GENERATED_DIRTY) -endif - diff --git a/TAO/orbsvcs/tests/RTCosScheduling/Makefile.RTCosScheduling_Server b/TAO/orbsvcs/tests/RTCosScheduling/Makefile.RTCosScheduling_Server deleted file mode 100644 index 499ddbe236d..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/Makefile.RTCosScheduling_Server +++ /dev/null @@ -1,124 +0,0 @@ -#---------------------------------------------------------------------------- -# GNU Makefile -# -# @file Makefile.RTCosScheduling_Server -# -# $Id$ -# -# This file was automatically generated by MPC. Any changes made directly to -# this file will be lost the next time it is generated. -# -#---------------------------------------------------------------------------- -MAKEFILE = Makefile.RTCosScheduling_Server -DEPENDENCY_FILE = .depend.Makefile.RTCosScheduling_Server -BIN_UNCHECKED = server - -ifndef TAO_ROOT - TAO_ROOT = $(ACE_ROOT)/TAO -endif -ifndef CIAO_ROOT - CIAO_ROOT = $(TAO_ROOT)/CIAO -endif - -TAO_IDL = ../../../bin/tao_idl -IDL_FILES = testSched -IDL_SRC = $(foreach ext, C.cpp S.cpp, $(foreach file, $(IDL_FILES), $(file)$(ext))) - -FILES = \ - testSchedC \ - testSchedS \ - Object1_i \ - server - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- -LDLIBS = -lTAO_RTCosScheduling -lTAO_RTPortableServer -lTAO_RTCORBA -lTAO_PortableServer -lTAO_IORInterceptor -lTAO_Valuetype -lTAO_ObjRefTemplate -lTAO -lACE -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -## We don't need the ACELIB setting from wrapper_macros.GNU -ACELIB = -include $(TAO_ROOT)/rules.tao.GNU - -# To build multiple executables in the same directory on AIX, it works -# best to have a template directory per project. -# The compiler/linker isn't too smart about instantiating templates... -ifdef TEMPINCDIR -TEMPINCDIR := $(TEMPINCDIR)/RTCosScheduling_Server - -all: $(TEMPINCDIR) - -$(TEMPINCDIR): - @-test -d $(TEMPINCDIR) || mkdir -p $(TEMPINCDIR) $(ACE_NUL_STDERR) - -endif - -CURRENT_COMPONENTS := $(shell sh $(ACE_ROOT)/bin/ace_components --orbsvcs) -ifeq ($(rt_corba),1) -BIN = $(BIN_UNCHECKED) -else - all: require_warning -endif - -OBJS = $(addsuffix .o, $(notdir $(FILES))) -SRC = $(addsuffix .cpp, $(FILES)) - -ifneq ($(BIN),) -all: idl_stubs - -# This rule forces make to run the idl_stubs -# target before building any of the source files. -testSchedC.cpp testSchedS.cpp Object1_i.cpp server.cpp: idl_stubs -endif - -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU - -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU -include $(TAO_ROOT)/taoconfig.mk - -CPPFLAGS += -I../../../orbsvcs -I../../.. -I../../../tao -I../../.. -ifeq ($(static_libs),1) - ifneq ($(LIB),) - CPPFLAGS += -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS - endif -endif - - -LDFLAGS += -L../../../lib - -TAO_IDLFLAGS += -Ge 1 -Sc -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h -Gv -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- -require_warning: - @echo This project will not be built due to one of the following missing features: - @echo rt_corba - -../../../lib: - -@mkdir -p "../../../lib" - - -ADDITIONAL_IDL_TARGETS = -# IDL File Directory: . - -ifneq ($(ADDITIONAL_IDL_TARGETS),) -idl_stubs: $(ADDITIONAL_IDL_TARGETS) -endif - -.PRECIOUS: $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext))) - -ifndef kylix -$(BIN): $(addprefix $(VDIR), $(OBJS)) - $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $@ $^ $(VLDLIBS) $(POSTLINK) -else -$(BIN): $(addprefix $(VDIR), $(OBJS)) - $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $(VLDLIBS) $(BORINITEXEOBJ) $(POSTLINK) $^, $@,, -endif - -realclean: clean - -$(RM) $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext))) -ifneq ($(GENERATED_DIRTY),) - -$(RM) -r $(GENERATED_DIRTY) -endif - diff --git a/TAO/orbsvcs/tests/RTCosScheduling/Object1_i.cpp b/TAO/orbsvcs/tests/RTCosScheduling/Object1_i.cpp deleted file mode 100644 index c491eb0b2a3..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/Object1_i.cpp +++ /dev/null @@ -1,81 +0,0 @@ -/* -*- C++ -*- */ - -//============================================================================= -/** - * @file Object1_i.cpp - * - * $Id$ - * - * @author Matt Murphy <murphym@cs.uri.edu> - */ -//============================================================================= - -#include "Object1_i.h" -#include "ace/ACE.h" -//#include "tao/RTCORBA/RTCORBA.h" -////##include "ace/Task.h" -// -//#if !defined (ACE_LACKS_PRAGMA_ONCE) -//# pragma once -//#endif /* ACE_LACKS_PRAGMA_ONCE */ -// -////#include "ace/CORBA_macros.h" -////#include "tao/RTCORBA/Priority_Mapping_Manager.h" -////#include "tao/corba.h" -////#include "tao/ORB_Core.h" -// - -Object1_impl::Object1_impl() - throw (CORBA::SystemException) -{ -} - - -Object1_impl::~Object1_impl() - throw (CORBA::SystemException) -{ -} - - -void Object1_impl::method1(const char* activity, - CORBA::Long seconds, - char* &output) - throw (testSched::testSchedException) -{ - const int scale_factor = 2000; - int work; - const int time_size = 35; - ACE_TCHAR date_and_time[time_size]; - char buf[128]; - char buf2[128]; - - ACE_OS::sprintf(buf, - "%s\t%s\tBeginning work on the server\n", - ACE::timestamp(date_and_time, time_size), - activity); - ACE_DEBUG((LM_DEBUG,"%s",buf)); - - - - if (strcmp(activity,"Client1") == 0) - { - ACE_OS::sleep(5); - } - - /// Simulate some work - static CORBA::ULong prime_number = 9619; - work = scale_factor * seconds; - for (; work != 0; work--) - { - ACE::is_prime (prime_number, 2, prime_number / 2); - } - - ACE_OS::sprintf(buf2, - "%s\t%s\tFinished work on the server\n", - ACE::timestamp(date_and_time, time_size), - activity); - ACE_DEBUG((LM_DEBUG,"%s",buf2)); - ACE_OS_String::strcat(buf,buf2); - output = ACE_OS_String::strdup(buf); - -} diff --git a/TAO/orbsvcs/tests/RTCosScheduling/Object1_i.h b/TAO/orbsvcs/tests/RTCosScheduling/Object1_i.h deleted file mode 100644 index 4e64ff1f139..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/Object1_i.h +++ /dev/null @@ -1,55 +0,0 @@ -/* -*- C++ -*- */ - -//============================================================================= -/** - * @file Object1_i.h - * - * $Id$ - * - * @author Matt Murphy <murphym@cs.uri.edu> - */ -//============================================================================= - -#ifndef Object1_I_H -#define Object1_I_H - -#include "testSchedS.h" -//#include "tao/RTCORBA/RTCORBA.h" -//##include "ace/Task.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -//#include "ace/CORBA_macros.h" -//#include "tao/RTCORBA/Priority_Mapping_Manager.h" -//#include "tao/corba.h" -//#include "tao/ORB_Core.h" - - - -/** - * @class Object1_i - * - * @brief This class is used to test the RTCORBA 1.0 Scheduling Service - * - */ - - -class Object1_impl : public POA_testSched::Object1, - PortableServer::RefCountServantBase -{ - public: - Object1_impl() - throw (CORBA::SystemException); - - virtual ~Object1_impl() - throw (CORBA::SystemException); - - virtual void method1(const char *activity, - CORBA::Long seconds, - char *&output) - throw (testSched::testSchedException); -}; - -#endif /* Object1_I_H */ diff --git a/TAO/orbsvcs/tests/RTCosScheduling/README b/TAO/orbsvcs/tests/RTCosScheduling/README deleted file mode 100644 index 8b19750f222..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/README +++ /dev/null @@ -1,272 +0,0 @@ -README,v 1.0 2003/07/09 - -This is a test for RTCORBA 1.0 scheduling Service. - -Matt Murphy <murphym@cs.uri.edu> -University of Rhode Island - -Scenario: --------- -Client nodes connect to a server to make object calls to execute -on the server. An offline analysis tool has determined appropriate -priorities for each task on the system. These priorities are stored -in a configuration file. - -The server is started with the appropriate object instantiated that -will be used by the clients, and the server has created a local -ServerScheduler object, which sets the RT policies necessary for -the scheduling service to execute (set through the -ServerScheduler->create_POA(...) method.). The Client creates a local -ClientScheduler object, which read the configuration file and stores -the activity/priority relationships for the given node. Clients make -a schedule_activity("activity_name") call to the ClientScheduler -object to set the local system priority as specified by the activity name. - -When a client makes a CORBA call on an object residing on the server, -the Client Propagated Priority policy (set in ServerScheduler) -ensures that the server receives the priority the client runs at. A -ServerScheduler receive_request() interceptor intercepts the method -call and locks the thread while there are higher priority tasks executing -on the server. The ServerScheduler then sets the server thread to -run using MPCP while the task executes. A ServerScheduler send_reply -interceptor lowers the server thread priority when execution is complete. - - -To compile (on unix): ----------- -Ensure that RTCosScheduling is compiled. There should be a -libTAO_RTCosScheduling.so file in $ACE_ROOT/TAO/orbsvcs/orbsvcs. - -If it is not there, run -tao_idl -I $TAO_ROOT/ RTCosScheduling.pidl -in $ACE_ROOT/TAO/orbsvcs/orbsvcs/RTCoscScheduler/ -When this is done, some versions of TAO will erroneously include the line: -#include "tao/PortableServer/PortableServerS.h" -in RTCosSchedulingS.h. Comment this line out. - -Now from the $ACE_ROOT/TAO/orbsvcs/orbsvcs/ directory, run -make -f Makefile.RTCosScheduling - - -To compile the test, just run make in the test directory - - -To run (on Unix): -------- -Run the test as root since this test sets the priorities on -both the client and server. -Make sure that your LD_LIBRARY_PATH and TAO_ROOT are set apprioriately: - -# ./run_test.pl - - -Options: --------- -Client: --B int # amount of work performed before the CORBA call is made --R int # amount of work performed on server during the CORBA call --A int # amount of work performed after the corba call --N char* # name of the node --X 0|1 # Flag to use yealtime (Y=1) --C char* # intermediate client output file - # (used by the run_test validator) --S char* # intermediate server output file - # (used by the run_test validator) --F char* # name of the configuration file that their - # activities/priorities/resources are stored in --T char* # name of the activity that the client will run - -Server: --N char* # The name of the node --F char* # The name of the configuration file --A char* # the name of the server resource --X 1|0 # Flag to use realtime (Y=1) - -Tests ---------- - -Functionality Tests -------------------- -Test1 ensures that the scheduling service works as expected. -Three clients are started with the following parameters: - -Client priority release time remote execution time -Client1 Low 0 30 -Client2 Medium 0 3 -Client3 High 2 3 - -Where release time is the amount of work done on the local client before -the remote method call is made. Each remote method call is made on the -same server object, so the ServerScheduler must schedule execution of -each of these three clients so that they use the remote object in the -appropriate order. - -Note that the scheduling service is only tested when both the client and -the server are using the 1.0 scheduler. (Test1) -In the functionality tests the clients start up at the same time. Client1 -immediately makes a remote method call to the server. Clients 2 and 3 -make method calls to the server object that arrive while the client 1 -method call is still executing on the server. MPCP guarantees that -client1's priority is elevated so that it is allowed to finish, so clients -2 and 3 are placed in a pending queue to await execution. Once client -1 finishes, the activity in queue with the highest client propagated -priority (client3) runs. When it is finished, client 2 runs. - -When Client1 execution returns from the method call it is blocked in this -test because it runs at a lower priority than the server execution of -clients 2 and 3 (this is because this test is designed to run on a single -node!). - -When clients 2 and 3 return from the method call, client 3 finishes execution -because it has the highest priority, then client2 finishes, finally client 1. - -If the scheduling service test failed an error message will appear describing -the point of failure. Please note that some artificial changes to the client -and server object code since this test is designed to run on one node. -Specifically, there is an ACE_OS::sleep(2) in object1_i::method1() that -executes only when client1 makes the method call. This is because the client1 -method call is running at an elevated MPCP priority, and needs to sleep long -enough for clients 2 and 3 to execute on the client and make method calls on -object1. If it did not sleep, the method1() method call would execute to -completion due the singe node nature of this test. (It is running at an -elevated priority on the same processor as the clients 2 and 3). - -There is also a sleep method in the client code that sleeps for 1 as soon as -each client starts up. This occurs before schedule activity is called, and is -in place to allow each client to start up in the event that the default -priority for new processes is higher than the the priorities set in the config -file. If the default priority was higher and the clients did not sleep, each -would not let the sucessive one start at the appropriate time. - -Please note that in designing a test that since this runs on a single node, there -is no noticeable network delay. There will be a greater network delay on a truly -distributed system. If the test does not run correctly on you machine, try -changing the sleep delays to allow all processes to start. If they all start, -the test should work. - - -Tests 2,3,4 do not execute with both ClientScheduler and a ServerScheduler -so there is no way to validate that execution is appropriate. In test 2, -visual inspection of the output shows that tasks are scheduled on the client -appropriately. Similarly, test 3 uses MPCP on the server, but is using the -default priority that the client ran at rather than a priority set on the -client by a schedule_activity() call. - - - -Exception Tests ---------------- -Tests 5,6,7,8 ensure that the 1.0 scheduling service handles excpetions -and other errors. -These test determine that the proper exceptions are thrown when the -scheduling service receives improper parameters from either the Client -or the server. - - - -Expected Output ---------------- -==== Running RTCORBA 1.0 Scheduling Service test -==== Note that the first column is the time, it will be different for you - -TIME OBJECT LOCATION ACTIVITY - -==== Test1 - YES client side scheduling, YES server side scheduling - 14:05:38.691428 Client1 Client Beginning Activity with priority 668 - 14:05:38.692174 Client1 Client Calling method1 at priority 668 - 14:05:38.702362 Client1 Server Beginning work on the server - 14:05:39.695854 Client2 Client Beginning Activity with priority 2674 - 14:05:39.965150 Client3 Client Beginning Activity with priority 4681 - 14:05:40.233140 Client3 Client Calling method1 at priority 4681 - 14:05:40.235364 Client2 Client Calling method1 at priority 2674 - 14:05:44.700578 Client1 Server Method1 finished work on the server - 14:05:44.701183 Client3 Server Beginning work on the server - 14:05:45.103074 Client3 Server Method1 finished work on the server - 14:05:45.103365 Client2 Server Beginning work on the server - 14:05:45.503888 Client2 Server Method1 finished work on the server - 14:05:45.504470 Client3 Client Done with method1 with priority 4681 - 14:05:45.504529 Client3 Client Done with test at priority 4681 - 14:05:45.508665 Client2 Client Done with method1 with priority 2674 - 14:05:45.508786 Client2 Client Done with test at priority 2674 - 14:05:45.512861 Client1 Client Done with method1 with priority 668 - 14:05:45.512929 Client1 Client Done with test at priority 668 -The scheduling service worked as expected - -==== Test2 - NO client side scheduling, YES server side scheduling - 14:05:47.708843 Client1 Client Beginning Activity - 14:05:47.709428 Client1 Client Calling method1 - 14:05:47.718302 Client1 Server Beginning work on the server - 14:05:48.710637 Client2 Client Beginning Activity - 14:05:48.710847 Client2 Client Calling method1 - 14:05:48.714555 Client3 Client Beginning Activity - 14:05:48.984240 Client3 Client Calling method1 - 14:05:48.986737 Client2 Server Beginning work on the server - 14:05:48.992367 Client3 Server Beginning work on the server - 14:05:49.754084 Client2 Server Method1 finished work on the server - 14:05:49.754667 Client2 Client Done with method1 - 14:05:50.182869 Client3 Server Method1 finished work on the server - 14:05:50.183503 Client3 Client Done with method1 - 14:05:54.586684 Client1 Server Method1 finished work on the server - 14:05:54.587270 Client1 Client Done with method1 - -==== Test3 - YES client side scheduling, NO server side scheduling - 14:05:59.734408 Client1 Client Beginning Activity with priority 668 - 14:05:59.735149 Client1 Client Calling method1 at priority 668 - 14:05:59.748380 Client1 Server Beginning work on the server - 14:06:00.738820 Client2 Client Beginning Activity with priority 2674 - 14:06:01.008121 Client3 Client Beginning Activity with priority 4681 - 14:06:01.276250 Client3 Client Calling method1 at priority 4681 - 14:06:01.278463 Client2 Client Calling method1 at priority 2674 - 14:06:01.284581 Client3 Server Beginning work on the server - 14:06:01.685291 Client3 Server Method1 finished work on the server - 14:06:01.686140 Client3 Client Done with method1 with priority 4681 - 14:06:01.686199 Client3 Client Done with test at priority 4681 - 14:06:01.692324 Client2 Server Beginning work on the server - 14:06:02.092657 Client2 Server Method1 finished work on the server - 14:06:02.093181 Client2 Client Done with method1 with priority 2674 - 14:06:02.093237 Client2 Client Done with test at priority 2674 - 14:06:06.102033 Client1 Server Method1 finished work on the server - 14:06:06.102576 Client1 Client Done with method1 with priority 668 - 14:06:06.102631 Client1 Client Done with test at priority 668 - -==== Test4 - NO client side scheduling, NO server side scheduling - 14:06:08.750219 Client1 Client Beginning Activity - 14:06:08.750789 Client1 Client Calling method1 - 14:06:08.760283 Client1 Server Beginning work on the server - 14:06:09.751665 Client2 Client Beginning Activity - 14:06:09.751877 Client2 Client Calling method1 - 14:06:09.755382 Client3 Client Beginning Activity - 14:06:10.025305 Client3 Client Calling method1 - 14:06:10.027841 Client2 Server Beginning work on the server - 14:06:10.101792 Client3 Server Beginning work on the server - 14:06:10.736601 Client2 Server Method1 finished work on the server - 14:06:10.737125 Client2 Client Done with method1 - 14:06:11.238066 Client3 Server Method1 finished work on the server - 14:06:11.238607 Client3 Client Done with method1 - 14:06:15.644066 Client1 Server Method1 finished work on the server - 14:06:15.644596 Client1 Client Done with method1 - -==== Testing exceptions - -==== Test5 - Testing ClientScheduler exception for invalid activity name -(11071|16386) EXCEPTION, Invalid activity name - -user exception, ID 'IDL:RTCosScheduling/UnknownName:1.0' - -==== Test6 - Testing client exception when invalid config file specified -Could not find the config file INVALID_FILE.cfg, aborting - -==== Test7 - Testing server exception when invalid Object Name specified -==== (Object name not in config file) -(11075|16384) EXCEPTION, Unknown object passed to schedule_object - -user exception, ID 'IDL:RTCosScheduling/UnknownName:1.0' - -==== Test8 - Testing server exception when invalid config file specified -Could not find the config file INVALID_FILE.cfg, aborting -ERROR: server returned 1 - - - - - diff --git a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling.mpc b/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling.mpc deleted file mode 100644 index 484cbe5f492..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling.mpc +++ /dev/null @@ -1,16 +0,0 @@ -project(*server): rtcosscheduling, rt_server, orbsvcsexe { - exename = server - comps = - Source_Files { - Object1_i.cpp - server.cpp - } -} - -project(*client): rtcosscheduling, rt_client, orbsvcsexe { - exename = client - comps = - Source_Files { - client.cpp - } -} diff --git a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.bor b/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.bor deleted file mode 100644 index ab24f189def..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.bor +++ /dev/null @@ -1,72 +0,0 @@ -# Makefile for building the client exe with Borland C++ Builder - -NAME = client - -TAO_IDL = $(CORE_BINDIR)\tao_idl -g $(CORE_BINDIR)\gperf.exe - -OBJFILES = \ - $(OBJDIR)\client.obj \ - $(OBJDIR)\testSchedC.obj \ - $(OBJDIR)\testSchedS.obj - -LFLAGS = \ - -j..\..\..\lib\$(CONFIG_SUBDIR) -j..\..\..\lib \ - -L..\..\..\lib\$(CONFIG_SUBDIR) -L..\..\..\lib \ - -j$(CORE_BINDIR) \ - -L$(CORE_BINDIR) - -LIBFILES = \ - TAO_RTCosScheduling$(LIB_DECORATOR).lib \ - TAO_RTPortableServer$(LIB_DECORATOR).lib \ - TAO_RTCORBA$(LIB_DECORATOR).lib \ - TAO_PortableServer$(LIB_DECORATOR).lib \ - TAO_IORInterceptor$(LIB_DECORATOR).lib \ - TAO_Valuetype$(LIB_DECORATOR).lib \ - TAO_ObjRefTemplate$(LIB_DECORATOR).lib \ - TAO$(LIB_DECORATOR).lib \ - ACE$(LIB_DECORATOR).lib \ - - -IDLFILES = \ - $(IDLDIR)\testSched.idl - -!ifdef STATIC -LIB_FLAGS = -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS -DLL_FLAGS = -!else -LIB_FLAGS = -DLL_FLAGS = -!endif - -CFLAGS = \ - -I..\..\..\orbsvcs \ - -I..\..\.. \ - -I..\..\..\tao \ - -I..\..\.. \ - $(LIB_FLAGS) \ - $(DLL_FLAGS) - -CPPDIR = . - -IDLDIR = . - -INCLUDES = \ - testSchedC.h \ - testSchedS.h \ - testSchedC.i \ - testSchedS.i \ - testSched.idl - -all: idl_src_files - -!include <$(ACE_ROOT)\include\makeinclude\build_exe.bor> - -# -# IDL Build rules -# - -idl_src_files: $(IDLFILES:.idl=C.cpp) $(IDLFILES:.idl=S.cpp) - -# IDL File Directory: . -$(IDLDIR)\testSchedS.cpp $(IDLDIR)\testSchedC.cpp: $(IDLDIR)\testSched.idl - $(TAO_IDL) -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $** diff --git a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.dsp b/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.dsp deleted file mode 100644 index ce855785f30..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.dsp +++ /dev/null @@ -1,192 +0,0 @@ -# Microsoft Developer Studio Project File - Name="RTCosScheduling_Client" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=RTCosScheduling_Client - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE run the tool that generated this project file and specify the
-!MESSAGE nmake output type. You can then use the following command:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling_Client.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 "RTCosScheduling_Client.mak" CFG="RTCosScheduling_Client - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "RTCosScheduling_Client - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "RTCosScheduling_Client - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "RTCosScheduling_Client - Win32 Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Client"
-# PROP Target_Dir ""
-# ADD CPP /nologo /O2 /W3 /GX /MD /GR /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\..\.." /D NDEBUG /D WIN32 /D _CONSOLE /FD /c
-# SUBTRACT CPP /YX
-# ADD RSC /l 0x409 /d NDEBUG /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 advapi32.lib user32.lib /INCREMENTAL:NO TAO_RTCosScheduling.lib TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\..\lib" /nologo /version:1.3.4 /subsystem:console /pdb:"Release\client.pdb" /machine:I386 /out:"Release\client.exe"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Client - Win32 Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "."
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Client"
-# PROP Target_Dir ""
-# ADD CPP /nologo /Ob0 /W3 /Gm /GX /Zi /MDd /GR /Gy /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\..\.." /D _DEBUG /D WIN32 /D _CONSOLE /FD /c
-# SUBTRACT CPP /YX
-# ADD RSC /l 0x409 /d _DEBUG /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 advapi32.lib user32.lib /INCREMENTAL:NO TAO_RTCosSchedulingd.lib TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\..\lib" /nologo /version:1.3.4 /subsystem:console /pdb:".\client.pdb" /debug /machine:I386 /out:".\client.exe"
-
-!ENDIF
-
-# Begin Target
-
-# Name "RTCosScheduling_Client - Win32 Release"
-# Name "RTCosScheduling_Client - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;cxx;c"
-# Begin Source File
-
-SOURCE=".\client.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedC.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hh"
-# Begin Source File
-
-SOURCE=".\testSchedC.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.h"
-# End Source File
-# End Group
-# Begin Group "Inline Files"
-
-# PROP Default_Filter "i;inl"
-# Begin Source File
-
-SOURCE=".\testSchedC.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.i"
-# End Source File
-# End Group
-# Begin Group "Documentation"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=".\README"
-# End Source File
-# End Group
-# Begin Group "IDL Files"
-
-# PROP Default_Filter "idl"
-# Begin Source File
-
-SOURCE=".\testSched.idl"
-
-!IF "$(CFG)" == "RTCosScheduling_Client - Win32 Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\..\lib \
- ..\..\..\..\bin\Release\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Client - Win32 Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\..\lib \
- ..\..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.vcp b/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.vcp deleted file mode 100644 index a51510bcb98..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.vcp +++ /dev/null @@ -1,418 +0,0 @@ -# Microsoft eMbedded Visual Tools Project File - Name="RTCosScheduling_Client" - Package Owner=<4>
-# Microsoft eMbedded Visual Tools Generated Build File, Format Version 6.02
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (WCE ARM) Application" 0x8501
-# TARGTYPE "Win32 (WCE x86) Application" 0x8301
-# TARGTYPE "Win32 (WCE emulator) Application" 0xa601
-
-CFG=RTCosScheduling_Client - Win32 (WCE ARM) Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE run the tool that generated this project file and specify the
-!MESSAGE nmake output type. You can then use the following command:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling_Client.vcn".
-!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 "RTCosScheduling_Client.vcn" CFG="RTCosScheduling_Client - Win32 (WCE ARM) Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "RTCosScheduling_Client - Win32 (WCE ARM) Release" (based on "Win32 (WCE ARM) Application")
-!MESSAGE "RTCosScheduling_Client - Win32 (WCE ARM) Debug" (based on "Win32 (WCE ARM) Application")
-!MESSAGE "RTCosScheduling_Client - Win32 (WCE x86) Release" (based on "Win32 (WCE x86) Application")
-!MESSAGE "RTCosScheduling_Client - Win32 (WCE x86) Debug" (based on "Win32 (WCE x86) Application")
-!MESSAGE "RTCosScheduling_Client - Win32 (WCE emulator) Release" (based on "Win32 (WCE emulator) Application")
-!MESSAGE "RTCosScheduling_Client - Win32 (WCE emulator) Debug" (based on "Win32 (WCE emulator) Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-# PROP ATL_Project 2
-
-!IF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE ARM) Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release\ARM"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Client\ARM"
-# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d NDEBUG /d UNICODE /d _UNICODE /d ARM /d _ARM_ /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=clarm.exe
-# ADD CPP /nologo /O2 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D NDEBUG /D UNICODE /D _UNICODE /D ARM /D _ARM_ /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosScheduling.lib TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\lib\ARM" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"Release\ARM\client.pdb" /debug /machine:ARM /out:"Release\ARM\client.exe"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE ARM) Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\ARM"
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Client\ARM"
-# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d _DEBUG /d UNICODE /d _UNICODE /d ARM /d _ARM_ /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=clarm.exe
-# ADD CPP /nologo /Ob0 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D _DEBUG /D UNICODE /D _UNICODE /D ARM /D _ARM_ /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosSchedulingd.lib TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\lib\ARM" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:".\ARM\client.pdb" /debug /machine:ARM /out:".\ARM\client.exe"
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE x86) Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release\IX86"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Client\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d NDEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /O2 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D NDEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosScheduling.lib TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"Release\IX86\client.pdb" /debug /machine:IX86 /out:"Release\IX86\client.exe"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE x86) Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\IX86"
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Client\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d _DEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /Ob0 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D _DEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosSchedulingd.lib TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:".\IX86\client.pdb" /debug /machine:IX86 /out:".\IX86\client.exe"
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE emulator) Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release\IX86"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Client\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d NDEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /O2 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D NDEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosScheduling.lib TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"Release\IX86\client.pdb" /debug /machine:IX86 /out:"Release\IX86\client.exe"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE emulator) Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\IX86"
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Client\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d _DEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /Ob0 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D _DEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosSchedulingd.lib TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:".\IX86\client.pdb" /debug /machine:IX86 /out:".\IX86\client.exe"
-
-!ENDIF
-
-
-# Begin Target
-
-# Name "RTCosScheduling_Client - Win32 (WCE ARM) Release"
-# Name "RTCosScheduling_Client - Win32 (WCE ARM) Debug"
-# Name "RTCosScheduling_Client - Win32 (WCE x86) Release"
-# Name "RTCosScheduling_Client - Win32 (WCE x86) Debug"
-# Name "RTCosScheduling_Client - Win32 (WCE emulator) Release"
-# Name "RTCosScheduling_Client - Win32 (WCE emulator) Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;cxx;c"
-# Begin Source File
-
-SOURCE=".\client.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedC.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hh"
-# Begin Source File
-
-SOURCE=".\testSchedC.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.h"
-# End Source File
-# End Group
-# Begin Group "Inline Files"
-
-# PROP Default_Filter "i;inl"
-# Begin Source File
-
-SOURCE=".\testSchedC.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.i"
-# End Source File
-# End Group
-# Begin Group "Documentation"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=".\README"
-# End Source File
-# End Group
-# Begin Group "IDL Files"
-
-# PROP Default_Filter "idl"
-# Begin Source File
-
-SOURCE=".\testSched.idl"
-
-!IF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE ARM) Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE ARM) Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE x86) Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE x86) Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE emulator) Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE emulator) Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client_Static.dsp b/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client_Static.dsp deleted file mode 100644 index a7690201fb4..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client_Static.dsp +++ /dev/null @@ -1,192 +0,0 @@ -# Microsoft Developer Studio Project File - Name="RTCosScheduling_Client" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=RTCosScheduling_Client - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE run the tool that generated this project file and specify the
-!MESSAGE nmake output type. You can then use the following command:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling_Client_Static.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 "RTCosScheduling_Client_Static.mak" CFG="RTCosScheduling_Client - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "RTCosScheduling_Client - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "RTCosScheduling_Client - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "RTCosScheduling_Client - Win32 Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Client_Static"
-# PROP Target_Dir ""
-# ADD CPP /nologo /O2 /W3 /GX /MD /GR /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\..\.." /D NDEBUG /D WIN32 /D _CONSOLE /D /D /D /FD /c
-# SUBTRACT CPP /YX
-# ADD RSC /l 0x409 /d NDEBUG /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 advapi32.lib user32.lib /INCREMENTAL:NO TAO_RTCosSchedulings.lib TAO_RTPortableServers.lib TAO_RTCORBAs.lib TAO_PortableServers.lib TAO_IORInterceptors.lib TAO_Valuetypes.lib TAO_ObjRefTemplates.lib TAOs.lib ACEs.lib /libpath:"..\..\..\..\lib" /nologo /version:1.3.4 /subsystem:console /pdb:"Release\client.pdb" /machine:I386 /out:"Release\client.exe"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Client - Win32 Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Client_Static"
-# PROP Target_Dir ""
-# ADD CPP /nologo /Ob0 /W3 /Gm /GX /Zi /MDd /GR /Gy /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\..\.." /D _DEBUG /D WIN32 /D _CONSOLE /D /D /D /FD /c
-# SUBTRACT CPP /YX
-# ADD RSC /l 0x409 /d _DEBUG /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 advapi32.lib user32.lib /INCREMENTAL:NO TAO_RTCosSchedulingsd.lib TAO_RTPortableServersd.lib TAO_RTCORBAsd.lib TAO_PortableServersd.lib TAO_IORInterceptorsd.lib TAO_Valuetypesd.lib TAO_ObjRefTemplatesd.lib TAOsd.lib ACEsd.lib /libpath:"..\..\..\..\lib" /nologo /version:1.3.4 /subsystem:console /pdb:"Debug\client.pdb" /debug /machine:I386 /out:"Debug\client.exe"
-
-!ENDIF
-
-# Begin Target
-
-# Name "RTCosScheduling_Client - Win32 Release"
-# Name "RTCosScheduling_Client - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;cxx;c"
-# Begin Source File
-
-SOURCE=".\client.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedC.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hh"
-# Begin Source File
-
-SOURCE=".\testSchedC.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.h"
-# End Source File
-# End Group
-# Begin Group "Inline Files"
-
-# PROP Default_Filter "i;inl"
-# Begin Source File
-
-SOURCE=".\testSchedC.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.i"
-# End Source File
-# End Group
-# Begin Group "Documentation"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=".\README"
-# End Source File
-# End Group
-# Begin Group "IDL Files"
-
-# PROP Default_Filter "idl"
-# Begin Source File
-
-SOURCE=".\testSched.idl"
-
-!IF "$(CFG)" == "RTCosScheduling_Client - Win32 Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\..\lib \
- ..\..\..\..\bin\Release\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Client - Win32 Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\..\lib \
- ..\..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.bor b/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.bor deleted file mode 100644 index 2dd48ea95ab..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.bor +++ /dev/null @@ -1,74 +0,0 @@ -# Makefile for building the server exe with Borland C++ Builder - -NAME = server - -TAO_IDL = $(CORE_BINDIR)\tao_idl -g $(CORE_BINDIR)\gperf.exe - -OBJFILES = \ - $(OBJDIR)\Object1_i.obj \ - $(OBJDIR)\server.obj \ - $(OBJDIR)\testSchedC.obj \ - $(OBJDIR)\testSchedS.obj - -LFLAGS = \ - -j..\..\..\lib\$(CONFIG_SUBDIR) -j..\..\..\lib \ - -L..\..\..\lib\$(CONFIG_SUBDIR) -L..\..\..\lib \ - -j$(CORE_BINDIR) \ - -L$(CORE_BINDIR) - -LIBFILES = \ - TAO_RTCosScheduling$(LIB_DECORATOR).lib \ - TAO_RTPortableServer$(LIB_DECORATOR).lib \ - TAO_RTCORBA$(LIB_DECORATOR).lib \ - TAO_PortableServer$(LIB_DECORATOR).lib \ - TAO_IORInterceptor$(LIB_DECORATOR).lib \ - TAO_Valuetype$(LIB_DECORATOR).lib \ - TAO_ObjRefTemplate$(LIB_DECORATOR).lib \ - TAO$(LIB_DECORATOR).lib \ - ACE$(LIB_DECORATOR).lib \ - - -IDLFILES = \ - $(IDLDIR)\testSched.idl - -!ifdef STATIC -LIB_FLAGS = -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS -DLL_FLAGS = -!else -LIB_FLAGS = -DLL_FLAGS = -!endif - -CFLAGS = \ - -I..\..\..\orbsvcs \ - -I..\..\.. \ - -I..\..\..\tao \ - -I..\..\.. \ - $(LIB_FLAGS) \ - $(DLL_FLAGS) - -CPPDIR = . - -IDLDIR = . - -INCLUDES = \ - Object1_i.h \ - testSchedC.h \ - testSchedS.h \ - testSchedC.i \ - testSchedS.i \ - testSched.idl - -all: idl_src_files - -!include <$(ACE_ROOT)\include\makeinclude\build_exe.bor> - -# -# IDL Build rules -# - -idl_src_files: $(IDLFILES:.idl=C.cpp) $(IDLFILES:.idl=S.cpp) - -# IDL File Directory: . -$(IDLDIR)\testSchedS.cpp $(IDLDIR)\testSchedC.cpp: $(IDLDIR)\testSched.idl - $(TAO_IDL) -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $** diff --git a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.dsp b/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.dsp deleted file mode 100644 index 98d5e07c73f..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.dsp +++ /dev/null @@ -1,200 +0,0 @@ -# Microsoft Developer Studio Project File - Name="RTCosScheduling_Server" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=RTCosScheduling_Server - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE run the tool that generated this project file and specify the
-!MESSAGE nmake output type. You can then use the following command:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling_Server.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 "RTCosScheduling_Server.mak" CFG="RTCosScheduling_Server - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "RTCosScheduling_Server - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "RTCosScheduling_Server - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "RTCosScheduling_Server - Win32 Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Server"
-# PROP Target_Dir ""
-# ADD CPP /nologo /O2 /W3 /GX /MD /GR /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\..\.." /D NDEBUG /D WIN32 /D _CONSOLE /FD /c
-# SUBTRACT CPP /YX
-# ADD RSC /l 0x409 /d NDEBUG /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 advapi32.lib user32.lib /INCREMENTAL:NO TAO_RTCosScheduling.lib TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\..\lib" /nologo /version:1.3.4 /subsystem:console /pdb:"Release\server.pdb" /machine:I386 /out:"Release\server.exe"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Server - Win32 Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "."
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Server"
-# PROP Target_Dir ""
-# ADD CPP /nologo /Ob0 /W3 /Gm /GX /Zi /MDd /GR /Gy /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\..\.." /D _DEBUG /D WIN32 /D _CONSOLE /FD /c
-# SUBTRACT CPP /YX
-# ADD RSC /l 0x409 /d _DEBUG /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 advapi32.lib user32.lib /INCREMENTAL:NO TAO_RTCosSchedulingd.lib TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\..\lib" /nologo /version:1.3.4 /subsystem:console /pdb:".\server.pdb" /debug /machine:I386 /out:".\server.exe"
-
-!ENDIF
-
-# Begin Target
-
-# Name "RTCosScheduling_Server - Win32 Release"
-# Name "RTCosScheduling_Server - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;cxx;c"
-# Begin Source File
-
-SOURCE=".\Object1_i.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\server.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedC.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hh"
-# Begin Source File
-
-SOURCE=".\Object1_i.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedC.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.h"
-# End Source File
-# End Group
-# Begin Group "Inline Files"
-
-# PROP Default_Filter "i;inl"
-# Begin Source File
-
-SOURCE=".\testSchedC.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.i"
-# End Source File
-# End Group
-# Begin Group "Documentation"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=".\README"
-# End Source File
-# End Group
-# Begin Group "IDL Files"
-
-# PROP Default_Filter "idl"
-# Begin Source File
-
-SOURCE=".\testSched.idl"
-
-!IF "$(CFG)" == "RTCosScheduling_Server - Win32 Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\..\lib \
- ..\..\..\..\bin\Release\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Server - Win32 Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\..\lib \
- ..\..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.vcp b/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.vcp deleted file mode 100644 index c6392c733aa..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.vcp +++ /dev/null @@ -1,426 +0,0 @@ -# Microsoft eMbedded Visual Tools Project File - Name="RTCosScheduling_Server" - Package Owner=<4>
-# Microsoft eMbedded Visual Tools Generated Build File, Format Version 6.02
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (WCE ARM) Application" 0x8501
-# TARGTYPE "Win32 (WCE x86) Application" 0x8301
-# TARGTYPE "Win32 (WCE emulator) Application" 0xa601
-
-CFG=RTCosScheduling_Server - Win32 (WCE ARM) Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE run the tool that generated this project file and specify the
-!MESSAGE nmake output type. You can then use the following command:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling_Server.vcn".
-!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 "RTCosScheduling_Server.vcn" CFG="RTCosScheduling_Server - Win32 (WCE ARM) Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "RTCosScheduling_Server - Win32 (WCE ARM) Release" (based on "Win32 (WCE ARM) Application")
-!MESSAGE "RTCosScheduling_Server - Win32 (WCE ARM) Debug" (based on "Win32 (WCE ARM) Application")
-!MESSAGE "RTCosScheduling_Server - Win32 (WCE x86) Release" (based on "Win32 (WCE x86) Application")
-!MESSAGE "RTCosScheduling_Server - Win32 (WCE x86) Debug" (based on "Win32 (WCE x86) Application")
-!MESSAGE "RTCosScheduling_Server - Win32 (WCE emulator) Release" (based on "Win32 (WCE emulator) Application")
-!MESSAGE "RTCosScheduling_Server - Win32 (WCE emulator) Debug" (based on "Win32 (WCE emulator) Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-# PROP ATL_Project 2
-
-!IF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE ARM) Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release\ARM"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Server\ARM"
-# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d NDEBUG /d UNICODE /d _UNICODE /d ARM /d _ARM_ /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=clarm.exe
-# ADD CPP /nologo /O2 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D NDEBUG /D UNICODE /D _UNICODE /D ARM /D _ARM_ /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosScheduling.lib TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\lib\ARM" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"Release\ARM\server.pdb" /debug /machine:ARM /out:"Release\ARM\server.exe"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE ARM) Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\ARM"
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Server\ARM"
-# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d _DEBUG /d UNICODE /d _UNICODE /d ARM /d _ARM_ /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=clarm.exe
-# ADD CPP /nologo /Ob0 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D _DEBUG /D UNICODE /D _UNICODE /D ARM /D _ARM_ /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosSchedulingd.lib TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\lib\ARM" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:".\ARM\server.pdb" /debug /machine:ARM /out:".\ARM\server.exe"
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE x86) Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release\IX86"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Server\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d NDEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /O2 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D NDEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosScheduling.lib TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"Release\IX86\server.pdb" /debug /machine:IX86 /out:"Release\IX86\server.exe"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE x86) Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\IX86"
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Server\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d _DEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /Ob0 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D _DEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosSchedulingd.lib TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:".\IX86\server.pdb" /debug /machine:IX86 /out:".\IX86\server.exe"
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE emulator) Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release\IX86"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Server\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d NDEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /O2 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D NDEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosScheduling.lib TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"Release\IX86\server.pdb" /debug /machine:IX86 /out:"Release\IX86\server.exe"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE emulator) Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\IX86"
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Server\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d _DEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /Ob0 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D _DEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosSchedulingd.lib TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:".\IX86\server.pdb" /debug /machine:IX86 /out:".\IX86\server.exe"
-
-!ENDIF
-
-
-# Begin Target
-
-# Name "RTCosScheduling_Server - Win32 (WCE ARM) Release"
-# Name "RTCosScheduling_Server - Win32 (WCE ARM) Debug"
-# Name "RTCosScheduling_Server - Win32 (WCE x86) Release"
-# Name "RTCosScheduling_Server - Win32 (WCE x86) Debug"
-# Name "RTCosScheduling_Server - Win32 (WCE emulator) Release"
-# Name "RTCosScheduling_Server - Win32 (WCE emulator) Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;cxx;c"
-# Begin Source File
-
-SOURCE=".\Object1_i.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\server.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedC.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hh"
-# Begin Source File
-
-SOURCE=".\Object1_i.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedC.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.h"
-# End Source File
-# End Group
-# Begin Group "Inline Files"
-
-# PROP Default_Filter "i;inl"
-# Begin Source File
-
-SOURCE=".\testSchedC.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.i"
-# End Source File
-# End Group
-# Begin Group "Documentation"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=".\README"
-# End Source File
-# End Group
-# Begin Group "IDL Files"
-
-# PROP Default_Filter "idl"
-# Begin Source File
-
-SOURCE=".\testSched.idl"
-
-!IF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE ARM) Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE ARM) Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE x86) Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE x86) Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE emulator) Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE emulator) Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server_Static.dsp b/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server_Static.dsp deleted file mode 100644 index fc342486b6e..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server_Static.dsp +++ /dev/null @@ -1,200 +0,0 @@ -# Microsoft Developer Studio Project File - Name="RTCosScheduling_Server" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=RTCosScheduling_Server - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE run the tool that generated this project file and specify the
-!MESSAGE nmake output type. You can then use the following command:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling_Server_Static.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 "RTCosScheduling_Server_Static.mak" CFG="RTCosScheduling_Server - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "RTCosScheduling_Server - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "RTCosScheduling_Server - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "RTCosScheduling_Server - Win32 Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Server_Static"
-# PROP Target_Dir ""
-# ADD CPP /nologo /O2 /W3 /GX /MD /GR /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\..\.." /D NDEBUG /D WIN32 /D _CONSOLE /D /D /D /FD /c
-# SUBTRACT CPP /YX
-# ADD RSC /l 0x409 /d NDEBUG /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 advapi32.lib user32.lib /INCREMENTAL:NO TAO_RTCosSchedulings.lib TAO_RTPortableServers.lib TAO_RTCORBAs.lib TAO_PortableServers.lib TAO_IORInterceptors.lib TAO_Valuetypes.lib TAO_ObjRefTemplates.lib TAOs.lib ACEs.lib /libpath:"..\..\..\..\lib" /nologo /version:1.3.4 /subsystem:console /pdb:"Release\server.pdb" /machine:I386 /out:"Release\server.exe"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Server - Win32 Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Server_Static"
-# PROP Target_Dir ""
-# ADD CPP /nologo /Ob0 /W3 /Gm /GX /Zi /MDd /GR /Gy /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\..\.." /D _DEBUG /D WIN32 /D _CONSOLE /D /D /D /FD /c
-# SUBTRACT CPP /YX
-# ADD RSC /l 0x409 /d _DEBUG /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 advapi32.lib user32.lib /INCREMENTAL:NO TAO_RTCosSchedulingsd.lib TAO_RTPortableServersd.lib TAO_RTCORBAsd.lib TAO_PortableServersd.lib TAO_IORInterceptorsd.lib TAO_Valuetypesd.lib TAO_ObjRefTemplatesd.lib TAOsd.lib ACEsd.lib /libpath:"..\..\..\..\lib" /nologo /version:1.3.4 /subsystem:console /pdb:"Debug\server.pdb" /debug /machine:I386 /out:"Debug\server.exe"
-
-!ENDIF
-
-# Begin Target
-
-# Name "RTCosScheduling_Server - Win32 Release"
-# Name "RTCosScheduling_Server - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;cxx;c"
-# Begin Source File
-
-SOURCE=".\Object1_i.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\server.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedC.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hh"
-# Begin Source File
-
-SOURCE=".\Object1_i.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedC.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.h"
-# End Source File
-# End Group
-# Begin Group "Inline Files"
-
-# PROP Default_Filter "i;inl"
-# Begin Source File
-
-SOURCE=".\testSchedC.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.i"
-# End Source File
-# End Group
-# Begin Group "Documentation"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=".\README"
-# End Source File
-# End Group
-# Begin Group "IDL Files"
-
-# PROP Default_Filter "idl"
-# Begin Source File
-
-SOURCE=".\testSched.idl"
-
-!IF "$(CFG)" == "RTCosScheduling_Server - Win32 Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\..\lib \
- ..\..\..\..\bin\Release\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Server - Win32 Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\..\lib \
- ..\..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/client.cpp b/TAO/orbsvcs/tests/RTCosScheduling/client.cpp deleted file mode 100644 index 9f3bb4b70e3..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/client.cpp +++ /dev/null @@ -1,435 +0,0 @@ -/* -*- C++ -*- */ - -//============================================================================= -/** - * @file client.cpp - * - * $Id$ - * - * @author Matt Murphy <murphym@cs.uri.edu> - */ -//============================================================================= - - -#include "testSchedC.h" -#include <orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.h> -#include "ace/Get_Opt.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -#pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "ace/Task.h" -#include "tao/ORB_Core.h" - - -/// In the test, these are the default values that specify -/// how long (in seconds) the test methods should run before going -/// to the server, while on the server, and after returning from -/// the server -CORBA::Long before_ = 1; -CORBA::Long remote_ = 1; -CORBA::Long after_ = 1; -u_int use_realtime_ = 1; - -/// This is the name of the node that the client executes on. -char *node_ = NULL; - -/// the name of the config file holding the scheduling information -char *file_ = NULL; - -/// the name of the activity to run (the name of the string passed in -/// schedule_activity(activity_) -char * activity_ = NULL; - -/// The name of the output file -char *client_output_file_ = NULL; - -CORBA::String_var serv_output_; - -char date_and_time[35]; -char client_output_[2048]; -char buf[100]; - - -/// For the timestampe -const int time_size = 35; -ACE_TCHAR day_and_time[time_size]; - -void do_work(const CORBA::Long value); - -ACE_RCSID( - tests, - client, - "client.cpp,v 1.0 2003/08/07 15:59:21 murphy_m Exp") - -/// Standard parse args method -/* - * parse_args allows the user to configure the test to use values other - * than those specified above. - */ -int -parse_args (int argc, char *argv[]) -{ - /// We set the '-' flag for getopts because we have to do this - /// parsing before the ORB does it's parsing, and we'd confuse it to reorder - ACE_Get_Opt get_opts (argc, argv, "-B:R:A:X:N:C:F:T:?:"); - int c; - while ((c = get_opts ()) != -1) - { - switch (c) - { - case 'B': - before_ =ACE_OS::atoi (get_opts.opt_arg ()); - break; - case 'R': - remote_ =ACE_OS::atoi (get_opts.opt_arg ()); - break; - case 'A': - after_ =ACE_OS::atoi (get_opts.opt_arg ()); - break; - case 'X': - use_realtime_ =ACE_OS::atoi (get_opts.opt_arg ()); - break; - case 'N': - node_ = ACE_OS::strdup(get_opts.opt_arg ()); - break; - case 'C': - client_output_file_ = ACE_OS::strdup(get_opts.opt_arg ()); - break; - case 'F': - file_ = ACE_OS::strdup(get_opts.opt_arg ()); - break; - case 'T': - activity_ = ACE_OS::strdup(get_opts.opt_arg ()); - break; - case '?': - ACE_DEBUG ((LM_DEBUG, - "usage: %n [-b precall_execution] " - "[-r remote_execution] " - "[-a postcall_workload] " - "[-N node] " - "[-F config_file] " - "[-c activity_name]\n")); - ACE_OS::exit (1); - } - } - if (node_ == NULL) - node_ = ACE_OS::strdup("1"); - if (file_ == NULL) - file_ = ACE_OS::strdup("schedule.cfg"); - if (activity_ == NULL) - activity_ = ACE_OS::strdup(""); - if (client_output_file_ == NULL) - client_output_file_ = ACE_OS::strdup(""); - - return 0; -} - -/** - * This class runs the test as a new thread since the main thread - * cannot set RT priorities as of TAO 1.3.3 - * - */ -class ORB_Thread : public ACE_Task<ACE_SYNCH> -{ - -public: -ORB_Thread(CORBA::ORB_var orb, - int argc, - char **argv) -: orb_(orb), - argc_(argc), - argv_(argv) -{ -} - -int svc(void) { - ACE_TRY_NEW_ENV - { - if (parse_args (argc_, argv_) != 0) - { - return 1; - } - - if (strcmp(activity_,"Client2") == 0 - || strcmp(activity_,"Client3") == 0) - { - ACE_OS::sleep(1); - } - - CORBA::Object_var obj = - orb_->string_to_object ("file://server.ior" - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - - if (CORBA::is_nil (obj.in ())) - { - ACE_ERROR_RETURN ((LM_ERROR, - ACE_TEXT ("(%P) orb_->string_to_object ") - ACE_TEXT ("(\"file://server.ior\") failed.\n")), - -1); - } - - testSched::Object1_var object1 = - testSched::Object1::_narrow (obj.in ()ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - - if (CORBA::is_nil (object1.in ())) - { - ACE_ERROR_RETURN ((LM_ERROR, - "ERROR: Object reference is nil, Aborting\n"), 1); - } - - - if (use_realtime_) - { - /// Create the ClientScheduler, note that you must pass in the - /// orb and the node name. The node name is required so that the - /// appropriate information can be read from the config file - TAO::RTCosScheduling_ClientScheduler_i *client_sched = 0; - ACE_NEW_THROW_EX(client_sched, - TAO::RTCosScheduling_ClientScheduler_i ( - orb_, - node_, - file_), - CORBA::NO_MEMORY()); - ACE_TRY_CHECK; - - - // Check to see that the ClientScheduler started correctly - if (CORBA::is_nil (client_sched)) - { - /// There was an error in setting up the RTORB, - /// RT Policies were not set, throw an exception - ACE_OS::exit(1); - } - - - - /// Create a Current object so we can check on the priority locally - obj = orb_->resolve_initial_references ("RTCurrent" - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - RTCORBA::Current_var current = - RTCORBA::Current::_narrow (obj.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - - /// Test to make sure the priority model is exposed - CORBA::Policy_var policy = - object1->_get_policy (RTCORBA::PRIORITY_MODEL_POLICY_TYPE - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - RTCORBA::PriorityModelPolicy_var priority_policy = - RTCORBA::PriorityModelPolicy::_narrow (policy.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil (priority_policy.in ())) - { - ACE_ERROR_RETURN ((LM_ERROR, - "ERROR: Priority Model not exposed!\n"), - 1); - } - - /// Test to make sure we are using Server Declared Priority model - RTCORBA::PriorityModel priority_model = - priority_policy->priority_model (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (priority_model != RTCORBA::SERVER_DECLARED) - { - ACE_ERROR_RETURN ((LM_ERROR, - "ERROR: priority_model != " - "RTCORBA::SERVER_DECLARED!\n"), - 1); - } - - do_work(before_); - - ACE_TRY_EX(sched_act) - { - client_sched->schedule_activity (::activity_ - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK_EX(sched_act); - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ex, - "Invalid activity name\n"); - return -1; - } - ACE_ENDTRY; - - ACE_OS::sprintf(buf, - "%s\t%s\tBeginning activity at priority %d\n", - ACE::timestamp(date_and_time, time_size), - activity_, - current->the_priority()); - ACE_DEBUG ((LM_DEBUG, - "%s", - buf)); - ACE_OS_String::strcat(client_output_, buf); - - do_work(before_); - ACE_TRY_CHECK; - - - ACE_OS::sprintf(buf, - "%s\t%s\tCalling method1 at priority %d\n", - ACE::timestamp(date_and_time, time_size), - activity_, - current->the_priority()); - ACE_DEBUG ((LM_DEBUG, - "%s", - buf)); - ACE_OS_String::strcat(client_output_, buf); - serv_output_ = ACE_OS_String::strdup(""); - object1->method1 (activity_, remote_, serv_output_.inout()); - - ACE_OS_String::strcat(client_output_, serv_output_.in()); - - - ACE_OS::sprintf(buf, - "%s\t%s\tDone with method1 at priority %d\n", - ACE::timestamp(date_and_time, time_size), - activity_, - current->the_priority()); - ACE_DEBUG ((LM_DEBUG, - "%s", - buf)); - ACE_OS_String::strcat(client_output_, buf); - - - do_work(after_); - - ACE_OS::sprintf(buf, - "%s\t%s\tDone with test at priority %d\n", - ACE::timestamp(date_and_time, time_size), - activity_, - current->the_priority()); - ACE_DEBUG ((LM_DEBUG, - "%s", - buf)); - ACE_OS_String::strcat(client_output_, buf); - - - } - else - { - ACE_DEBUG ((LM_DEBUG, - "%T\t%s\tClient\tBeginning Activity\n", - activity_)); - do_work(before_); - ACE_TRY_CHECK; - ACE_DEBUG ((LM_DEBUG, - "%T\t%s\tClient\tCalling method1\n", - activity_)); - - object1->method1 (activity_, remote_, serv_output_.inout()); - ACE_OS_String::strcat(client_output_,serv_output_.in()); - /// Finished with remote call - ACE_DEBUG ((LM_DEBUG, - "%T\t%s\tClient\tDone with method1\n", - activity_)); - do_work(after_); - } - - FILE *fp = ACE_OS::fopen(client_output_file_, "w"); - if (fp) - { - ACE_OS::fprintf(fp, - "%s", - client_output_); - } - else - { - ACE_DEBUG((LM_DEBUG,"No file to write to\n")); - } - ACE_OS::fclose(fp); - - - // Finally destroy the ORB - orb_->destroy (); - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "Exception in running the client\n"); - return -1; - } - ACE_ENDTRY; - return 0; - } - - -private: - CORBA::ORB_var orb_; - CORBA::ORB_var orb2_; - int argc_; char ** argv_; -}; - - - -int -ACE_TMAIN (int argc, char * argv[]) -{ - ACE_TRY_NEW_ENV - { - CORBA::ORB_var orb = - CORBA::ORB_init (argc, argv, "client_orb" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - ORB_Thread ot(orb, argc, argv); - - // Need to set the main thread pthread scope and pthread policy to - // the values that are specified in svc.conf. This change was - // recommended by irfan@oomworks.com - long flags = THR_NEW_LWP | THR_JOINABLE | - -#if TAO_MAJOR_VERSION > 1 \ -|| (TAO_MAJOR_VERSION==1 && TAO_MINOR_VERSION > 3 ) \ -|| (TAO_MAJOR_VERSION==1 && TAO_MAJOR_VERSION==3 && TAO_MINOR_VERSION > 1) - - orb->orb_core ()->orb_params ()->thread_creation_flags (); - ACE_TRY_CHECK; - -#else /* TAO version is 1.3.1 or lower */ - orb->orb_core ()->orb_params ()->scope_policy () | - orb->orb_core ()->orb_params ()->sched_policy (); - ACE_TRY_CHECK; -#endif - - ot.activate(flags); - return ot.wait(); - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, - "ERROR in running the client\n"); - } - ACE_ENDTRY; - return 0; -} - -void -do_work(const CORBA::Long value) -{ - const int scale_factor = 2000; - int work; - - /// Simulate some work - static CORBA::ULong prime_number = 9619; - - work = scale_factor * value; - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "test_i::method: %hd units of work\n", work)); - for (; work != 0; work--) - ACE::is_prime (prime_number, 2, prime_number / 2); - -} - diff --git a/TAO/orbsvcs/tests/RTCosScheduling/run_test.pl b/TAO/orbsvcs/tests/RTCosScheduling/run_test.pl deleted file mode 100755 index 86dcdd50673..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/run_test.pl +++ /dev/null @@ -1,318 +0,0 @@ -eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' - & eval 'exec perl -S $0 $argv:q' - if 0; - -# -*- perl -*- -# $Id$ - -use lib '../../../../bin'; -use PerlACE::Run_Test; - -$status = 0; -$file = PerlACE::LocalFile ("server.ior"); - -unlink $file; - -$status = 0; -#S11 uses schedule object, S10 does not -$S11 = new PerlACE::Process ("server", - "-N 2 -F schedule.cfg -A Server2 -X 1"); -$S10 = new PerlACE::Process ("server", - "-N 2 -F schedule.cfg -A Server2 -X 0"); - -#S2 uses and invalid config file -$S2 = new PerlACE::Process ("server", - "-N 2 -F INVALID_FILE.cfg -A Server2 -X 1"); - -#s3 tries to schedule an invalid object -$S3 = new PerlACE::Process ("server", - "-N 2 -F schedule.cfg -A Server5 -X 1"); - -$C1_client_output = PerlACE::LocalFile ("client1_output"); -$C2_client_output = PerlACE::LocalFile ("client2_output"); -$C3_client_output = PerlACE::LocalFile ("client3_output"); - -unlink $C1_client_output; -unlink $C2_client_output; -unlink $C3_client_output; - - - -# C11 C21 C31 use RTCosScheduler 1.0 on the client -$C11 = new PerlACE::Process ("client", "-B 0 -R 10 -A 3 -N 1 -C ". $C1_client_output. " -F schedule.cfg -T Client1 -X 1"); -$C21 = new PerlACE::Process ("client", "-B 0 -R 3 -A 3 -N 1 -C ". $C2_client_output. " -F schedule.cfg -T Client2 -X 1"); -$C31 = new PerlACE::Process ("client", "-B 2 -R 3 -A 3 -N 1 -C ". $C3_client_output. " -F schedule.cfg -T Client3 -X 1"); - -#C10 C20 C30 Do not use RTCosScheduler 1.0 on the client -$C10 = new PerlACE::Process ("client", - "-B 0 -R 10 -A 3 -N 1 -C ". - $C1_client_output. - " -F schedule.cfg -T Client1 -X 0"); -$C20 = new PerlACE::Process ("client", - "-B 0 -R 3 -A 3 -N 1 -C ". - $C3_client_output. - " -F schedule.cfg -T Client2 -X 0"); -$C30 = new PerlACE::Process ("client", - "-B 2 -R 3 -A 3 -N 1 -C ". - $C3_client_output. - " -F schedule.cfg -T Client3 -X 0"); - -#C4 is an invalid activity name -$C4 = new PerlACE::Process ("client", - "-B 1 -R 3 -A 0 -N 1 -F schedule.cfg ". - "-T Client4 -X 1"); - -#C5 is an invalid config file -$C5 = new PerlACE::Process ("client", - "-B 1 -R 3 -A 0 -N 1 -F INVALID_FILE.cfg ". - "-T Client2 -X 1"); - -sub spawn_server -{ - local ( $param_1 ) = @_ ; - $param_1->Spawn (); - if (PerlACE::waitforfile_timed ($file, 15) == -1) { - print STDERR "ERROR: cannot find file <$file>\n"; - $param_1->Kill (); - exit 1; - } -} - -sub kill_server -{ - local ($param_1) = @_; - $server = $param_1->TerminateWaitKill (15); - if ($server != 0) { - print STDERR "ERROR: server returned $server\n"; - $status = 1; - } - unlink $file; -} - -sub run_client -{ - local ($param_1) = @_; - $client = $param_1->Spawn(); - if ($client != 0) { - print STDERR "ERROR: client returned $client\n"; - $status = 1; - } -} - - -sub test -{ - local($param_0, $param_1, $param_2, $param_3) = @_; - print STDERR $param_0; - - $client1 = $param_1->Spawn(); - $client2 = $param_2->Spawn(); - $client3 = $param_3->Spawn(); - - if ($client1 != 0) { - print STDERR "ERROR: client returned $client1\n"; - $status = 1; - } - - if ($client2 != 0) { - print STDERR "ERROR: client returned $client2\n"; - $status = 1; - } - - if ($client3 != 0) { - print STDERR "ERROR: client returned $client3\n"; - $status = 1; - } - - - $param_1->WaitKill (35); - $param_2->WaitKill (30); - $param_3->WaitKill (30); - sleep 2; - - if ($param_0 =~ /Test1/) - { - evaluate_output(); - } - unlink $C1_client_output; - unlink $C2_client_output; - unlink $C3_client_output; - - -} - - -sub test5 -{ - print STDERR "\n==== Testing exceptions\n"; - print STDERR "\n==== Test5 - Testing ClientScheduler ". - "exception for invalid activity name\n". - "Should recieve an RTCosScheduling::UnknownName exeption\n"; - run_client($C4); - $C4->WaitKill(10); -} - -sub test6 -{ - print STDERR "\n==== Test6 - Testing client exception ". - "when invalid config file specified\n". - "Program should abort because no valid file was given\n"; - run_client($C5); - $C5->WaitKill (10); -} - -sub test7 -{ - print STDERR "\n==== Test7 - Testing server exception ". - "when invalid Object Name specified\n"; - print STDERR "==== (Object name not in config file)\n". - "Should receive an RTCosScheduling::UnknownName exception\n"; - $S3->Spawn(); - sleep 1; - kill_server($S3); -} - - -sub test8 -{ - print STDERR "\n==== Test8 - Testing server exception ". - "when invalid config file specified\n". - "Server Should abort because an invalid config ". - "filename was given\n"; - $S2->Spawn(); - sleep 1; - kill_server($S2); -} - -sub evaluate_output -{ - # this looks at the three output files to see if the - # clients ran in the correct order - open(INFOC1, $C1_client_output); - open(INFOC2, $C2_client_output); - open(INFOC3, $C3_client_output); - - - @arrayC1=<INFOC1>; - close (INFOC1); - @arrayC2=<INFOC2>; - close (INFOC2); - @arrayC3=<INFOC3>; - close (INFOC3); - - - $is_valid = 1; - $counter = 0; - - # check the client execution to make sure - #it runs in the correct order - ($BAtimeC1,$client,$activity)=split(/\t/,@arrayC1[0]); - ($BAtimeC2,$client,$activity)=split(/\t/,@arrayC2[0]); - ($BAtimeC3,$client,$activity)=split(/\t/,@arrayC3[0]); - - ($CMtimeC1,$client,$activity)=split(/\t/,@arrayC1[1]); - ($CMtimeC2,$client,$activity)=split(/\t/,@arrayC2[1]); - ($CMtimeC3,$client,$activity)=split(/\t/,@arrayC3[1]); - - ($BRtimeC1,$client,$activity)=split(/\t/,@arrayC1[2]); - ($BRtimeC2,$client,$activity)=split(/\t/,@arrayC2[2]); - ($BRtimeC3,$client,$activity)=split(/\t/,@arrayC3[2]); - - ($FRtimeC1,$client,$activity)=split(/\t/,@arrayC1[3]); - ($FRtimeC2,$client,$activity)=split(/\t/,@arrayC2[3]); - ($FRtimeC3,$client,$activity)=split(/\t/,@arrayC3[3]); - - ($DMtimeC1,$client,$activity)=split(/\t/,@arrayC1[4]); - ($DMtimeC2,$client,$activity)=split(/\t/,@arrayC2[4]); - ($DMtimeC3,$client,$activity)=split(/\t/,@arrayC3[4]); - - ($DTtimeC1,$client,$activity)=split(/\t/,@arrayC1[5]); - ($DTtimeC2,$client,$activity)=split(/\t/,@arrayC2[5]); - ($DTtimeC3,$client,$activity)=split(/\t/,@arrayC3[5]); - - - if ($BAtimeC1 gt $BAtimeC2 || $BAtimeC2 gt $BAtimeC3) - { - print STDERR "Scheduler Test Failed - activities did not ". - "begin in correct order\n"; - $is_valid = 0; - } - if ($CMtimeC1 gt $CMtimeC2 || $CMtimeC1 gt $CMtimeC3) - { - print STDERR "Scheduler Test Failed - remote method calls not ". - "made in correct order\n"; - $is_valid = 0; - } - if ($FRtimeC1 gt $FRtimeC3 || $FRtimeC3 gt $FRtimeC2) - { - print STDERR "Scheduler Test Failed - Remote Method calls did ". - "not finish in correct order\n"; - $is_valid = 0; - } - if ($DTtimeC3 gt $DTtimeC2 || $DTtimeC2 gt $DTtimeC1) - { - print STDERR "Scheduler Test Failed - Tests did not finish in ". - "correct order\n"; - $is_valid = 0; - } - if ($BRtimeC1 gt $BAtimeC2) - { - print STDERR "Scheduler Test Failed - Client1 remote method call ". - "finished before Client2 began local activity\n"; - $is_valid = 0; - } - if ($FRtimeC1 gt $BRtimeC3 || $FRtimeC1 gt $BRtimeC2) - { - print STDERR "Scheduler Test Failed - Client1 finished before ". - "Clients2 or 3 made method calls\n"; - $is_valid = 0; - } - if ($BRtimeC3 gt $BRtimeC2 || $FRtimeC3 gt $FRtimeC2) - { - print STDERR "Scheduler Test Failed - Client 3 remote method call ". - "did not begin before Client2\n"; - $is_valid = 0; - } - - if ($is_valid == 1) - { - print STDERR "The scheduling service worked as expected\n"; - } - else - { - print STDERR "The scheduling service did not work as expected\n"; - } - -} - - -print STDERR "\n==== Running RTCORBA 1.0 Scheduling Service test\n"; -print STDERR "==== Note that the first column is the time, ". - "it will be different for you\n\n"; -print STDERR "TIME\t\t\tOBJECT\tLOCATION\tACTIVITY\n"; - -spawn_server($S11); -test("\n==== Test1 - YES client side scheduling, ". - "YES server side scheduling\n", $C11, $C21, $C31); -test("\n==== Test2 - NO client side scheduling, ". - "YES server side scheduling\n", $C10, $C20, $C30); -kill_server($S11); - -spawn_server($S10); -test("\n==== Test3 - YES client side scheduling, ". - "NO server side scheduling\n", $C11, $C21, $C31); -test("\n==== Test4 - NO client side scheduling, ". - "NO server side scheduling\n", $C10, $C20, $C30); -kill_server($S10); - -spawn_server($S11); -test5(); -test6(); -kill_server($S11); - - -test7(); -test8(); - - -exit $status; diff --git a/TAO/orbsvcs/tests/RTCosScheduling/schedule.cfg b/TAO/orbsvcs/tests/RTCosScheduling/schedule.cfg deleted file mode 100644 index 0f74742bcc0..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/schedule.cfg +++ /dev/null @@ -1,24 +0,0 @@ -Node 1 - -Resources: -BP 11000 -Server2 6000 -END - -Tasks: -Client1 500 -Client2 5500 -Client3 11000 -END - -Node 2 - -Resources: -BP 17000 -Server2 11000 -Server3 500 -END - -Tasks: -Client4 500 -Client5 10000 diff --git a/TAO/orbsvcs/tests/RTCosScheduling/server.cpp b/TAO/orbsvcs/tests/RTCosScheduling/server.cpp deleted file mode 100644 index 63e29b832ab..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/server.cpp +++ /dev/null @@ -1,247 +0,0 @@ -/* -*- C++ -*- */ - -//============================================================================= -/** - * @file server.cpp - * - * $Id$ - * - * @author Matt Murphy <murphym@cs.uri.edu> - */ -//============================================================================= - -#include "Object1_i.h" -#include <orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.h> -#include "ace/streams.h" -#if !defined (ACE_LACKS_PRAGMA_ONCE) -#pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "ace/Task.h" -#include "ace/Get_Opt.h" -#include "tao/ORB_Core.h" - - -char *node_ = NULL; -char *file_ = NULL; -char *shared_file_ = NULL; -char *object_ = NULL; -int num_threads_ = 5; -int use_realtime_ = 1; - -// ORB Thread - -class ORB_Thread : public ACE_Task<ACE_SYNCH> -{ -public: - -ORB_Thread(CORBA::ORB_var orb) : orb_(orb) -{ -} - -int -svc(void) { - orb_->run(); - ACE_TRY_CHECK; - - exit(0); -} - - -private: - CORBA::ORB_var orb_; -}; - - -int -parse_args (int argc, char *argv[]) -{ - // We set the '-' flag for getopts because we have to do - // this parsing before the ORB does it's - //parsing, and we'd confuse it to reorder - ACE_Get_Opt get_opts (argc, argv, "-:N:F:S:T:A:X:"); - int c; - - while ((c = get_opts ()) != -1) - { - switch (c) - { - case 'N': - node_ = get_opts.opt_arg (); - break; - case 'F': - file_ = get_opts.opt_arg (); - break; - case 'S': - shared_file_ = get_opts.opt_arg (); - break; - case 'T': - num_threads_ = ACE_OS::atoi (get_opts.opt_arg ()); - break; - case 'A': - object_ = ACE_OS::strdup(get_opts.opt_arg ()); - break; - case 'X': - use_realtime_ = ACE_OS::atoi(get_opts.opt_arg ()); - break; - - } - } - if (node_ == NULL) - node_ = ACE_OS::strdup("1"); - if (file_ == NULL) - file_ = ACE_OS::strdup("schedule.cfg"); - if (shared_file_ == NULL) - shared_file_ = ACE_OS::strdup("Scheduling_Service_Shared_Memory"); - if (object_ == NULL) - object_ = ACE_OS::strdup("Server2"); - - return 0; -} - - -int -ACE_TMAIN (int argc, ACE_TCHAR *argv[]) { - ACE_TRY_NEW_ENV - { - if (parse_args (argc, argv) != 0) - { - return 1; - } - - CORBA::ORB_var orb= - CORBA::ORB_init (argc, - argv, - "testORB" - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - /// get the root poa - CORBA::Object_var object= - orb->resolve_initial_references ("RootPOA" - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - PortableServer::POA_var rootPOA= - PortableServer::POA::_narrow (object.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - /// Create a manager for the POA - PortableServer::POAManager_var poa_manager = - rootPOA->the_POAManager (ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::PolicyList poa_policy_list; - poa_policy_list.length (1); - - poa_policy_list[0] = - rootPOA->create_lifespan_policy(PortableServer::TRANSIENT); - - // Create the RT Scheduling service - TAO::RTCosScheduling_ServerScheduler_i *server_sched = 0; - ACE_NEW_THROW_EX(server_sched, - TAO::RTCosScheduling_ServerScheduler_i( - node_, - file_, - shared_file_, - num_threads_), - CORBA::NO_MEMORY()); - - /// Create the POA so RT Policies are set - PortableServer::POA_var RTPOA = - server_sched->create_POA(rootPOA.in(), - "my_RT_POA", - poa_manager.in(), - poa_policy_list - ACE_ENV_ARG_PARAMETER); - - - Object1_impl * servant = 0; - ACE_NEW_THROW_EX(servant, - Object1_impl(), - CORBA::NO_MEMORY()); - ACE_TRY_CHECK; - - PortableServer::ObjectId_var id = - RTPOA->activate_object(servant - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::Object_var testObject = - RTPOA->id_to_reference(id.in() - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - - CORBA::String_var testObject_IORString = - orb->object_to_string (testObject.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - - ofstream server_IOR_file ("server.ior"); - server_IOR_file << testObject_IORString.in () << endl; - - - if (use_realtime_) - { - /// Schedule the object - ACE_TRY_NEW_ENV - { - server_sched->schedule_object(testObject.inout(), - object_); - } - ACE_CATCH(RTCosScheduling::UnknownName, ex) - { - ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, - "Unknown object passed to schedule_object\n"); - } - ACE_ENDTRY - ACE_TRY_CHECK; - } - - - /// Activate the manager and run the event loop - poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER); - - // Need to set the main thread pthread scope and pthread policy to - // the values that are specified in svc.conf. This change was - // recommended by irfan@oomworks.com - long flags = THR_NEW_LWP | THR_JOINABLE | - -#if TAO_MAJOR_VERSION > 1 \ - || (TAO_MAJOR_VERSION==1 && TAO_MINOR_VERSION > 3 ) \ - || (TAO_MAJOR_VERSION==1 && TAO_MAJOR_VERSION==3 && TAO_MINOR_VERSION > 1) - - orb->orb_core ()->orb_params ()->thread_creation_flags (); - -#else /* TAO version is 1.3.1 or lower */ - orb->orb_core ()->orb_params ()->scope_policy () | - orb->orb_core ()->orb_params ()->sched_policy (); -#endif - ORB_Thread ot(orb); - ot.activate(flags); - ot.wait(); - - - ACE_DEBUG((LM_DEBUG, - "Server is shutting down\n\n")); - - - delete server_sched; - - /// clean up - rootPOA->destroy (1, 1 ACE_ENV_ARG_PARAMETER); - orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "Exception caught:"); - return -1; - } - ACE_ENDTRY; - - return 0; -} diff --git a/TAO/orbsvcs/tests/RTCosScheduling/server.ior b/TAO/orbsvcs/tests/RTCosScheduling/server.ior deleted file mode 100644 index 3a8697919ef..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/server.ior +++ /dev/null @@ -1 +0,0 @@ -IOR:010000001a00000049444c3a7465737453636865642f4f626a656374313a312e300000000300000000000000d600000001010200110000007274646f632e63732e7572692e656475000039912300000014010f004e5354ff2b873ff9e6060001000000010000000000000001000000010000000004000000000000000800000001000000004f415401000000140000000100000001000100000000000901010000000000024f4154220000000100000001000000110000007274646f632e63732e7572692e65647500003991ffff0000020000002e000000018c134202000000280000000a000000018e134201000000ff7fffff280000000a000000018e134201000000ff7f000000000000ce000000010102000d0000003137322e31362e3134392e31006539912300000014010f004e5354ff2b873ff9e6060001000000010000000000000001000000010000000104000000000000000800000001000000004f415401000000140000000100000001000100000000000901010000000000024f41541e000000018c1342010000000d0000003137322e31362e3134392e3100653991ffff6475020000002e000000018e134202000000280000000a000000018e134201000000ff7f0000280000000a000000018e134201000000ff7f000000000000ca000000010102000c0000003139322e3136382e302e3100399139912300000014010f004e5354ff2b873ff9e6060001000000010000000000000001000000010000000104000000000000000800000001000000004f415401000000140000000100000001000100000000000901010000000000024f41541c000000018e1342010000000c0000003139322e3136382e302e31003991ffff020000002e000000018c134202000000280000000a000000018c134201000000ff7f0000280000000a000000018c134201000000ff7f diff --git a/TAO/orbsvcs/tests/RTCosScheduling/svc.conf b/TAO/orbsvcs/tests/RTCosScheduling/svc.conf deleted file mode 100644 index 84f0293b2b9..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/svc.conf +++ /dev/null @@ -1,2 +0,0 @@ -#static RT_ORB_Loader "-ORBSchedPolicy SCHED_RR -ORBPriorityMapping linear -ORBScopePolicy SYSTEM" -static RT_ORB_Loader "-ORBSchedPolicy SCHED_FIFO -ORBPriorityMapping linear -ORBScopePolicy SYSTEM" diff --git a/TAO/orbsvcs/tests/RTCosScheduling/testSched.idl b/TAO/orbsvcs/tests/RTCosScheduling/testSched.idl deleted file mode 100644 index c2d98c7cf88..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/testSched.idl +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- C++ -*- */ - -//============================================================================= -/** - * @file testSched.idl - * - * $Id$ - * - * @author Matt Murphy <murphym@cs.uri.edu> - */ -//============================================================================= - -/** - * @class Object1 - * - * @brief Used by the RTCORBA 1.0 scheduling service. - */ - -#ifndef TEST_SCHED -#define TEST_SCHED - -/** - * Object1 class is used in the RTCORBA 1.0 Scheduling - * Service test. - */ -module testSched { - - exception testSchedException {}; - - interface Object1 { - /** - * method1 executes work at the location specified by the object reference. - * It sleeps for the number of seconds specified. - * - * @param seconds The number of seconds to sleep for. - */ - void method1(in string activity, in long second, inout string output_file) - raises (testSchedException); - }; - -}; - -#endif /* TEST_SCHED */ diff --git a/TAO/orbsvcs/tests/RTCosScheduling/testSched_export.h b/TAO/orbsvcs/tests/RTCosScheduling/testSched_export.h deleted file mode 100644 index abc3963101a..00000000000 --- a/TAO/orbsvcs/tests/RTCosScheduling/testSched_export.h +++ /dev/null @@ -1,54 +0,0 @@ - -// -*- C++ -*- -// $Id$ -// Definition for Win32 Export directives. -// This file is generated automatically by generate_export_file.pl testSched -// ------------------------------ -#ifndef TESTSCHED_EXPORT_H -#define TESTSCHED_EXPORT_H - -#include "ace/config-all.h" - -#if !defined (TESTSCHED_HAS_DLL) -# define TESTSCHED_HAS_DLL 1 -#endif /* ! TESTSCHED_HAS_DLL */ - -#if defined (TESTSCHED_HAS_DLL) && (TESTSCHED_HAS_DLL == 1) -# if defined (TESTSCHED_BUILD_DLL) -# define testSched_Export ACE_Proper_Export_Flag -# define TESTSCHED_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) -# define TESTSCHED_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) -# else /* TESTSCHED_BUILD_DLL */ -# define testSched_Export ACE_Proper_Import_Flag -# define TESTSCHED_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) -# define TESTSCHED_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) -# endif /* TESTSCHED_BUILD_DLL */ -#else /* TESTSCHED_HAS_DLL == 1 */ -# define testSched_Export -# define TESTSCHED_SINGLETON_DECLARATION(T) -# define TESTSCHED_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) -#endif /* TESTSCHED_HAS_DLL == 1 */ - -// Set TESTSCHED_NTRACE = 0 to turn on library specific tracing even if -// tracing is turned off for ACE. -#if !defined (TESTSCHED_NTRACE) -# if (ACE_NTRACE == 1) -# define TESTSCHED_NTRACE 1 -# else /* (ACE_NTRACE == 1) */ -# define TESTSCHED_NTRACE 0 -# endif /* (ACE_NTRACE == 1) */ -#endif /* !TESTSCHED_NTRACE */ - -#if (TESTSCHED_NTRACE == 1) -# define TESTSCHED_TRACE(X) -#else /* (TESTSCHED_NTRACE == 1) */ -# if !defined (ACE_HAS_TRACE) -# define ACE_HAS_TRACE -# endif /* ACE_HAS_TRACE */ -# define TESTSCHED_TRACE(X) ACE_TRACE_IMPL(X) -# include "ace/Trace.h" -#endif /* (TESTSCHED_NTRACE == 1) */ - -#endif /* TESTSCHED_EXPORT_H */ - -// End of auto generated file. diff --git a/TAO/performance-tests/AMI_Latency/Roundtrip.cpp b/TAO/performance-tests/AMI_Latency/Roundtrip.cpp deleted file mode 100644 index c9e68d98406..00000000000 --- a/TAO/performance-tests/AMI_Latency/Roundtrip.cpp +++ /dev/null @@ -1,26 +0,0 @@ -// -// $Id$ -// -#include "Roundtrip.h" - -ACE_RCSID(AMI_Latency, Roundtrip, "$Id$") - -Roundtrip::Roundtrip (CORBA::ORB_ptr orb) - : orb_ (CORBA::ORB::_duplicate (orb)) -{ -} - -Test::Timestamp -Roundtrip::test_method (Test::Timestamp send_time - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - return send_time; -} - -void -Roundtrip::shutdown (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER); -} diff --git a/TAO/performance-tests/AMI_Latency/Roundtrip.h b/TAO/performance-tests/AMI_Latency/Roundtrip.h deleted file mode 100644 index efef33dd7e6..00000000000 --- a/TAO/performance-tests/AMI_Latency/Roundtrip.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// $Id$ -// - -#ifndef ROUNDTRIP_H -#define ROUNDTRIP_H -#include "ace/pre.h" - -#include "TestS.h" - -#if defined (_MSC_VER) -# if (_MSC_VER >= 1200) -# pragma warning(push) -# endif /* _MSC_VER >= 1200 */ -# pragma warning (disable:4250) -#endif /* _MSC_VER */ - -/// Implement the Test::Roundtrip interface -class Roundtrip - : public virtual POA_Test::Roundtrip - , public virtual PortableServer::RefCountServantBase -{ -public: - /// Constructor - Roundtrip (CORBA::ORB_ptr orb); - - // = The skeleton methods - virtual Test::Timestamp test_method (Test::Timestamp send_time - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - -private: - /// Use an ORB reference to conver strings to objects and shutdown - /// the application. - CORBA::ORB_var orb_; -}; - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma warning(pop) -#endif /* _MSC_VER */ - -#include "ace/post.h" -#endif /* ROUNDTRIP_H */ diff --git a/TAO/performance-tests/AMI_Latency/Roundtrip_Handler.cpp b/TAO/performance-tests/AMI_Latency/Roundtrip_Handler.cpp deleted file mode 100644 index 5f0061601e4..00000000000 --- a/TAO/performance-tests/AMI_Latency/Roundtrip_Handler.cpp +++ /dev/null @@ -1,75 +0,0 @@ -// -// $Id$ -// -#include "Roundtrip_Handler.h" - -ACE_RCSID(AMI_Latency, Roundtrip, "$Id$") - -Roundtrip_Handler::Roundtrip_Handler (int expected_callbacks) - : pending_callbacks_ (expected_callbacks) -{ -} - -int -Roundtrip_Handler::pending_callbacks (void) const -{ - return this->pending_callbacks_; -} - -void -Roundtrip_Handler::dump_results (ACE_UINT32 gsf) -{ - this->latency_stats_.dump_results ("AMI Latency", gsf); -} - -void -Roundtrip_Handler::test_method (Test::Timestamp send_time - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - this->pending_callbacks_--; - - ACE_hrtime_t now = ACE_OS::gethrtime (); - this->latency_stats_.sample (now - send_time); -} - -void -Roundtrip_Handler::test_method_excep (Test::AMI_RoundtripExceptionHolder *holder - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - ACE_TRY - { - this->pending_callbacks_--; - holder->raise_test_method (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "test_method:"); - } - ACE_ENDTRY; -} - -void -Roundtrip_Handler::shutdown (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ -} - -void -Roundtrip_Handler::shutdown_excep (Test::AMI_RoundtripExceptionHolder *holder - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - ACE_TRY - { - holder->raise_shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "shutdown:"); - } - ACE_ENDTRY; -} diff --git a/TAO/performance-tests/AMI_Latency/Roundtrip_Handler.h b/TAO/performance-tests/AMI_Latency/Roundtrip_Handler.h deleted file mode 100644 index ae777f50f20..00000000000 --- a/TAO/performance-tests/AMI_Latency/Roundtrip_Handler.h +++ /dev/null @@ -1,61 +0,0 @@ -// -// $Id$ -// - -#ifndef ROUNDTRIP_HANDLER_H -#define ROUNDTRIP_HANDLER_H -#include "ace/pre.h" - -#include "TestS.h" -#include "ace/Basic_Stats.h" - -#if defined (_MSC_VER) -# if (_MSC_VER >= 1200) -# pragma warning(push) -# endif /* _MSC_VER >= 1200 */ -# pragma warning (disable:4250) -#endif /* _MSC_VER */ - -/// Implement the Test::Roundtrip interface -class Roundtrip_Handler - : public virtual POA_Test::AMI_RoundtripHandler - , public virtual PortableServer::RefCountServantBase -{ -public: - /// Constructor - Roundtrip_Handler (int expected_callbacks); - - /// Return the number of pending callbacks - int pending_callbacks (void) const; - - /// Dump the results - void dump_results (ACE_UINT32 gsf); - - // = The skeleton methods - virtual void test_method (Test::Timestamp send_time - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - virtual void test_method_excep (Test::AMI_RoundtripExceptionHolder *holder - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - virtual void shutdown_excep (Test::AMI_RoundtripExceptionHolder *holder - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - -private: - /// The number of callbacks not received yet - int pending_callbacks_; - - /// Collect the latency results - ACE_Basic_Stats latency_stats_; -}; - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma warning(pop) -#endif /* _MSC_VER */ - -#include "ace/post.h" -#endif /* ROUNDTRIP_H */ diff --git a/TAO/performance-tests/AMI_Latency/Server_Task.cpp b/TAO/performance-tests/AMI_Latency/Server_Task.cpp deleted file mode 100644 index 6df92f32a3f..00000000000 --- a/TAO/performance-tests/AMI_Latency/Server_Task.cpp +++ /dev/null @@ -1,24 +0,0 @@ -// -// $Id$ -// -#include "Server_Task.h" - -ACE_RCSID(AMI_Latency, Server_Task, "$Id$") - -Server_Task::Server_Task (CORBA::ORB_ptr orb) - : orb_ (CORBA::ORB::_duplicate (orb)) -{ -} - -int -Server_Task::svc (void) -{ - ACE_DECLARE_NEW_CORBA_ENV; - ACE_TRY - { - this->orb_->run (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY {} ACE_ENDTRY; - return 0; -} diff --git a/TAO/performance-tests/AMI_Latency/client.cpp b/TAO/performance-tests/AMI_Latency/client.cpp deleted file mode 100644 index 0d396c4b67b..00000000000 --- a/TAO/performance-tests/AMI_Latency/client.cpp +++ /dev/null @@ -1,185 +0,0 @@ -// $Id$ - -#include "Roundtrip_Handler.h" -#include "tao/debug.h" -#include "ace/Get_Opt.h" -#include "ace/High_Res_Timer.h" -#include "ace/Sched_Params.h" -#include "ace/Stats.h" - -ACE_RCSID(AMI_Latency, client, "$Id$") - -const char *ior = "file://test.ior"; - -ACE_hrtime_t throughput_base; - -int niterations = 1000; - -int -parse_args (int argc, char *argv[]) -{ - ACE_Get_Opt get_opts (argc, argv, "k:i:"); - int c; - - while ((c = get_opts ()) != -1) - switch (c) - { - case 'k': - ior = get_opts.opt_arg (); - break; - - case 'i': - niterations = ACE_OS::atoi (get_opts.opt_arg ()); - break; - - case '?': - default: - ACE_ERROR_RETURN ((LM_ERROR, - "usage: %s " - "-k <ior> " - "-i <niterations> " - "-p <period (msecs)> " - "-b <burst size> " - "\n", - argv [0]), - -1); - } - // Indicates sucessful parsing of the command line - return 0; -} - -int -main (int argc, char *argv[]) -{ - int priority = - (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO) - + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2; - // Enable FIFO scheduling, e.g., RT scheduling class on Solaris. - - if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO, - priority, - ACE_SCOPE_PROCESS)) != 0) - { - if (ACE_OS::last_error () == EPERM) - { - ACE_DEBUG ((LM_DEBUG, - "server (%P|%t): user is not superuser, " - "test runs in time-shared class\n")); - } - else - ACE_ERROR ((LM_ERROR, - "server (%P|%t): sched_params failed\n")); - } - - ACE_TRY_NEW_ENV - { - CORBA::ORB_var orb = - CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::Object_var poa_object = - orb->resolve_initial_references("RootPOA" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil (poa_object.in ())) - ACE_ERROR_RETURN ((LM_ERROR, - " (%P|%t) Unable to initialize the POA.\n"), - 1); - - PortableServer::POA_var root_poa = - PortableServer::POA::_narrow (poa_object.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - PortableServer::POAManager_var poa_manager = - root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (parse_args (argc, argv) != 0) - return 1; - - CORBA::Object_var object = - orb->string_to_object (ior ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - Test::Roundtrip_var roundtrip = - Test::Roundtrip::_narrow (object.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil (roundtrip.in ())) - ACE_ERROR_RETURN ((LM_ERROR, - "Nil Test::Roundtrip reference <%s>\n", - ior), - 1); - - for (int j = 0; j < 100; ++j) - { - ACE_hrtime_t start = 0; - (void) roundtrip->test_method (start ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - - Roundtrip_Handler *roundtrip_handler_impl; - ACE_NEW_RETURN (roundtrip_handler_impl, - Roundtrip_Handler (niterations), - 1); - PortableServer::ServantBase_var owner_transfer(roundtrip_handler_impl); - - Test::AMI_RoundtripHandler_var roundtrip_handler = - roundtrip_handler_impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - ACE_hrtime_t test_start = ACE_OS::gethrtime (); - - for (int i = 0; i != niterations; ++i) - { - // Invoke asynchronous operation.... - roundtrip->sendc_test_method (roundtrip_handler.in (), - ACE_OS::gethrtime () - ACE_ENV_ARG_PARAMETER); - if (orb->work_pending (ACE_ENV_SINGLE_ARG_PARAMETER)) - orb->perform_work (ACE_ENV_SINGLE_ARG_PARAMETER); - - ACE_TRY_CHECK; - } - - ACE_Time_Value tv (0, 2000); - - while (roundtrip_handler_impl->pending_callbacks ()) - { - orb->perform_work (tv ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - - ACE_hrtime_t test_end = ACE_OS::gethrtime (); - - ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration....")); - ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor (); - ACE_DEBUG ((LM_DEBUG, "done\n")); - - roundtrip_handler_impl->dump_results (gsf); - - ACE_Throughput_Stats::dump_throughput ("Total", gsf, - test_end - test_start, - niterations); - - roundtrip->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - root_poa->destroy (1, 1 ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught: "); - return 1; - } - ACE_ENDTRY; - - return 0; -} diff --git a/TAO/performance-tests/AMI_Latency/server.cpp b/TAO/performance-tests/AMI_Latency/server.cpp deleted file mode 100644 index 74498dc13e0..00000000000 --- a/TAO/performance-tests/AMI_Latency/server.cpp +++ /dev/null @@ -1,155 +0,0 @@ -// $Id$ - -#include "Roundtrip.h" -#include "Server_Task.h" -#include "ace/Get_Opt.h" -#include "ace/Sched_Params.h" - -#include "tao/Strategies/advanced_resource.h" - -ACE_RCSID(AMI_Latency, server, "$Id$") - -const char *ior_output_file = "test.ior"; -int nthreads = 4; - -int -parse_args (int argc, char *argv[]) -{ - ACE_Get_Opt get_opts (argc, argv, "o:n:"); - int c; - - while ((c = get_opts ()) != -1) - switch (c) - { - case 'o': - ior_output_file = get_opts.opt_arg (); - break; - - case 'n': - nthreads = ACE_OS::atoi (get_opts.opt_arg ()); - break; - - case '?': - default: - ACE_ERROR_RETURN ((LM_ERROR, - "usage: %s " - "-o <iorfile> " - "-n <nthreads> " - "\n", - argv [0]), - -1); - } - // Indicates sucessful parsing of the command line - return 0; -} - -int -main (int argc, char *argv[]) -{ - int priority = - (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO) - + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2; - - priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO, - priority); - - priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO, - priority); - - // Enable FIFO scheduling, e.g., RT scheduling class on Solaris. - if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO, - priority, - ACE_SCOPE_PROCESS)) != 0) - { - if (ACE_OS::last_error () == EPERM) - { - ACE_DEBUG ((LM_DEBUG, - "server (%P|%t): user is not superuser, " - "test runs in time-shared class\n")); - } - else - ACE_ERROR ((LM_ERROR, - "server (%P|%t): sched_params failed\n")); - } - - ACE_TRY_NEW_ENV - { - CORBA::ORB_var orb = - CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::Object_var poa_object = - orb->resolve_initial_references("RootPOA" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil (poa_object.in ())) - ACE_ERROR_RETURN ((LM_ERROR, - " (%P|%t) Unable to initialize the POA.\n"), - 1); - - PortableServer::POA_var root_poa = - PortableServer::POA::_narrow (poa_object.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - PortableServer::POAManager_var poa_manager = - root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (parse_args (argc, argv) != 0) - return 1; - - Roundtrip *roundtrip_impl; - ACE_NEW_RETURN (roundtrip_impl, - Roundtrip (orb.in ()), - 1); - PortableServer::ServantBase_var owner_transfer(roundtrip_impl); - - Test::Roundtrip_var roundtrip = - roundtrip_impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::String_var ior = - orb->object_to_string (roundtrip.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - // If the ior_output_file exists, output the ior to it - FILE *output_file= ACE_OS::fopen (ior_output_file, "w"); - if (output_file == 0) - ACE_ERROR_RETURN ((LM_ERROR, - "Cannot open output file for writing IOR: %s", - ior_output_file), - 1); - ACE_OS::fprintf (output_file, "%s", ior.in ()); - ACE_OS::fclose (output_file); - - poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - Server_Task server_task (orb.in ()); - if (server_task.activate (THR_NEW_LWP | THR_JOINABLE, - nthreads) != 0) - ACE_ERROR_RETURN ((LM_ERROR, - "Cannot activate server threads\n"), - 1); - - server_task.thr_mgr ()->wait (); - - ACE_DEBUG ((LM_DEBUG, "event loop finished\n")); - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n")); - - root_poa->destroy (1, 1 ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:"); - return 1; - } - ACE_ENDTRY; - - return 0; -} diff --git a/TAO/performance-tests/DII_Latency/Roundtrip.cpp b/TAO/performance-tests/DII_Latency/Roundtrip.cpp deleted file mode 100644 index df15cd65d8a..00000000000 --- a/TAO/performance-tests/DII_Latency/Roundtrip.cpp +++ /dev/null @@ -1,26 +0,0 @@ -// -// $Id$ -// -#include "Roundtrip.h" - -ACE_RCSID(DII_Latency, Roundtrip, "$Id$") - -Roundtrip::Roundtrip (CORBA::ORB_ptr orb) - : orb_ (CORBA::ORB::_duplicate (orb)) -{ -} - -Test::Timestamp -Roundtrip::test_method (Test::Timestamp send_time - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - return send_time; -} - -void -Roundtrip::shutdown (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER); -} diff --git a/TAO/performance-tests/DII_Latency/Roundtrip.h b/TAO/performance-tests/DII_Latency/Roundtrip.h deleted file mode 100644 index efef33dd7e6..00000000000 --- a/TAO/performance-tests/DII_Latency/Roundtrip.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// $Id$ -// - -#ifndef ROUNDTRIP_H -#define ROUNDTRIP_H -#include "ace/pre.h" - -#include "TestS.h" - -#if defined (_MSC_VER) -# if (_MSC_VER >= 1200) -# pragma warning(push) -# endif /* _MSC_VER >= 1200 */ -# pragma warning (disable:4250) -#endif /* _MSC_VER */ - -/// Implement the Test::Roundtrip interface -class Roundtrip - : public virtual POA_Test::Roundtrip - , public virtual PortableServer::RefCountServantBase -{ -public: - /// Constructor - Roundtrip (CORBA::ORB_ptr orb); - - // = The skeleton methods - virtual Test::Timestamp test_method (Test::Timestamp send_time - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - -private: - /// Use an ORB reference to conver strings to objects and shutdown - /// the application. - CORBA::ORB_var orb_; -}; - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma warning(pop) -#endif /* _MSC_VER */ - -#include "ace/post.h" -#endif /* ROUNDTRIP_H */ diff --git a/TAO/performance-tests/DII_Latency/client.cpp b/TAO/performance-tests/DII_Latency/client.cpp deleted file mode 100644 index 57935526269..00000000000 --- a/TAO/performance-tests/DII_Latency/client.cpp +++ /dev/null @@ -1,178 +0,0 @@ -// $Id$ - -#include "ace/Get_Opt.h" -#include "ace/High_Res_Timer.h" -#include "ace/Sched_Params.h" -#include "ace/Stats.h" -#include "ace/Sample_History.h" - -#include "tao/Strategies/advanced_resource.h" -#include "tao/DynamicInterface/Request.h" - -ACE_RCSID(DII_Latency, client, "$Id$") - -const char *ior = "file://test.ior"; -int niterations = 100; -int do_dump_history = 0; -int do_shutdown = 1; - -int -parse_args (int argc, char *argv[]) -{ - ACE_Get_Opt get_opts (argc, argv, "hxk:i:"); - int c; - - while ((c = get_opts ()) != -1) - switch (c) - { - case 'h': - do_dump_history = 1; - break; - - case 'x': - do_shutdown = 0; - break; - - case 'k': - ior = get_opts.opt_arg (); - break; - - case 'i': - niterations = ACE_OS::atoi (get_opts.opt_arg ()); - break; - - case '?': - default: - ACE_ERROR_RETURN ((LM_ERROR, - "usage: %s " - "-k <ior> " - "-i <niterations> " - "-x (disable shutdown) " - "\n", - argv [0]), - -1); - } - // Indicates sucessful parsing of the command line - return 0; -} - -int -main (int argc, char *argv[]) -{ - int priority = - (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO) - + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2; - // Enable FIFO scheduling, e.g., RT scheduling class on Solaris. - - if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO, - priority, - ACE_SCOPE_PROCESS)) != 0) - { - if (ACE_OS::last_error () == EPERM) - { - ACE_DEBUG ((LM_DEBUG, - "client (%P|%t): user is not superuser, " - "test runs in time-shared class\n")); - } - else - ACE_ERROR ((LM_ERROR, - "client (%P|%t): sched_params failed\n")); - } - - ACE_TRY_NEW_ENV - { - CORBA::ORB_var orb = - CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (parse_args (argc, argv) != 0) - return 1; - - CORBA::Object_var object = - orb->string_to_object (ior ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil (object.in ())) - { - ACE_ERROR_RETURN ((LM_ERROR, - "Nil CORBA::Object reference <%s>\n", - ior), - 1); - } - - for (int j = 0; j < 100; ++j) - { - CORBA::Request_var request = - object->_request ("test_method" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::ULongLong dummy = 0; - request->add_in_arg("send_time") <<= dummy; - - request->set_return_type (CORBA::_tc_ulonglong); - request->invoke (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - - ACE_Sample_History history (niterations); - - ACE_hrtime_t test_start = ACE_OS::gethrtime (); - for (int i = 0; i < niterations; ++i) - { - CORBA::ULongLong start = ACE_OS::gethrtime (); - - CORBA::Request_var request = - object->_request ("test_method" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - request->add_in_arg("send_time") <<= start; - - request->set_return_type (CORBA::_tc_ulonglong); - request->invoke (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - ACE_hrtime_t now = ACE_OS::gethrtime (); - history.sample (now - start); - } - - ACE_hrtime_t test_end = ACE_OS::gethrtime (); - - ACE_DEBUG ((LM_DEBUG, "test finished\n")); - - ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration....")); - ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor (); - ACE_DEBUG ((LM_DEBUG, "done\n")); - - if (do_dump_history) - { - history.dump_samples ("HISTORY", gsf); - } - - ACE_Basic_Stats stats; - history.collect_basic_stats (stats); - stats.dump_results ("Total", gsf); - - ACE_Throughput_Stats::dump_throughput ("Total", gsf, - test_end - test_start, - stats.samples_count ()); - - if (do_shutdown) - { - CORBA::Request_var request = - object->_request ("shutdown" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - request->invoke (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - } - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:"); - return 1; - } - ACE_ENDTRY; - - return 0; -} diff --git a/TAO/performance-tests/DII_Latency/server.cpp b/TAO/performance-tests/DII_Latency/server.cpp deleted file mode 100644 index e96f0ff595a..00000000000 --- a/TAO/performance-tests/DII_Latency/server.cpp +++ /dev/null @@ -1,136 +0,0 @@ -// $Id$ - -#include "Roundtrip.h" -#include "ace/Get_Opt.h" -#include "ace/Sched_Params.h" - -#include "tao/Strategies/advanced_resource.h" - -ACE_RCSID(Single_Threaded_Latency, server, "$Id$") - -const char *ior_output_file = "test.ior"; - -int -parse_args (int argc, char *argv[]) -{ - ACE_Get_Opt get_opts (argc, argv, "o:"); - int c; - - while ((c = get_opts ()) != -1) - switch (c) - { - case 'o': - ior_output_file = get_opts.opt_arg (); - break; - - case '?': - default: - ACE_ERROR_RETURN ((LM_ERROR, - "usage: %s " - "-o <iorfile>" - "\n", - argv [0]), - -1); - } - // Indicates sucessful parsing of the command line - return 0; -} - -int -main (int argc, char *argv[]) -{ - int priority = - (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO) - + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2; - priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO, - priority); - // Enable FIFO scheduling, e.g., RT scheduling class on Solaris. - - if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO, - priority, - ACE_SCOPE_PROCESS)) != 0) - { - if (ACE_OS::last_error () == EPERM) - { - ACE_DEBUG ((LM_DEBUG, - "server (%P|%t): user is not superuser, " - "test runs in time-shared class\n")); - } - else - ACE_ERROR ((LM_ERROR, - "server (%P|%t): sched_params failed\n")); - } - - ACE_TRY_NEW_ENV - { - CORBA::ORB_var orb = - CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::Object_var poa_object = - orb->resolve_initial_references("RootPOA" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil (poa_object.in ())) - ACE_ERROR_RETURN ((LM_ERROR, - " (%P|%t) Unable to initialize the POA.\n"), - 1); - - PortableServer::POA_var root_poa = - PortableServer::POA::_narrow (poa_object.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - PortableServer::POAManager_var poa_manager = - root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (parse_args (argc, argv) != 0) - return 1; - - Roundtrip *roundtrip_impl; - ACE_NEW_RETURN (roundtrip_impl, - Roundtrip (orb.in ()), - 1); - PortableServer::ServantBase_var owner_transfer(roundtrip_impl); - - Test::Roundtrip_var roundtrip = - roundtrip_impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::String_var ior = - orb->object_to_string (roundtrip.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - // If the ior_output_file exists, output the ior to it - FILE *output_file= ACE_OS::fopen (ior_output_file, "w"); - if (output_file == 0) - ACE_ERROR_RETURN ((LM_ERROR, - "Cannot open output file for writing IOR: %s", - ior_output_file), - 1); - ACE_OS::fprintf (output_file, "%s", ior.in ()); - ACE_OS::fclose (output_file); - - poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - orb->run (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n")); - - root_poa->destroy (1, 1 ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:"); - return 1; - } - ACE_ENDTRY; - - return 0; -} diff --git a/TAO/performance-tests/DSI_Latency/Roundtrip.cpp b/TAO/performance-tests/DSI_Latency/Roundtrip.cpp deleted file mode 100644 index 6de5cfe047a..00000000000 --- a/TAO/performance-tests/DSI_Latency/Roundtrip.cpp +++ /dev/null @@ -1,97 +0,0 @@ -// -// $Id$ -// -#include "Roundtrip.h" -#include "tao/DynamicInterface/Server_Request.h" - -ACE_RCSID(Single_Threaded_Latency, Roundtrip, "$Id$") - -Roundtrip::Roundtrip (CORBA::ORB_ptr orb) - : orb_ (CORBA::ORB::_duplicate (orb)) -{ -} - -void -Roundtrip::invoke (CORBA::ServerRequest_ptr request - ACE_ENV_ARG_DECL) -{ - if (ACE_OS::strcmp ("shutdown", request->operation ()) == 0) - { - this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - return; - } - - else if (ACE_OS::strcmp ("_is_a", request->operation ()) == 0) - { - CORBA::NVList_ptr list; - this->orb_->create_list (0, list ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - CORBA::Any type_id (CORBA::_tc_string); - list->add_value ("type_id", type_id, CORBA::ARG_IN - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - request->arguments (list ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - CORBA::NamedValue_ptr nv = list->item (0 ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - const char *arg; - *(nv->value ()) >>= arg; - - CORBA::Boolean type_matches = 0; - if (ACE_OS::strcmp (arg, "IDL:Test/Roundtrip:1.0") == 0 - || ACE_OS::strcmp (arg, "IDL:omg.org/CORBA/Object:1.0") == 0 - || ACE_OS::strcmp (arg, "") == 0) - type_matches = 1; - - CORBA::Any result; - result <<= CORBA::Any::from_boolean (type_matches); - - request->set_result (result ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - return; - } - - else if (ACE_OS::strcmp ("test_method", request->operation ()) == 0) - { - CORBA::NVList_ptr list; - this->orb_->create_list (0, list ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - CORBA::Any send_time (CORBA::_tc_ulonglong); - list->add_value ("send_time", send_time, CORBA::ARG_IN - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - request->arguments (list ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - CORBA::NamedValue_ptr nv = list->item (0 ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - request->set_result (*(nv->value ()) ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - return; - } - - CORBA::Any bad_operation; - CORBA::BAD_OPERATION exception; - bad_operation <<= exception; - request->set_exception (bad_operation ACE_ENV_ARG_PARAMETER); - ACE_CHECK; -} - -CORBA::RepositoryId -Roundtrip::_primary_interface (const PortableServer::ObjectId &, - PortableServer::POA_ptr - ACE_ENV_ARG_DECL_NOT_USED) -{ - return CORBA::string_dup ("IDL:Test/Roundtrip:1.0"); -} diff --git a/TAO/performance-tests/DSI_Latency/Roundtrip.h b/TAO/performance-tests/DSI_Latency/Roundtrip.h deleted file mode 100644 index d795dcb56f1..00000000000 --- a/TAO/performance-tests/DSI_Latency/Roundtrip.h +++ /dev/null @@ -1,48 +0,0 @@ -// -// $Id$ -// - -#ifndef ROUNDTRIP_H -#define ROUNDTRIP_H -#include "ace/pre.h" - -#include "tao/DynamicInterface/Dynamic_Implementation.h" -#include "tao/PortableServer/PortableServer.h" -#include "tao/corba.h" - -#if defined (_MSC_VER) -# if (_MSC_VER >= 1200) -# pragma warning(push) -# endif /* _MSC_VER >= 1200 */ -# pragma warning (disable:4250) -#endif /* _MSC_VER */ - -/// Implement the Test::Roundtrip interface -class Roundtrip - : public virtual PortableServer::DynamicImplementation - , public virtual PortableServer::RefCountServantBase -{ -public: - /// Constructor - Roundtrip (CORBA::ORB_ptr orb); - - // = The DSI methods - virtual void invoke (CORBA::ServerRequest_ptr request - ACE_ENV_ARG_DECL); - virtual CORBA::RepositoryId _primary_interface ( - const PortableServer::ObjectId &oid, - PortableServer::POA_ptr poa - ACE_ENV_ARG_DECL); - -private: - /// Use an ORB reference to conver strings to objects and shutdown - /// the application. - CORBA::ORB_var orb_; -}; - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma warning(pop) -#endif /* _MSC_VER */ - -#include "ace/post.h" -#endif /* ROUNDTRIP_H */ diff --git a/TAO/performance-tests/DSI_Latency/client.cpp b/TAO/performance-tests/DSI_Latency/client.cpp deleted file mode 100644 index 2a264e91b43..00000000000 --- a/TAO/performance-tests/DSI_Latency/client.cpp +++ /dev/null @@ -1,163 +0,0 @@ -// $Id$ - -#include "TestC.h" -#include "ace/Get_Opt.h" -#include "ace/High_Res_Timer.h" -#include "ace/Sched_Params.h" -#include "ace/Stats.h" -#include "ace/Sample_History.h" - -#include "tao/Strategies/advanced_resource.h" - -ACE_RCSID(DSI_Latency, client, "$Id$") - -const char *ior = "file://test.ior"; -int niterations = 100; -int do_dump_history = 0; -int do_shutdown = 1; - -int -parse_args (int argc, char *argv[]) -{ - ACE_Get_Opt get_opts (argc, argv, "hxk:i:"); - int c; - - while ((c = get_opts ()) != -1) - switch (c) - { - case 'h': - do_dump_history = 1; - break; - - case 'x': - do_shutdown = 0; - break; - - case 'k': - ior = get_opts.opt_arg (); - break; - - case 'i': - niterations = ACE_OS::atoi (get_opts.opt_arg ()); - break; - - case '?': - default: - ACE_ERROR_RETURN ((LM_ERROR, - "usage: %s " - "-k <ior> " - "-i <niterations> " - "-x (disable shutdown) " - "\n", - argv [0]), - -1); - } - // Indicates sucessful parsing of the command line - return 0; -} - -int -main (int argc, char *argv[]) -{ - int priority = - (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO) - + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2; - // Enable FIFO scheduling, e.g., RT scheduling class on Solaris. - - if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO, - priority, - ACE_SCOPE_PROCESS)) != 0) - { - if (ACE_OS::last_error () == EPERM) - { - ACE_DEBUG ((LM_DEBUG, - "client (%P|%t): user is not superuser, " - "test runs in time-shared class\n")); - } - else - ACE_ERROR ((LM_ERROR, - "client (%P|%t): sched_params failed\n")); - } - - ACE_TRY_NEW_ENV - { - CORBA::ORB_var orb = - CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (parse_args (argc, argv) != 0) - return 1; - - CORBA::Object_var object = - orb->string_to_object (ior ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - Test::Roundtrip_var roundtrip = - Test::Roundtrip::_narrow (object.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil (roundtrip.in ())) - { - ACE_ERROR_RETURN ((LM_ERROR, - "Nil Test::Roundtrip reference <%s>\n", - ior), - 1); - } - - for (int j = 0; j < 100; ++j) - { - ACE_hrtime_t start = 0; - (void) roundtrip->test_method (start ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - - ACE_Sample_History history (niterations); - - ACE_hrtime_t test_start = ACE_OS::gethrtime (); - for (int i = 0; i < niterations; ++i) - { - ACE_hrtime_t start = ACE_OS::gethrtime (); - - (void) roundtrip->test_method (start ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - ACE_hrtime_t now = ACE_OS::gethrtime (); - history.sample (now - start); - } - - ACE_hrtime_t test_end = ACE_OS::gethrtime (); - - ACE_DEBUG ((LM_DEBUG, "test finished\n")); - - ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration....")); - ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor (); - ACE_DEBUG ((LM_DEBUG, "done\n")); - - if (do_dump_history) - { - history.dump_samples ("HISTORY", gsf); - } - - ACE_Basic_Stats stats; - history.collect_basic_stats (stats); - stats.dump_results ("Total", gsf); - - ACE_Throughput_Stats::dump_throughput ("Total", gsf, - test_end - test_start, - stats.samples_count ()); - - if (do_shutdown) - { - roundtrip->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:"); - return 1; - } - ACE_ENDTRY; - - return 0; -} diff --git a/TAO/performance-tests/DSI_Latency/server.cpp b/TAO/performance-tests/DSI_Latency/server.cpp deleted file mode 100644 index ebc70ade1d7..00000000000 --- a/TAO/performance-tests/DSI_Latency/server.cpp +++ /dev/null @@ -1,142 +0,0 @@ -// $Id$ - -#include "Roundtrip.h" -#include "ace/Get_Opt.h" -#include "ace/Sched_Params.h" - -#include "tao/Strategies/advanced_resource.h" - -ACE_RCSID(DSI_Latency, server, "$Id$") - -const char *ior_output_file = "test.ior"; - -int -parse_args (int argc, char *argv[]) -{ - ACE_Get_Opt get_opts (argc, argv, "o:"); - int c; - - while ((c = get_opts ()) != -1) - switch (c) - { - case 'o': - ior_output_file = get_opts.opt_arg (); - break; - - case '?': - default: - ACE_ERROR_RETURN ((LM_ERROR, - "usage: %s " - "-o <iorfile>" - "\n", - argv [0]), - -1); - } - // Indicates sucessful parsing of the command line - return 0; -} - -int -main (int argc, char *argv[]) -{ - int priority = - (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO) - + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2; - priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO, - priority); - // Enable FIFO scheduling, e.g., RT scheduling class on Solaris. - - if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO, - priority, - ACE_SCOPE_PROCESS)) != 0) - { - if (ACE_OS::last_error () == EPERM) - { - ACE_DEBUG ((LM_DEBUG, - "server (%P|%t): user is not superuser, " - "test runs in time-shared class\n")); - } - else - ACE_ERROR ((LM_ERROR, - "server (%P|%t): sched_params failed\n")); - } - - ACE_TRY_NEW_ENV - { - CORBA::ORB_var orb = - CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::Object_var poa_object = - orb->resolve_initial_references("RootPOA" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil (poa_object.in ())) - ACE_ERROR_RETURN ((LM_ERROR, - " (%P|%t) Unable to initialize the POA.\n"), - 1); - - PortableServer::POA_var root_poa = - PortableServer::POA::_narrow (poa_object.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - PortableServer::POAManager_var poa_manager = - root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (parse_args (argc, argv) != 0) - return 1; - - Roundtrip *roundtrip_impl; - ACE_NEW_RETURN (roundtrip_impl, - Roundtrip (orb.in ()), - 1); - PortableServer::ServantBase_var owner_transfer(roundtrip_impl); - - PortableServer::ObjectId_var oid = - root_poa->activate_object (roundtrip_impl - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::Object_var roundtrip = - root_poa->id_to_reference (oid.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::String_var ior = - orb->object_to_string (roundtrip.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - // If the ior_output_file exists, output the ior to it - FILE *output_file= ACE_OS::fopen (ior_output_file, "w"); - if (output_file == 0) - ACE_ERROR_RETURN ((LM_ERROR, - "Cannot open output file for writing IOR: %s", - ior_output_file), - 1); - ACE_OS::fprintf (output_file, "%s", ior.in ()); - ACE_OS::fclose (output_file); - - poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - orb->run (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n")); - - root_poa->destroy (1, 1 ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:"); - return 1; - } - ACE_ENDTRY; - - return 0; -} diff --git a/TAO/performance-tests/Deferred_Latency/Roundtrip.cpp b/TAO/performance-tests/Deferred_Latency/Roundtrip.cpp deleted file mode 100644 index 72f83576b44..00000000000 --- a/TAO/performance-tests/Deferred_Latency/Roundtrip.cpp +++ /dev/null @@ -1,26 +0,0 @@ -// -// $Id$ -// -#include "Roundtrip.h" - -ACE_RCSID(Single_Threaded_Latency, Roundtrip, "$Id$") - -Roundtrip::Roundtrip (CORBA::ORB_ptr orb) - : orb_ (CORBA::ORB::_duplicate (orb)) -{ -} - -Test::Timestamp -Roundtrip::test_method (Test::Timestamp send_time - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - return send_time; -} - -void -Roundtrip::shutdown (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER); -} diff --git a/TAO/performance-tests/Deferred_Latency/Roundtrip.h b/TAO/performance-tests/Deferred_Latency/Roundtrip.h deleted file mode 100644 index efef33dd7e6..00000000000 --- a/TAO/performance-tests/Deferred_Latency/Roundtrip.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// $Id$ -// - -#ifndef ROUNDTRIP_H -#define ROUNDTRIP_H -#include "ace/pre.h" - -#include "TestS.h" - -#if defined (_MSC_VER) -# if (_MSC_VER >= 1200) -# pragma warning(push) -# endif /* _MSC_VER >= 1200 */ -# pragma warning (disable:4250) -#endif /* _MSC_VER */ - -/// Implement the Test::Roundtrip interface -class Roundtrip - : public virtual POA_Test::Roundtrip - , public virtual PortableServer::RefCountServantBase -{ -public: - /// Constructor - Roundtrip (CORBA::ORB_ptr orb); - - // = The skeleton methods - virtual Test::Timestamp test_method (Test::Timestamp send_time - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - -private: - /// Use an ORB reference to conver strings to objects and shutdown - /// the application. - CORBA::ORB_var orb_; -}; - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma warning(pop) -#endif /* _MSC_VER */ - -#include "ace/post.h" -#endif /* ROUNDTRIP_H */ diff --git a/TAO/performance-tests/Deferred_Latency/client.cpp b/TAO/performance-tests/Deferred_Latency/client.cpp deleted file mode 100644 index 8aa94d94172..00000000000 --- a/TAO/performance-tests/Deferred_Latency/client.cpp +++ /dev/null @@ -1,203 +0,0 @@ -// $Id$ - -#include "TestC.h" - -#include "tao/DynamicInterface/Request.h" - -#include "tao/Strategies/advanced_resource.h" - -#include "ace/Get_Opt.h" -#include "ace/Sched_Params.h" -#include "ace/High_Res_Timer.h" -#include "ace/Sched_Params.h" -#include "ace/Stats.h" -#include "ace/Sample_History.h" - -ACE_RCSID(Deferred_Latency, client, "$Id$") - -const char *ior = "file://test.ior"; -int niterations = 1000; -int burst = 10; -int do_shutdown = 1; -int do_dump_history = 0; - -int -parse_args (int argc, char *argv[]) -{ - ACE_Get_Opt get_opts (argc, argv, "hxk:i:b:"); - int c; - - while ((c = get_opts ()) != -1) - switch (c) - { - case 'h': - do_dump_history = 1; - break; - - case 'x': - do_shutdown = 0; - break; - - case 'k': - ior = get_opts.opt_arg (); - break; - - case 'i': - niterations = ACE_OS::atoi (get_opts.opt_arg ()); - break; - - case 'b': - burst = ACE_OS::atoi (get_opts.opt_arg ()); - break; - - case '?': - default: - ACE_ERROR_RETURN ((LM_ERROR, - "usage: %s " - "-k <ior> " - "-i <niterations> " - "-b <burst> " - "-x (disable shutdown) " - "-h (dump history) " - "\n", - argv [0]), - -1); - } - // Indicates sucessful parsing of the command line - return 0; -} - -int -main (int argc, char *argv[]) -{ - int priority = - (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO) - + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2; - // Enable FIFO scheduling, e.g., RT scheduling class on Solaris. - - if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO, - priority, - ACE_SCOPE_PROCESS)) != 0) - { - if (ACE_OS::last_error () == EPERM) - { - ACE_DEBUG ((LM_DEBUG, - "client (%P|%t): user is not superuser, " - "test runs in time-shared class\n")); - } - else - ACE_ERROR ((LM_ERROR, - "client (%P|%t): sched_params failed\n")); - } - - ACE_TRY_NEW_ENV - { - CORBA::ORB_var orb = - CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (parse_args (argc, argv) != 0) - return 1; - - CORBA::Object_var object = - orb->string_to_object (ior ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - Test::Roundtrip_var roundtrip = - Test::Roundtrip::_narrow (object.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil (roundtrip.in ())) - { - ACE_ERROR_RETURN ((LM_ERROR, - "Nil Test::Roundtrip reference <%s>\n", - ior), - 1); - } - - for (int j = 0; j < 100; ++j) - { - ACE_hrtime_t start = 0; - (void) roundtrip->test_method (start ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - - ACE_Sample_History history (niterations); - - ACE_hrtime_t test_start = ACE_OS::gethrtime (); - - CORBA::Request_var *request; - ACE_NEW_RETURN (request, CORBA::Request_var[burst], 1); - - for (int i = 0; i < niterations; ++i) - { - int j; - - for (j = 0; j != burst; ++j) - { - CORBA::ULongLong start = ACE_OS::gethrtime (); - - request[j] = - roundtrip->_request ("test_method" - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - request[j]->add_in_arg () <<= start; - request[j]->set_return_type (CORBA::_tc_ulonglong); - - request[j]->send_deferred (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - - for (j = 0; j != burst; ++j) - { - request[j]->get_response (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::ULongLong retval; - if ((request[j]->return_value () >>= retval) == 1) - { - ACE_hrtime_t now = ACE_OS::gethrtime (); - history.sample (now - retval); - } - } - } - delete[] request; - - ACE_hrtime_t test_end = ACE_OS::gethrtime (); - - ACE_DEBUG ((LM_DEBUG, "test finished\n")); - - ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration....")); - ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor (); - ACE_DEBUG ((LM_DEBUG, "done\n")); - - if (do_dump_history) - { - history.dump_samples ("HISTORY", gsf); - } - - ACE_Basic_Stats stats; - history.collect_basic_stats (stats); - stats.dump_results ("Total", gsf); - - ACE_Throughput_Stats::dump_throughput ("Total", gsf, - test_end - test_start, - stats.samples_count ()); - - if (do_shutdown) - { - roundtrip->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "Caught exception:"); - return 1; - } - ACE_ENDTRY; - - return 0; -} diff --git a/TAO/performance-tests/Deferred_Latency/server.cpp b/TAO/performance-tests/Deferred_Latency/server.cpp deleted file mode 100644 index e96f0ff595a..00000000000 --- a/TAO/performance-tests/Deferred_Latency/server.cpp +++ /dev/null @@ -1,136 +0,0 @@ -// $Id$ - -#include "Roundtrip.h" -#include "ace/Get_Opt.h" -#include "ace/Sched_Params.h" - -#include "tao/Strategies/advanced_resource.h" - -ACE_RCSID(Single_Threaded_Latency, server, "$Id$") - -const char *ior_output_file = "test.ior"; - -int -parse_args (int argc, char *argv[]) -{ - ACE_Get_Opt get_opts (argc, argv, "o:"); - int c; - - while ((c = get_opts ()) != -1) - switch (c) - { - case 'o': - ior_output_file = get_opts.opt_arg (); - break; - - case '?': - default: - ACE_ERROR_RETURN ((LM_ERROR, - "usage: %s " - "-o <iorfile>" - "\n", - argv [0]), - -1); - } - // Indicates sucessful parsing of the command line - return 0; -} - -int -main (int argc, char *argv[]) -{ - int priority = - (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO) - + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2; - priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO, - priority); - // Enable FIFO scheduling, e.g., RT scheduling class on Solaris. - - if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO, - priority, - ACE_SCOPE_PROCESS)) != 0) - { - if (ACE_OS::last_error () == EPERM) - { - ACE_DEBUG ((LM_DEBUG, - "server (%P|%t): user is not superuser, " - "test runs in time-shared class\n")); - } - else - ACE_ERROR ((LM_ERROR, - "server (%P|%t): sched_params failed\n")); - } - - ACE_TRY_NEW_ENV - { - CORBA::ORB_var orb = - CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::Object_var poa_object = - orb->resolve_initial_references("RootPOA" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil (poa_object.in ())) - ACE_ERROR_RETURN ((LM_ERROR, - " (%P|%t) Unable to initialize the POA.\n"), - 1); - - PortableServer::POA_var root_poa = - PortableServer::POA::_narrow (poa_object.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - PortableServer::POAManager_var poa_manager = - root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (parse_args (argc, argv) != 0) - return 1; - - Roundtrip *roundtrip_impl; - ACE_NEW_RETURN (roundtrip_impl, - Roundtrip (orb.in ()), - 1); - PortableServer::ServantBase_var owner_transfer(roundtrip_impl); - - Test::Roundtrip_var roundtrip = - roundtrip_impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::String_var ior = - orb->object_to_string (roundtrip.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - // If the ior_output_file exists, output the ior to it - FILE *output_file= ACE_OS::fopen (ior_output_file, "w"); - if (output_file == 0) - ACE_ERROR_RETURN ((LM_ERROR, - "Cannot open output file for writing IOR: %s", - ior_output_file), - 1); - ACE_OS::fprintf (output_file, "%s", ior.in ()); - ACE_OS::fclose (output_file); - - poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - orb->run (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n")); - - root_poa->destroy (1, 1 ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:"); - return 1; - } - ACE_ENDTRY; - - return 0; -} diff --git a/TAO/performance-tests/RTCorba/Multiple_Endpoints/Endpoint_Per_Priority/Makefile b/TAO/performance-tests/RTCorba/Multiple_Endpoints/Endpoint_Per_Priority/Makefile deleted file mode 100644 index 6abeb8554f4..00000000000 --- a/TAO/performance-tests/RTCorba/Multiple_Endpoints/Endpoint_Per_Priority/Makefile +++ /dev/null @@ -1,616 +0,0 @@ -#---------------------------------------------------------------------------- -# -# $Id$ -# -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -ifndef TAO_ROOT - TAO_ROOT = $(ACE_ROOT)/TAO -endif # ! TAO_ROOT - -LDLIBS = -lRTCORBA_Common -lTAO_Strategies -lTAO_PortableServer -lTAO - -BIN_UNCHECKED = server client - -CLIENT_OBJS = client.o -SERVER_OBJS = server.o - -BUILD = $(BIN) -VLDLIBS = $(LDLIBS:%=%$(VAR)) -VBIN = $(BIN:%=%$(VAR)) -SRC=$(CLIENT_OBJS:.o=.cpp) $(SERVER_OBJS:.o=.cpp) -CPPFLAGS += -I../Common - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(TAO_ROOT)/rules.tao.GNU - -ifeq ($(rt_corba),1) - ifeq ($(minimum_corba),0) - BIN=$(BIN_UNCHECKED) - endif # minimum_corba -endif # rt_corba - -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU -include $(TAO_ROOT)/taoconfig.mk - -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- - -server: $(addprefix $(VDIR),$(SERVER_OBJS)) - $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK) - -client: $(addprefix $(VDIR),$(CLIENT_OBJS)) - $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK) - -realclean: clean - -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - - -.obj/client.o .obj/client.o .obj/client.o .obj/client.o: client.cpp ../Common/testC.h \ - $(TAO_ROOT)/tao/corba.h \ - $(ACE_ROOT)/ace/pre.h \ - $(ACE_ROOT)/ace/post.h \ - $(ACE_ROOT)/ace/ACE_export.h \ - $(ACE_ROOT)/ace/svc_export.h \ - $(ACE_ROOT)/ace/ace_wchar.h \ - $(ACE_ROOT)/ace/ace_wchar.inl \ - $(ACE_ROOT)/ace/OS_Errno.h \ - $(ACE_ROOT)/ace/OS_Export.h \ - $(ACE_ROOT)/ace/OS_Errno.inl \ - $(TAO_ROOT)/tao/corbafwd.h \ - $(ACE_ROOT)/ace/CDR_Base.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/OS_Dirent.h \ - $(ACE_ROOT)/ace/OS_Dirent.inl \ - $(ACE_ROOT)/ace/OS_String.h \ - $(ACE_ROOT)/ace/OS_String.inl \ - $(ACE_ROOT)/ace/OS_Memory.h \ - $(ACE_ROOT)/ace/OS_Memory.inl \ - $(ACE_ROOT)/ace/OS_TLI.h \ - $(ACE_ROOT)/ace/OS_TLI.inl \ - $(ACE_ROOT)/ace/Min_Max.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Flag_Manip.h \ - $(ACE_ROOT)/ace/Flag_Manip.i \ - $(ACE_ROOT)/ace/Handle_Ops.h \ - $(ACE_ROOT)/ace/Handle_Ops.i \ - $(ACE_ROOT)/ace/Lib_Find.h \ - $(ACE_ROOT)/ace/Lib_Find.i \ - $(ACE_ROOT)/ace/Init_ACE.h \ - $(ACE_ROOT)/ace/Init_ACE.i \ - $(ACE_ROOT)/ace/Sock_Connect.h \ - $(ACE_ROOT)/ace/Sock_Connect.i \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Malloc.h \ - $(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/OS_Log_Msg_Attributes.h \ - $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.inl \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread_Adapter.h \ - $(ACE_ROOT)/ace/Base_Thread_Adapter.h \ - $(ACE_ROOT)/ace/Base_Thread_Adapter.inl \ - $(ACE_ROOT)/ace/Thread_Adapter.inl \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Malloc_Allocator.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc_Allocator.i \ - $(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/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(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/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/Unbounded_Set.h \ - $(ACE_ROOT)/ace/Node.h \ - $(ACE_ROOT)/ace/Node.cpp \ - $(ACE_ROOT)/ace/Unbounded_Set.inl \ - $(ACE_ROOT)/ace/Unbounded_Set.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(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/CDR_Base.inl \ - $(TAO_ROOT)/tao/try_macros.h \ - $(TAO_ROOT)/tao/orbconf.h \ - $(ACE_ROOT)/ace/CORBA_macros.h \ - $(TAO_ROOT)/tao/varbase.h \ - $(TAO_ROOT)/tao/TAO_Export.h \ - $(TAO_ROOT)/tao/corbafwd.i \ - $(TAO_ROOT)/tao/Typecode.h \ - $(TAO_ROOT)/tao/Exception.h \ - $(ACE_ROOT)/ace/SString.h \ - $(ACE_ROOT)/ace/SString.i \ - $(TAO_ROOT)/tao/Exception.i \ - $(TAO_ROOT)/tao/Typecode.i \ - $(TAO_ROOT)/tao/Any.h \ - $(TAO_ROOT)/tao/CDR.h \ - $(ACE_ROOT)/ace/CDR_Stream.h \ - $(ACE_ROOT)/ace/CDR_Stream.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_Proxy_Broker.h \ - $(TAO_ROOT)/tao/Object_Proxy_Impl.h \ - $(TAO_ROOT)/tao/Object.i \ - $(TAO_ROOT)/tao/Any.i \ - $(TAO_ROOT)/tao/NVList.h \ - $(ACE_ROOT)/ace/Unbounded_Queue.h \ - $(ACE_ROOT)/ace/Unbounded_Queue.inl \ - $(ACE_ROOT)/ace/Unbounded_Queue.cpp \ - $(TAO_ROOT)/tao/NVList.i \ - $(TAO_ROOT)/tao/LocalObject.h \ - $(TAO_ROOT)/tao/LocalObject.i \ - $(TAO_ROOT)/tao/Principal.h \ - $(TAO_ROOT)/tao/OctetSeqC.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/OctetSeqC.i \ - $(TAO_ROOT)/tao/Principal.i \ - $(TAO_ROOT)/tao/ORB.h \ - $(TAO_ROOT)/tao/Services.h \ - $(TAO_ROOT)/tao/Services.i \ - $(TAO_ROOT)/tao/CORBA_String.h \ - $(TAO_ROOT)/tao/CORBA_String.inl \ - $(TAO_ROOT)/tao/PolicyC.h \ - $(TAO_ROOT)/tao/Encodable.h \ - $(TAO_ROOT)/tao/Remote_Object_Proxy_Impl.h \ - $(TAO_ROOT)/tao/CurrentC.h \ - $(TAO_ROOT)/tao/CurrentC.i \ - $(TAO_ROOT)/tao/PolicyC.i \ - $(TAO_ROOT)/tao/ORB.i \ - $(TAO_ROOT)/tao/BoundsC.h \ - $(TAO_ROOT)/tao/BoundsC.i \ - $(TAO_ROOT)/tao/ValueBase.h \ - $(TAO_ROOT)/tao/ValueBase.i \ - $(TAO_ROOT)/tao/ValueFactory.h \ - $(TAO_ROOT)/tao/ValueFactory.i \ - $(TAO_ROOT)/tao/DomainC.h \ - $(TAO_ROOT)/tao/DomainC.i \ - $(TAO_ROOT)/tao/WrongTransactionC.h \ - $(TAO_ROOT)/tao/Object_KeyC.h \ - $(TAO_ROOT)/tao/Object_KeyC.i \ - $(TAO_ROOT)/tao/ObjectIDList.h \ - $(TAO_ROOT)/tao/ObjectIDList.i \ - $(TAO_ROOT)/tao/StringSeqC.h \ - $(TAO_ROOT)/tao/StringSeqC.i \ - $(TAO_ROOT)/tao/PortableInterceptorC.h \ - $(TAO_ROOT)/tao/DynamicC.h \ - $(TAO_ROOT)/tao/DynamicC.i \ - $(TAO_ROOT)/tao/MessagingC.h \ - $(TAO_ROOT)/tao/TimeBaseC.h \ - $(TAO_ROOT)/tao/SmartProxies/Smart_Proxies.h \ - $(TAO_ROOT)/tao/SmartProxies/smartproxies_export.h \ - $(TAO_ROOT)/tao/TAO_Singleton.h \ - $(TAO_ROOT)/tao/TAO_Singleton.inl \ - $(TAO_ROOT)/tao/TAO_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 \ - $(TAO_ROOT)/tao/TAO_Singleton_Manager.h \ - $(TAO_ROOT)/tao/TAO_Singleton_Manager.inl \ - $(TAO_ROOT)/tao/SmartProxies/Smart_Proxies.inl \ - $(TAO_ROOT)/tao/TimeBaseC.i \ - $(TAO_ROOT)/tao/IOPC.h \ - $(TAO_ROOT)/tao/IOPC.i \ - $(TAO_ROOT)/tao/PollableC.h \ - $(TAO_ROOT)/tao/PollableC.i \ - $(TAO_ROOT)/tao/MessagingC.i \ - $(TAO_ROOT)/tao/PortableInterceptorC.i \ - ../Common/rtcorba_common_export.h ../Common/testC.i \ - $(TAO_ROOT)/tao/TAOC.h \ - $(TAO_ROOT)/tao/TAOC.i \ - $(ACE_ROOT)/ace/Get_Opt.h \ - $(ACE_ROOT)/ace/Get_Opt.i \ - $(ACE_ROOT)/ace/Task.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Array_Base.h \ - $(ACE_ROOT)/ace/Array_Base.inl \ - $(ACE_ROOT)/ace/Array_Base.cpp \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Singleton.h \ - $(ACE_ROOT)/ace/Singleton.i \ - $(ACE_ROOT)/ace/Singleton.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/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/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/Test_and_Set.h \ - $(ACE_ROOT)/ace/Test_and_Set.i \ - $(ACE_ROOT)/ace/Test_and_Set.cpp \ - $(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_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/Process_Mutex.h \ - $(ACE_ROOT)/ace/Process_Mutex.inl \ - $(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.cpp \ - $(ACE_ROOT)/ace/Stats.h \ - $(ACE_ROOT)/ace/Basic_Stats.h \ - $(ACE_ROOT)/ace/Basic_Stats.inl \ - $(ACE_ROOT)/ace/Stats.i \ - $(ACE_ROOT)/ace/High_Res_Timer.h \ - $(ACE_ROOT)/ace/High_Res_Timer.i \ - $(ACE_ROOT)/ace/Sched_Params.h \ - $(ACE_ROOT)/ace/Sched_Params.i - -.obj/server.o .obj/server.o .obj/server.o .obj/server.o: server.cpp ../Common/test_i.h ../Common/testS.h \ - ../Common/testC.h \ - $(TAO_ROOT)/tao/corba.h \ - $(ACE_ROOT)/ace/pre.h \ - $(ACE_ROOT)/ace/post.h \ - $(ACE_ROOT)/ace/ACE_export.h \ - $(ACE_ROOT)/ace/svc_export.h \ - $(ACE_ROOT)/ace/ace_wchar.h \ - $(ACE_ROOT)/ace/ace_wchar.inl \ - $(ACE_ROOT)/ace/OS_Errno.h \ - $(ACE_ROOT)/ace/OS_Export.h \ - $(ACE_ROOT)/ace/OS_Errno.inl \ - $(TAO_ROOT)/tao/corbafwd.h \ - $(ACE_ROOT)/ace/CDR_Base.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/OS_Dirent.h \ - $(ACE_ROOT)/ace/OS_Dirent.inl \ - $(ACE_ROOT)/ace/OS_String.h \ - $(ACE_ROOT)/ace/OS_String.inl \ - $(ACE_ROOT)/ace/OS_Memory.h \ - $(ACE_ROOT)/ace/OS_Memory.inl \ - $(ACE_ROOT)/ace/OS_TLI.h \ - $(ACE_ROOT)/ace/OS_TLI.inl \ - $(ACE_ROOT)/ace/Min_Max.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Flag_Manip.h \ - $(ACE_ROOT)/ace/Flag_Manip.i \ - $(ACE_ROOT)/ace/Handle_Ops.h \ - $(ACE_ROOT)/ace/Handle_Ops.i \ - $(ACE_ROOT)/ace/Lib_Find.h \ - $(ACE_ROOT)/ace/Lib_Find.i \ - $(ACE_ROOT)/ace/Init_ACE.h \ - $(ACE_ROOT)/ace/Init_ACE.i \ - $(ACE_ROOT)/ace/Sock_Connect.h \ - $(ACE_ROOT)/ace/Sock_Connect.i \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Malloc.h \ - $(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/OS_Log_Msg_Attributes.h \ - $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.inl \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread_Adapter.h \ - $(ACE_ROOT)/ace/Base_Thread_Adapter.h \ - $(ACE_ROOT)/ace/Base_Thread_Adapter.inl \ - $(ACE_ROOT)/ace/Thread_Adapter.inl \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Malloc_Allocator.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc_Allocator.i \ - $(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/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(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/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/Unbounded_Set.h \ - $(ACE_ROOT)/ace/Node.h \ - $(ACE_ROOT)/ace/Node.cpp \ - $(ACE_ROOT)/ace/Unbounded_Set.inl \ - $(ACE_ROOT)/ace/Unbounded_Set.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(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/CDR_Base.inl \ - $(TAO_ROOT)/tao/try_macros.h \ - $(TAO_ROOT)/tao/orbconf.h \ - $(ACE_ROOT)/ace/CORBA_macros.h \ - $(TAO_ROOT)/tao/varbase.h \ - $(TAO_ROOT)/tao/TAO_Export.h \ - $(TAO_ROOT)/tao/corbafwd.i \ - $(TAO_ROOT)/tao/Typecode.h \ - $(TAO_ROOT)/tao/Exception.h \ - $(ACE_ROOT)/ace/SString.h \ - $(ACE_ROOT)/ace/SString.i \ - $(TAO_ROOT)/tao/Exception.i \ - $(TAO_ROOT)/tao/Typecode.i \ - $(TAO_ROOT)/tao/Any.h \ - $(TAO_ROOT)/tao/CDR.h \ - $(ACE_ROOT)/ace/CDR_Stream.h \ - $(ACE_ROOT)/ace/CDR_Stream.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_Proxy_Broker.h \ - $(TAO_ROOT)/tao/Object_Proxy_Impl.h \ - $(TAO_ROOT)/tao/Object.i \ - $(TAO_ROOT)/tao/Any.i \ - $(TAO_ROOT)/tao/NVList.h \ - $(ACE_ROOT)/ace/Unbounded_Queue.h \ - $(ACE_ROOT)/ace/Unbounded_Queue.inl \ - $(ACE_ROOT)/ace/Unbounded_Queue.cpp \ - $(TAO_ROOT)/tao/NVList.i \ - $(TAO_ROOT)/tao/LocalObject.h \ - $(TAO_ROOT)/tao/LocalObject.i \ - $(TAO_ROOT)/tao/Principal.h \ - $(TAO_ROOT)/tao/OctetSeqC.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/OctetSeqC.i \ - $(TAO_ROOT)/tao/Principal.i \ - $(TAO_ROOT)/tao/ORB.h \ - $(TAO_ROOT)/tao/Services.h \ - $(TAO_ROOT)/tao/Services.i \ - $(TAO_ROOT)/tao/CORBA_String.h \ - $(TAO_ROOT)/tao/CORBA_String.inl \ - $(TAO_ROOT)/tao/PolicyC.h \ - $(TAO_ROOT)/tao/Encodable.h \ - $(TAO_ROOT)/tao/Remote_Object_Proxy_Impl.h \ - $(TAO_ROOT)/tao/CurrentC.h \ - $(TAO_ROOT)/tao/CurrentC.i \ - $(TAO_ROOT)/tao/PolicyC.i \ - $(TAO_ROOT)/tao/ORB.i \ - $(TAO_ROOT)/tao/BoundsC.h \ - $(TAO_ROOT)/tao/BoundsC.i \ - $(TAO_ROOT)/tao/ValueBase.h \ - $(TAO_ROOT)/tao/ValueBase.i \ - $(TAO_ROOT)/tao/ValueFactory.h \ - $(TAO_ROOT)/tao/ValueFactory.i \ - $(TAO_ROOT)/tao/DomainC.h \ - $(TAO_ROOT)/tao/DomainC.i \ - $(TAO_ROOT)/tao/WrongTransactionC.h \ - $(TAO_ROOT)/tao/Object_KeyC.h \ - $(TAO_ROOT)/tao/Object_KeyC.i \ - $(TAO_ROOT)/tao/ObjectIDList.h \ - $(TAO_ROOT)/tao/ObjectIDList.i \ - $(TAO_ROOT)/tao/StringSeqC.h \ - $(TAO_ROOT)/tao/StringSeqC.i \ - $(TAO_ROOT)/tao/PortableInterceptorC.h \ - $(TAO_ROOT)/tao/DynamicC.h \ - $(TAO_ROOT)/tao/DynamicC.i \ - $(TAO_ROOT)/tao/MessagingC.h \ - $(TAO_ROOT)/tao/TimeBaseC.h \ - $(TAO_ROOT)/tao/SmartProxies/Smart_Proxies.h \ - $(TAO_ROOT)/tao/SmartProxies/smartproxies_export.h \ - $(TAO_ROOT)/tao/TAO_Singleton.h \ - $(TAO_ROOT)/tao/TAO_Singleton.inl \ - $(TAO_ROOT)/tao/TAO_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 \ - $(TAO_ROOT)/tao/TAO_Singleton_Manager.h \ - $(TAO_ROOT)/tao/TAO_Singleton_Manager.inl \ - $(TAO_ROOT)/tao/SmartProxies/Smart_Proxies.inl \ - $(TAO_ROOT)/tao/TimeBaseC.i \ - $(TAO_ROOT)/tao/IOPC.h \ - $(TAO_ROOT)/tao/IOPC.i \ - $(TAO_ROOT)/tao/PollableC.h \ - $(TAO_ROOT)/tao/PollableC.i \ - $(TAO_ROOT)/tao/MessagingC.i \ - $(TAO_ROOT)/tao/PortableInterceptorC.i \ - ../Common/rtcorba_common_export.h ../Common/testC.i \ - $(TAO_ROOT)/tao/PortableServer/PortableServer.h \ - $(TAO_ROOT)/tao/PortableServer/portableserver_export.h \ - $(TAO_ROOT)/tao/PortableServer/PortableServerC.h \ - $(TAO_ROOT)/tao/PortableServer/PortableServerC.i \ - $(TAO_ROOT)/tao/PortableServer/Servant_Base.h \ - $(TAO_ROOT)/tao/Abstract_Servant_Base.h \ - $(TAO_ROOT)/tao/PortableServer/Servant_Base.i \ - $(TAO_ROOT)/tao/PortableServer/Collocated_Object.h \ - $(TAO_ROOT)/tao/PortableServer/Collocated_Object.i \ - $(TAO_ROOT)/tao/PortableServer/ThruPOA_Object_Proxy_Impl.h \ - $(TAO_ROOT)/tao/PortableServer/Direct_Object_Proxy_Impl.h \ - ../Common/testS_T.h ../Common/testS_T.i ../Common/testS_T.cpp \ - ../Common/testS.i ../Common/test_i.i \ - $(TAO_ROOT)/tao/RTCORBA/Pool_Per_Endpoint.h \ - $(TAO_ROOT)/tao/RTCORBA/rtcorba_export.h \ - $(ACE_ROOT)/ace/Task.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Array_Base.h \ - $(ACE_ROOT)/ace/Array_Base.inl \ - $(ACE_ROOT)/ace/Array_Base.cpp \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Singleton.h \ - $(ACE_ROOT)/ace/Singleton.i \ - $(ACE_ROOT)/ace/Singleton.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/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/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/Test_and_Set.h \ - $(ACE_ROOT)/ace/Test_and_Set.i \ - $(ACE_ROOT)/ace/Test_and_Set.cpp \ - $(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_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/Process_Mutex.h \ - $(ACE_ROOT)/ace/Process_Mutex.inl \ - $(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.cpp \ - $(TAO_ROOT)/tao/RTCORBA/Pool_Per_Endpoint.i \ - $(ACE_ROOT)/ace/Get_Opt.h \ - $(ACE_ROOT)/ace/Get_Opt.i \ - $(ACE_ROOT)/ace/Sched_Params.h \ - $(ACE_ROOT)/ace/Sched_Params.i - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/TAO/performance-tests/Single_Threaded_Latency/Roundtrip.cpp b/TAO/performance-tests/Single_Threaded_Latency/Roundtrip.cpp deleted file mode 100644 index 72f83576b44..00000000000 --- a/TAO/performance-tests/Single_Threaded_Latency/Roundtrip.cpp +++ /dev/null @@ -1,26 +0,0 @@ -// -// $Id$ -// -#include "Roundtrip.h" - -ACE_RCSID(Single_Threaded_Latency, Roundtrip, "$Id$") - -Roundtrip::Roundtrip (CORBA::ORB_ptr orb) - : orb_ (CORBA::ORB::_duplicate (orb)) -{ -} - -Test::Timestamp -Roundtrip::test_method (Test::Timestamp send_time - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - return send_time; -} - -void -Roundtrip::shutdown (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER); -} diff --git a/TAO/performance-tests/Single_Threaded_Latency/Roundtrip.h b/TAO/performance-tests/Single_Threaded_Latency/Roundtrip.h deleted file mode 100644 index efef33dd7e6..00000000000 --- a/TAO/performance-tests/Single_Threaded_Latency/Roundtrip.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// $Id$ -// - -#ifndef ROUNDTRIP_H -#define ROUNDTRIP_H -#include "ace/pre.h" - -#include "TestS.h" - -#if defined (_MSC_VER) -# if (_MSC_VER >= 1200) -# pragma warning(push) -# endif /* _MSC_VER >= 1200 */ -# pragma warning (disable:4250) -#endif /* _MSC_VER */ - -/// Implement the Test::Roundtrip interface -class Roundtrip - : public virtual POA_Test::Roundtrip - , public virtual PortableServer::RefCountServantBase -{ -public: - /// Constructor - Roundtrip (CORBA::ORB_ptr orb); - - // = The skeleton methods - virtual Test::Timestamp test_method (Test::Timestamp send_time - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - -private: - /// Use an ORB reference to conver strings to objects and shutdown - /// the application. - CORBA::ORB_var orb_; -}; - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma warning(pop) -#endif /* _MSC_VER */ - -#include "ace/post.h" -#endif /* ROUNDTRIP_H */ diff --git a/TAO/performance-tests/Single_Threaded_Latency/client.cpp b/TAO/performance-tests/Single_Threaded_Latency/client.cpp deleted file mode 100644 index 2d841b9909d..00000000000 --- a/TAO/performance-tests/Single_Threaded_Latency/client.cpp +++ /dev/null @@ -1,164 +0,0 @@ -// $Id$ - -#include "TestC.h" -#include "ace/Get_Opt.h" -#include "ace/High_Res_Timer.h" -#include "ace/Sched_Params.h" -#include "ace/Stats.h" -#include "ace/Sample_History.h" - -#include "tao/Strategies/advanced_resource.h" - -ACE_RCSID(Single_Threaded_Latency, client, "$Id$") - -const char *ior = "file://test.ior"; -int niterations = 100; -int do_dump_history = 0; -int do_shutdown = 1; - -int -parse_args (int argc, char *argv[]) -{ - ACE_Get_Opt get_opts (argc, argv, "hxk:i:"); - int c; - - while ((c = get_opts ()) != -1) - switch (c) - { - case 'h': - do_dump_history = 1; - break; - - case 'x': - do_shutdown = 0; - break; - - case 'k': - ior = get_opts.opt_arg (); - break; - - case 'i': - niterations = ACE_OS::atoi (get_opts.opt_arg ()); - break; - - case '?': - default: - ACE_ERROR_RETURN ((LM_ERROR, - "usage: %s " - "-k <ior> " - "-i <niterations> " - "-x (disable shutdown) " - "-h (dump history) " - "\n", - argv [0]), - -1); - } - // Indicates sucessful parsing of the command line - return 0; -} - -int -main (int argc, char *argv[]) -{ - int priority = - (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO) - + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2; - // Enable FIFO scheduling, e.g., RT scheduling class on Solaris. - - if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO, - priority, - ACE_SCOPE_PROCESS)) != 0) - { - if (ACE_OS::last_error () == EPERM) - { - ACE_DEBUG ((LM_DEBUG, - "client (%P|%t): user is not superuser, " - "test runs in time-shared class\n")); - } - else - ACE_ERROR ((LM_ERROR, - "client (%P|%t): sched_params failed\n")); - } - - ACE_TRY_NEW_ENV - { - CORBA::ORB_var orb = - CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (parse_args (argc, argv) != 0) - return 1; - - CORBA::Object_var object = - orb->string_to_object (ior ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - Test::Roundtrip_var roundtrip = - Test::Roundtrip::_narrow (object.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil (roundtrip.in ())) - { - ACE_ERROR_RETURN ((LM_ERROR, - "Nil Test::Roundtrip reference <%s>\n", - ior), - 1); - } - - for (int j = 0; j < 100; ++j) - { - ACE_hrtime_t start = 0; - (void) roundtrip->test_method (start ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - - ACE_Sample_History history (niterations); - - ACE_hrtime_t test_start = ACE_OS::gethrtime (); - for (int i = 0; i < niterations; ++i) - { - ACE_hrtime_t start = ACE_OS::gethrtime (); - - (void) roundtrip->test_method (start ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - ACE_hrtime_t now = ACE_OS::gethrtime (); - history.sample (now - start); - } - - ACE_hrtime_t test_end = ACE_OS::gethrtime (); - - ACE_DEBUG ((LM_DEBUG, "test finished\n")); - - ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration....")); - ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor (); - ACE_DEBUG ((LM_DEBUG, "done\n")); - - if (do_dump_history) - { - history.dump_samples ("HISTORY", gsf); - } - - ACE_Basic_Stats stats; - history.collect_basic_stats (stats); - stats.dump_results ("Total", gsf); - - ACE_Throughput_Stats::dump_throughput ("Total", gsf, - test_end - test_start, - stats.samples_count ()); - - if (do_shutdown) - { - roundtrip->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:"); - return 1; - } - ACE_ENDTRY; - - return 0; -} diff --git a/TAO/performance-tests/Single_Threaded_Latency/server.cpp b/TAO/performance-tests/Single_Threaded_Latency/server.cpp deleted file mode 100644 index e96f0ff595a..00000000000 --- a/TAO/performance-tests/Single_Threaded_Latency/server.cpp +++ /dev/null @@ -1,136 +0,0 @@ -// $Id$ - -#include "Roundtrip.h" -#include "ace/Get_Opt.h" -#include "ace/Sched_Params.h" - -#include "tao/Strategies/advanced_resource.h" - -ACE_RCSID(Single_Threaded_Latency, server, "$Id$") - -const char *ior_output_file = "test.ior"; - -int -parse_args (int argc, char *argv[]) -{ - ACE_Get_Opt get_opts (argc, argv, "o:"); - int c; - - while ((c = get_opts ()) != -1) - switch (c) - { - case 'o': - ior_output_file = get_opts.opt_arg (); - break; - - case '?': - default: - ACE_ERROR_RETURN ((LM_ERROR, - "usage: %s " - "-o <iorfile>" - "\n", - argv [0]), - -1); - } - // Indicates sucessful parsing of the command line - return 0; -} - -int -main (int argc, char *argv[]) -{ - int priority = - (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO) - + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2; - priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO, - priority); - // Enable FIFO scheduling, e.g., RT scheduling class on Solaris. - - if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO, - priority, - ACE_SCOPE_PROCESS)) != 0) - { - if (ACE_OS::last_error () == EPERM) - { - ACE_DEBUG ((LM_DEBUG, - "server (%P|%t): user is not superuser, " - "test runs in time-shared class\n")); - } - else - ACE_ERROR ((LM_ERROR, - "server (%P|%t): sched_params failed\n")); - } - - ACE_TRY_NEW_ENV - { - CORBA::ORB_var orb = - CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::Object_var poa_object = - orb->resolve_initial_references("RootPOA" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil (poa_object.in ())) - ACE_ERROR_RETURN ((LM_ERROR, - " (%P|%t) Unable to initialize the POA.\n"), - 1); - - PortableServer::POA_var root_poa = - PortableServer::POA::_narrow (poa_object.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - PortableServer::POAManager_var poa_manager = - root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (parse_args (argc, argv) != 0) - return 1; - - Roundtrip *roundtrip_impl; - ACE_NEW_RETURN (roundtrip_impl, - Roundtrip (orb.in ()), - 1); - PortableServer::ServantBase_var owner_transfer(roundtrip_impl); - - Test::Roundtrip_var roundtrip = - roundtrip_impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::String_var ior = - orb->object_to_string (roundtrip.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - // If the ior_output_file exists, output the ior to it - FILE *output_file= ACE_OS::fopen (ior_output_file, "w"); - if (output_file == 0) - ACE_ERROR_RETURN ((LM_ERROR, - "Cannot open output file for writing IOR: %s", - ior_output_file), - 1); - ACE_OS::fprintf (output_file, "%s", ior.in ()); - ACE_OS::fclose (output_file); - - poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - orb->run (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n")); - - root_poa->destroy (1, 1 ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:"); - return 1; - } - ACE_ENDTRY; - - return 0; -} diff --git a/TAO/performance-tests/Thread_Per_Connection_Latency/Client_Task.cpp b/TAO/performance-tests/Thread_Per_Connection_Latency/Client_Task.cpp deleted file mode 100644 index 09d15331436..00000000000 --- a/TAO/performance-tests/Thread_Per_Connection_Latency/Client_Task.cpp +++ /dev/null @@ -1,65 +0,0 @@ -// -// $Id$ -// -#include "Client_Task.h" - -ACE_RCSID(Thread_Per_Connection_Latency, Client_Task, "$Id$") - -Client_Task::Client_Task (Test::Roundtrip_ptr roundtrip, - int niterations) - : roundtrip_ (Test::Roundtrip::_duplicate (roundtrip)) - , niterations_ (niterations) -{ -} - -int -Client_Task::svc (void) -{ - ACE_DECLARE_NEW_CORBA_ENV; - ACE_TRY - { - this->validate_connection (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - for (int i = 0; i != this->niterations_; ++i) - { - CORBA::ULongLong start = ACE_OS::gethrtime (); - - (void) this->roundtrip_->test_method (start ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - ACE_hrtime_t now = ACE_OS::gethrtime (); - this->latency_.sample (now - start); - } - } - ACE_CATCHANY - { - return 0; - } - ACE_ENDTRY; - return 0; -} - -void -Client_Task::accumulate_and_dump (ACE_Basic_Stats &totals, - const char *msg, - ACE_UINT32 gsf) -{ - totals.accumulate (this->latency_); - this->latency_.dump_results (msg, gsf); -} - -void -Client_Task::validate_connection (ACE_ENV_SINGLE_ARG_DECL) -{ - CORBA::ULongLong dummy = 0; - for (int i = 0; i != 100; ++i) - { - ACE_TRY - { - (void) this->roundtrip_->test_method (dummy ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY {} ACE_ENDTRY; - } -} diff --git a/TAO/performance-tests/Thread_Per_Connection_Latency/Client_Task.h b/TAO/performance-tests/Thread_Per_Connection_Latency/Client_Task.h deleted file mode 100644 index ffc4e9d6b6a..00000000000 --- a/TAO/performance-tests/Thread_Per_Connection_Latency/Client_Task.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// $Id$ -// - -#ifndef CLIENT_TASK_H -#define CLIENT_TASK_H -#include "ace/pre.h" - -#include "TestC.h" -#include "ace/Task.h" -#include "ace/Basic_Stats.h" - -/// Implement the Test::Client_Task interface -class Client_Task : public ACE_Task_Base -{ -public: - /// Constructor - Client_Task (Test::Roundtrip_ptr roundtrip, - int niterations); - - /// Add this thread results to the global numbers and print the - /// per-thread results. - void accumulate_and_dump (ACE_Basic_Stats &totals, - const char *msg, - ACE_UINT32 gsf); - - /// The service method - virtual int svc (void); - -private: - /// Make sure that the current thread has a connection available. - void validate_connection (ACE_ENV_SINGLE_ARG_DECL); - -private: - /// The object reference used for this test - Test::Roundtrip_var roundtrip_; - - /// The number of iterations - int niterations_; - - /// Keep track of the latency (minimum, average, maximum and jitter) - ACE_Basic_Stats latency_; -}; - -#include "ace/post.h" -#endif /* CLIENT_TASK_H */ diff --git a/TAO/performance-tests/Thread_Per_Connection_Latency/Roundtrip.cpp b/TAO/performance-tests/Thread_Per_Connection_Latency/Roundtrip.cpp deleted file mode 100644 index 2bc67948fd0..00000000000 --- a/TAO/performance-tests/Thread_Per_Connection_Latency/Roundtrip.cpp +++ /dev/null @@ -1,26 +0,0 @@ -// -// $Id$ -// -#include "Roundtrip.h" - -ACE_RCSID(Single_Per_Connection_Latency, Roundtrip, "$Id$") - -Roundtrip::Roundtrip (CORBA::ORB_ptr orb) - : orb_ (CORBA::ORB::_duplicate (orb)) -{ -} - -Test::Timestamp -Roundtrip::test_method (Test::Timestamp send_time - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - return send_time; -} - -void -Roundtrip::shutdown (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER); -} diff --git a/TAO/performance-tests/Thread_Per_Connection_Latency/Roundtrip.h b/TAO/performance-tests/Thread_Per_Connection_Latency/Roundtrip.h deleted file mode 100644 index efef33dd7e6..00000000000 --- a/TAO/performance-tests/Thread_Per_Connection_Latency/Roundtrip.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// $Id$ -// - -#ifndef ROUNDTRIP_H -#define ROUNDTRIP_H -#include "ace/pre.h" - -#include "TestS.h" - -#if defined (_MSC_VER) -# if (_MSC_VER >= 1200) -# pragma warning(push) -# endif /* _MSC_VER >= 1200 */ -# pragma warning (disable:4250) -#endif /* _MSC_VER */ - -/// Implement the Test::Roundtrip interface -class Roundtrip - : public virtual POA_Test::Roundtrip - , public virtual PortableServer::RefCountServantBase -{ -public: - /// Constructor - Roundtrip (CORBA::ORB_ptr orb); - - // = The skeleton methods - virtual Test::Timestamp test_method (Test::Timestamp send_time - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - -private: - /// Use an ORB reference to conver strings to objects and shutdown - /// the application. - CORBA::ORB_var orb_; -}; - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma warning(pop) -#endif /* _MSC_VER */ - -#include "ace/post.h" -#endif /* ROUNDTRIP_H */ diff --git a/TAO/performance-tests/Thread_Per_Connection_Latency/client.cpp b/TAO/performance-tests/Thread_Per_Connection_Latency/client.cpp deleted file mode 100644 index 69aac2b4ca5..00000000000 --- a/TAO/performance-tests/Thread_Per_Connection_Latency/client.cpp +++ /dev/null @@ -1,149 +0,0 @@ -// $Id$ - -#include "Client_Task.h" -#include "ace/Get_Opt.h" -#include "ace/High_Res_Timer.h" -#include "ace/Sched_Params.h" -#include "ace/Stats.h" - -#include "tao/Strategies/advanced_resource.h" - -ACE_RCSID(Thread_Per_Connection_Latency, client, "$Id$") - -const char *ior = "file://test.ior"; -int niterations = 1000; -int do_shutdown = 1; - -int -parse_args (int argc, char *argv[]) -{ - ACE_Get_Opt get_opts (argc, argv, "xk:i:"); - int c; - - while ((c = get_opts ()) != -1) - switch (c) - { - case 'x': - do_shutdown = 0; - break; - - case 'k': - ior = get_opts.opt_arg (); - break; - - case 'i': - niterations = ACE_OS::atoi (get_opts.opt_arg ()); - break; - - case '?': - default: - ACE_ERROR_RETURN ((LM_ERROR, - "usage: %s " - "-k <ior> " - "-i <niterations> " - "-x (disable shutdown) " - "\n", - argv [0]), - -1); - } - // Indicates sucessful parsing of the command line - return 0; -} - -int -main (int argc, char *argv[]) -{ - int priority = - (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO) - + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2; - // Enable FIFO scheduling, e.g., RT scheduling class on Solaris. - - if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO, - priority, - ACE_SCOPE_PROCESS)) != 0) - { - if (ACE_OS::last_error () == EPERM) - { - ACE_DEBUG ((LM_DEBUG, - "client (%P|%t): user is not superuser, " - "test runs in time-shared class\n")); - } - else - ACE_ERROR ((LM_ERROR, - "client (%P|%t): sched_params failed\n")); - } - - ACE_TRY_NEW_ENV - { - CORBA::ORB_var orb = - CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (parse_args (argc, argv) != 0) - return 1; - - CORBA::Object_var object = - orb->string_to_object (ior ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - Test::Roundtrip_var roundtrip = - Test::Roundtrip::_narrow (object.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil (roundtrip.in ())) - { - ACE_ERROR_RETURN ((LM_ERROR, - "Nil Test::Roundtrip reference <%s>\n", - ior), - 1); - } - - ACE_DEBUG ((LM_DEBUG, "Starting threads\n")); - - Client_Task task0(roundtrip.in (), niterations); - Client_Task task1(roundtrip.in (), niterations); - Client_Task task2(roundtrip.in (), niterations); - Client_Task task3(roundtrip.in (), niterations); - - ACE_hrtime_t test_start = ACE_OS::gethrtime (); - task0.activate(THR_NEW_LWP | THR_JOINABLE); - task1.activate(THR_NEW_LWP | THR_JOINABLE); - task2.activate(THR_NEW_LWP | THR_JOINABLE); - task3.activate(THR_NEW_LWP | THR_JOINABLE); - - task0.thr_mgr()->wait (); - ACE_hrtime_t test_end = ACE_OS::gethrtime (); - - ACE_DEBUG ((LM_DEBUG, "Threads finished\n")); - - ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration....")); - ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor (); - ACE_DEBUG ((LM_DEBUG, "done\n")); - - ACE_Basic_Stats totals; - task0.accumulate_and_dump (totals, "Task[0]", gsf); - task1.accumulate_and_dump (totals, "Task[1]", gsf); - task2.accumulate_and_dump (totals, "Task[2]", gsf); - task3.accumulate_and_dump (totals, "Task[3]", gsf); - - totals.dump_results ("Total", gsf); - - ACE_Throughput_Stats::dump_throughput ("Total", gsf, - test_end - test_start, - totals.samples_count ()); - - if (do_shutdown) - { - roundtrip->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:"); - return 1; - } - ACE_ENDTRY; - - return 0; -} diff --git a/TAO/performance-tests/Thread_Per_Connection_Latency/server.cpp b/TAO/performance-tests/Thread_Per_Connection_Latency/server.cpp deleted file mode 100644 index 004ce70cebf..00000000000 --- a/TAO/performance-tests/Thread_Per_Connection_Latency/server.cpp +++ /dev/null @@ -1,136 +0,0 @@ -// $Id$ - -#include "Roundtrip.h" -#include "ace/Get_Opt.h" -#include "ace/Sched_Params.h" - -#include "tao/Strategies/advanced_resource.h" - -ACE_RCSID(Thread_Per_Connection_Latency, server, "$Id$") - -const char *ior_output_file = "test.ior"; - -int -parse_args (int argc, char *argv[]) -{ - ACE_Get_Opt get_opts (argc, argv, "o:"); - int c; - - while ((c = get_opts ()) != -1) - switch (c) - { - case 'o': - ior_output_file = get_opts.opt_arg (); - break; - - case '?': - default: - ACE_ERROR_RETURN ((LM_ERROR, - "usage: %s " - "-o <iorfile>" - "\n", - argv [0]), - -1); - } - // Indicates sucessful parsing of the command line - return 0; -} - -int -main (int argc, char *argv[]) -{ - int priority = - (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO) - + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2; - priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO, - priority); - // Enable FIFO scheduling, e.g., RT scheduling class on Solaris. - - if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO, - priority, - ACE_SCOPE_PROCESS)) != 0) - { - if (ACE_OS::last_error () == EPERM) - { - ACE_DEBUG ((LM_DEBUG, - "server (%P|%t): user is not superuser, " - "test runs in time-shared class\n")); - } - else - ACE_ERROR ((LM_ERROR, - "server (%P|%t): sched_params failed\n")); - } - - ACE_TRY_NEW_ENV - { - CORBA::ORB_var orb = - CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::Object_var poa_object = - orb->resolve_initial_references("RootPOA" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil (poa_object.in ())) - ACE_ERROR_RETURN ((LM_ERROR, - " (%P|%t) Unable to initialize the POA.\n"), - 1); - - PortableServer::POA_var root_poa = - PortableServer::POA::_narrow (poa_object.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - PortableServer::POAManager_var poa_manager = - root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (parse_args (argc, argv) != 0) - return 1; - - Roundtrip *roundtrip_impl; - ACE_NEW_RETURN (roundtrip_impl, - Roundtrip (orb.in ()), - 1); - PortableServer::ServantBase_var owner_transfer(roundtrip_impl); - - Test::Roundtrip_var roundtrip = - roundtrip_impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::String_var ior = - orb->object_to_string (roundtrip.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - // If the ior_output_file exists, output the ior to it - FILE *output_file= ACE_OS::fopen (ior_output_file, "w"); - if (output_file == 0) - ACE_ERROR_RETURN ((LM_ERROR, - "Cannot open output file for writing IOR: %s", - ior_output_file), - 1); - ACE_OS::fprintf (output_file, "%s", ior.in ()); - ACE_OS::fclose (output_file); - - poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - orb->run (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n")); - - root_poa->destroy (1, 1 ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:"); - return 1; - } - ACE_ENDTRY; - - return 0; -} diff --git a/TAO/performance-tests/Thread_Pool_Latency/Client_Task.cpp b/TAO/performance-tests/Thread_Pool_Latency/Client_Task.cpp deleted file mode 100644 index efb544633b2..00000000000 --- a/TAO/performance-tests/Thread_Pool_Latency/Client_Task.cpp +++ /dev/null @@ -1,65 +0,0 @@ -// -// $Id$ -// -#include "Client_Task.h" - -ACE_RCSID(Thread_Pool_Latency, Client_Task, "$Id$") - -Client_Task::Client_Task (Test::Roundtrip_ptr roundtrip, - int niterations) - : roundtrip_ (Test::Roundtrip::_duplicate (roundtrip)) - , niterations_ (niterations) -{ -} - -int -Client_Task::svc (void) -{ - ACE_DECLARE_NEW_CORBA_ENV; - ACE_TRY - { - this->validate_connection (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - for (int i = 0; i != this->niterations_; ++i) - { - CORBA::ULongLong start = ACE_OS::gethrtime (); - - (void) this->roundtrip_->test_method (start ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - ACE_hrtime_t now = ACE_OS::gethrtime (); - this->latency_.sample (now - start); - } - } - ACE_CATCHANY - { - return 0; - } - ACE_ENDTRY; - return 0; -} - -void -Client_Task::accumulate_and_dump (ACE_Basic_Stats &totals, - const char *msg, - ACE_UINT32 gsf) -{ - totals.accumulate (this->latency_); - this->latency_.dump_results (msg, gsf); -} - -void -Client_Task::validate_connection (ACE_ENV_SINGLE_ARG_DECL) -{ - CORBA::ULongLong dummy = 0; - for (int i = 0; i != 100; ++i) - { - ACE_TRY - { - (void) this->roundtrip_->test_method (dummy ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY {} ACE_ENDTRY; - } -} diff --git a/TAO/performance-tests/Thread_Pool_Latency/Client_Task.h b/TAO/performance-tests/Thread_Pool_Latency/Client_Task.h deleted file mode 100644 index ffc4e9d6b6a..00000000000 --- a/TAO/performance-tests/Thread_Pool_Latency/Client_Task.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// $Id$ -// - -#ifndef CLIENT_TASK_H -#define CLIENT_TASK_H -#include "ace/pre.h" - -#include "TestC.h" -#include "ace/Task.h" -#include "ace/Basic_Stats.h" - -/// Implement the Test::Client_Task interface -class Client_Task : public ACE_Task_Base -{ -public: - /// Constructor - Client_Task (Test::Roundtrip_ptr roundtrip, - int niterations); - - /// Add this thread results to the global numbers and print the - /// per-thread results. - void accumulate_and_dump (ACE_Basic_Stats &totals, - const char *msg, - ACE_UINT32 gsf); - - /// The service method - virtual int svc (void); - -private: - /// Make sure that the current thread has a connection available. - void validate_connection (ACE_ENV_SINGLE_ARG_DECL); - -private: - /// The object reference used for this test - Test::Roundtrip_var roundtrip_; - - /// The number of iterations - int niterations_; - - /// Keep track of the latency (minimum, average, maximum and jitter) - ACE_Basic_Stats latency_; -}; - -#include "ace/post.h" -#endif /* CLIENT_TASK_H */ diff --git a/TAO/performance-tests/Thread_Pool_Latency/Roundtrip.cpp b/TAO/performance-tests/Thread_Pool_Latency/Roundtrip.cpp deleted file mode 100644 index 6028512202c..00000000000 --- a/TAO/performance-tests/Thread_Pool_Latency/Roundtrip.cpp +++ /dev/null @@ -1,26 +0,0 @@ -// -// $Id$ -// -#include "Roundtrip.h" - -ACE_RCSID(Thread_Pool_Latency, Roundtrip, "$Id$") - -Roundtrip::Roundtrip (CORBA::ORB_ptr orb) - : orb_ (CORBA::ORB::_duplicate (orb)) -{ -} - -Test::Timestamp -Roundtrip::test_method (Test::Timestamp send_time - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - return send_time; -} - -void -Roundtrip::shutdown (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER); -} diff --git a/TAO/performance-tests/Thread_Pool_Latency/Roundtrip.h b/TAO/performance-tests/Thread_Pool_Latency/Roundtrip.h deleted file mode 100644 index efef33dd7e6..00000000000 --- a/TAO/performance-tests/Thread_Pool_Latency/Roundtrip.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// $Id$ -// - -#ifndef ROUNDTRIP_H -#define ROUNDTRIP_H -#include "ace/pre.h" - -#include "TestS.h" - -#if defined (_MSC_VER) -# if (_MSC_VER >= 1200) -# pragma warning(push) -# endif /* _MSC_VER >= 1200 */ -# pragma warning (disable:4250) -#endif /* _MSC_VER */ - -/// Implement the Test::Roundtrip interface -class Roundtrip - : public virtual POA_Test::Roundtrip - , public virtual PortableServer::RefCountServantBase -{ -public: - /// Constructor - Roundtrip (CORBA::ORB_ptr orb); - - // = The skeleton methods - virtual Test::Timestamp test_method (Test::Timestamp send_time - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - -private: - /// Use an ORB reference to conver strings to objects and shutdown - /// the application. - CORBA::ORB_var orb_; -}; - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma warning(pop) -#endif /* _MSC_VER */ - -#include "ace/post.h" -#endif /* ROUNDTRIP_H */ diff --git a/TAO/performance-tests/Thread_Pool_Latency/Worker_Thread.cpp b/TAO/performance-tests/Thread_Pool_Latency/Worker_Thread.cpp deleted file mode 100644 index e485bb2b843..00000000000 --- a/TAO/performance-tests/Thread_Pool_Latency/Worker_Thread.cpp +++ /dev/null @@ -1,24 +0,0 @@ -// -// $Id$ -// -#include "Worker_Thread.h" - -ACE_RCSID(Thread_Pool_Latency, Worker_Thread, "$Id$") - -Worker_Thread::Worker_Thread (CORBA::ORB_ptr orb) - : orb_ (CORBA::ORB::_duplicate (orb)) -{ -} - -int -Worker_Thread::svc (void) -{ - ACE_DECLARE_NEW_CORBA_ENV; - ACE_TRY - { - this->orb_->run (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY {} ACE_ENDTRY; - return 0; -} diff --git a/TAO/performance-tests/Thread_Pool_Latency/client.cpp b/TAO/performance-tests/Thread_Pool_Latency/client.cpp deleted file mode 100644 index 643f541a53f..00000000000 --- a/TAO/performance-tests/Thread_Pool_Latency/client.cpp +++ /dev/null @@ -1,149 +0,0 @@ -// $Id$ - -#include "Client_Task.h" -#include "ace/Get_Opt.h" -#include "ace/High_Res_Timer.h" -#include "ace/Sched_Params.h" -#include "ace/Stats.h" - -#include "tao/Strategies/advanced_resource.h" - -ACE_RCSID(Thread_Pool_Latency, client, "$Id$") - -const char *ior = "file://test.ior"; -int niterations = 1000; -int do_shutdown = 1; - -int -parse_args (int argc, char *argv[]) -{ - ACE_Get_Opt get_opts (argc, argv, "xk:i:"); - int c; - - while ((c = get_opts ()) != -1) - switch (c) - { - case 'x': - do_shutdown = 0; - break; - - case 'k': - ior = get_opts.opt_arg (); - break; - - case 'i': - niterations = ACE_OS::atoi (get_opts.opt_arg ()); - break; - - case '?': - default: - ACE_ERROR_RETURN ((LM_ERROR, - "usage: %s " - "-k <ior> " - "-i <niterations> " - "-x (disable shutdown) " - "\n", - argv [0]), - -1); - } - // Indicates sucessful parsing of the command line - return 0; -} - -int -main (int argc, char *argv[]) -{ - int priority = - (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO) - + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2; - // Enable FIFO scheduling, e.g., RT scheduling class on Solaris. - - if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO, - priority, - ACE_SCOPE_PROCESS)) != 0) - { - if (ACE_OS::last_error () == EPERM) - { - ACE_DEBUG ((LM_DEBUG, - "client (%P|%t): user is not superuser, " - "test runs in time-shared class\n")); - } - else - ACE_ERROR ((LM_ERROR, - "client (%P|%t): sched_params failed\n")); - } - - ACE_TRY_NEW_ENV - { - CORBA::ORB_var orb = - CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (parse_args (argc, argv) != 0) - return 1; - - CORBA::Object_var object = - orb->string_to_object (ior ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - Test::Roundtrip_var roundtrip = - Test::Roundtrip::_narrow (object.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil (roundtrip.in ())) - { - ACE_ERROR_RETURN ((LM_ERROR, - "Nil Test::Roundtrip reference <%s>\n", - ior), - 1); - } - - ACE_DEBUG ((LM_DEBUG, "Starting threads\n")); - - Client_Task task0(roundtrip.in (), niterations); - Client_Task task1(roundtrip.in (), niterations); - Client_Task task2(roundtrip.in (), niterations); - Client_Task task3(roundtrip.in (), niterations); - - ACE_hrtime_t test_start = ACE_OS::gethrtime (); - task0.activate(THR_NEW_LWP | THR_JOINABLE); - task1.activate(THR_NEW_LWP | THR_JOINABLE); - task2.activate(THR_NEW_LWP | THR_JOINABLE); - task3.activate(THR_NEW_LWP | THR_JOINABLE); - - task0.thr_mgr()->wait (); - ACE_hrtime_t test_end = ACE_OS::gethrtime (); - - ACE_DEBUG ((LM_DEBUG, "Threads finished\n")); - - ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration....")); - ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor (); - ACE_DEBUG ((LM_DEBUG, "done\n")); - - ACE_Basic_Stats totals; - task0.accumulate_and_dump (totals, "Task[0]", gsf); - task1.accumulate_and_dump (totals, "Task[1]", gsf); - task2.accumulate_and_dump (totals, "Task[2]", gsf); - task3.accumulate_and_dump (totals, "Task[3]", gsf); - - totals.dump_results ("Total", gsf); - - ACE_Throughput_Stats::dump_throughput ("Total", gsf, - test_end - test_start, - totals.samples_count ()); - - if (do_shutdown) - { - roundtrip->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:"); - return 1; - } - ACE_ENDTRY; - - return 0; -} diff --git a/TAO/performance-tests/Thread_Pool_Latency/server.cpp b/TAO/performance-tests/Thread_Pool_Latency/server.cpp deleted file mode 100644 index bcacaf713c2..00000000000 --- a/TAO/performance-tests/Thread_Pool_Latency/server.cpp +++ /dev/null @@ -1,139 +0,0 @@ -// $Id$ - -#include "Roundtrip.h" -#include "Worker_Thread.h" -#include "ace/Get_Opt.h" -#include "ace/Sched_Params.h" - -#include "tao/Strategies/advanced_resource.h" - -ACE_RCSID(Thread_Pool_Latency, server, "$Id$") - -const char *ior_output_file = "test.ior"; - -int -parse_args (int argc, char *argv[]) -{ - ACE_Get_Opt get_opts (argc, argv, "o:"); - int c; - - while ((c = get_opts ()) != -1) - switch (c) - { - case 'o': - ior_output_file = get_opts.opt_arg (); - break; - - case '?': - default: - ACE_ERROR_RETURN ((LM_ERROR, - "usage: %s " - "-o <iorfile>" - "\n", - argv [0]), - -1); - } - // Indicates sucessful parsing of the command line - return 0; -} - -int -main (int argc, char *argv[]) -{ - int priority = - (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO) - + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2; - priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO, - priority); - // Enable FIFO scheduling, e.g., RT scheduling class on Solaris. - - if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO, - priority, - ACE_SCOPE_PROCESS)) != 0) - { - if (ACE_OS::last_error () == EPERM) - { - ACE_DEBUG ((LM_DEBUG, - "server (%P|%t): user is not superuser, " - "test runs in time-shared class\n")); - } - else - ACE_ERROR ((LM_ERROR, - "server (%P|%t): sched_params failed\n")); - } - - ACE_TRY_NEW_ENV - { - CORBA::ORB_var orb = - CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::Object_var poa_object = - orb->resolve_initial_references("RootPOA" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil (poa_object.in ())) - ACE_ERROR_RETURN ((LM_ERROR, - " (%P|%t) Unable to initialize the POA.\n"), - 1); - - PortableServer::POA_var root_poa = - PortableServer::POA::_narrow (poa_object.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - PortableServer::POAManager_var poa_manager = - root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (parse_args (argc, argv) != 0) - return 1; - - Roundtrip *roundtrip_impl; - ACE_NEW_RETURN (roundtrip_impl, - Roundtrip (orb.in ()), - 1); - PortableServer::ServantBase_var owner_transfer(roundtrip_impl); - - Test::Roundtrip_var roundtrip = - roundtrip_impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::String_var ior = - orb->object_to_string (roundtrip.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - // If the ior_output_file exists, output the ior to it - FILE *output_file= ACE_OS::fopen (ior_output_file, "w"); - if (output_file == 0) - ACE_ERROR_RETURN ((LM_ERROR, - "Cannot open output file for writing IOR: %s", - ior_output_file), - 1); - ACE_OS::fprintf (output_file, "%s", ior.in ()); - ACE_OS::fclose (output_file); - - poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - Worker_Thread worker (orb.in ()); - - worker.activate (THR_NEW_LWP | THR_JOINABLE, 4, 1); - worker.thr_mgr ()->wait (); - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n")); - - root_poa->destroy (1, 1 ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:"); - return 1; - } - ACE_ENDTRY; - - return 0; -} diff --git a/TAO/tao/Exception.cpp b/TAO/tao/Exception.cpp index 0997581225f..04c01b1a84b 100644 --- a/TAO/tao/Exception.cpp +++ b/TAO/tao/Exception.cpp @@ -1035,17 +1035,6 @@ TAO_Exceptions::make_standard_typecode (CORBA::TypeCode_ptr &tcp, return; } -#if defined (__Lynx__) - -// LynxOS uses macro THREAD_CANCELLED internally, so it must -// be undefined to avoid compilation errors -#if defined (THREAD_CANCELLED) -#undef THREAD_CANCELLED -#endif /* THREAD_CANCELLED */ - -#endif /*__Lynx__ */ - - // List of standard/system exceptions ... used to create static // storage for their typecodes, then later to initialize that storage // using the routine above. (It's just too painful to init these diff --git a/TAO/tao/Exception.h b/TAO/tao/Exception.h index 74c22e30fa0..6f4b07606fc 100644 --- a/TAO/tao/Exception.h +++ b/TAO/tao/Exception.h @@ -43,16 +43,6 @@ class ACE_Allocator; class TAO_OutputCDR; class TAO_InputCDR; -#if defined (__Lynx__) - -// LynxOS uses macro THREAD_CANCELLED internally, so it must -// be undefined to avoid compilation errors -#if defined (THREAD_CANCELLED) -#undef THREAD_CANCELLED -#endif /* THREAD_CANCELLED */ - -#endif /*__Lynx__ */ - namespace CORBA { /** diff --git a/TAO/tao/PortableServer/PortableServerS.h b/TAO/tao/PortableServer/PortableServerS.h deleted file mode 100644 index c52e7d0ecc5..00000000000 --- a/TAO/tao/PortableServer/PortableServerS.h +++ /dev/null @@ -1,11 +0,0 @@ -/* @file PortableServerS.h - * - * $Id$ - * - * @author Matt Murphy <murphym@cs.uri.edu> - * - * This file is here and is empty because code generated from pidl files with - * local interfaces incorrectly includes this file. It is not needed but - * will caouse compile errors with local interface generated code. - * - */ diff --git a/TAO/tao/Transport.cpp b/TAO/tao/Transport.cpp index b9a9f1d9243..55ebbc5377d 100644 --- a/TAO/tao/Transport.cpp +++ b/TAO/tao/Transport.cpp @@ -906,7 +906,7 @@ TAO_Transport::send_connection_closed_notifications_i (void) // CloseConnection message was successfully received. i->state_changed (TAO_LF_Event::LFS_CONNECTION_CLOSED); - i->remove_from_list (this->head_, this->tail_); + this->head_ = i->next (); i->destroy (); } diff --git a/TAO/tao/corbafwd.h b/TAO/tao/corbafwd.h index aa20022d763..07e013fb4ac 100644 --- a/TAO/tao/corbafwd.h +++ b/TAO/tao/corbafwd.h @@ -84,16 +84,6 @@ template <class T> class TAO_Unbounded_Sequence; template <typename T> class TAO_Pseudo_Var_T; template <typename T, typename T_var> class TAO_Pseudo_Out_T; -#if defined (__Lynx__) - -// LynxOS uses macro THREAD_CANCELLED internally, so it must -// be undefined to avoid compilation errors -#if defined (THREAD_CANCELLED) -#undef THREAD_CANCELLED -#endif /* THREAD_CANCELLED */ - -#endif /*__Lynx__ */ - /** * @class CORBA * diff --git a/TAO/tests/Objref_Sequence_Test/client.cpp b/TAO/tests/Objref_Sequence_Test/client.cpp index 3fb96a60ce4..28ad3472bef 100644 --- a/TAO/tests/Objref_Sequence_Test/client.cpp +++ b/TAO/tests/Objref_Sequence_Test/client.cpp @@ -94,7 +94,7 @@ main (int argc, char *argv []) Server::_duplicate (vAddition [iCount]); }; - vAddition = 0; + vAddition = NULL; if (iStep * 5 > iSize) { diff --git a/TAO/tests/RTScheduling/Current/Thread_Task.cpp b/TAO/tests/RTScheduling/Current/Thread_Task.cpp index 66c60ec0d6f..3dff7e0de7d 100644 --- a/TAO/tests/RTScheduling/Current/Thread_Task.cpp +++ b/TAO/tests/RTScheduling/Current/Thread_Task.cpp @@ -148,7 +148,7 @@ Thread_Task::svc (void) { ACE_DEBUG ((LM_DEBUG, "%s\n", - (*segment_name_list)[i].in ())); + CORBA::string_dup ((*segment_name_list) [i]))); } } @@ -1762,7 +1762,6 @@ Jeff Dugan <jdugan@orincon.com> Jeff Mirwaisi <jeff_mirwaisi@yahoo.com> Alain Dupont <adupont@positron.qc.ca> Stephan Bettermann <sbetterm@erggroup.com> -Adam Fanello <yahoo@fanello.net> I would particularly like to thank Paul Stephenson, who worked with me at Ericsson in the early 1990's. Paul devised the recursive Makefile diff --git a/ace/OS.cpp b/ace/OS.cpp index d2c1ec2af99..d18a5bce379 100644 --- a/ace/OS.cpp +++ b/ace/OS.cpp @@ -7680,9 +7680,8 @@ long ACE_OS::num_processors (void) { ACE_OS_TRACE ("ACE_OS::num_processors"); -#if defined (ACE_HAS_PHARLAP) - return 1; -#elif defined (ACE_WIN32) || defined (ACE_WIN64) + +#if defined (ACE_WIN32) || defined (ACE_WIN64) SYSTEM_INFO sys_info; ::GetSystemInfo (&sys_info); return sys_info.dwNumberOfProcessors; @@ -7697,9 +7696,8 @@ long ACE_OS::num_processors_online (void) { ACE_OS_TRACE ("ACE_OS::num_processors_online"); -#if defined (ACE_HAS_PHARLAP) - return 1; -#elif defined (ACE_WIN32) || defined (ACE_WIN64) + +#if defined (ACE_WIN32) || defined (ACE_WIN64) SYSTEM_INFO sys_info; ::GetSystemInfo (&sys_info); return sys_info.dwNumberOfProcessors; @@ -3698,6 +3698,60 @@ private: # endif /* ACE_WIN32 */ +#if defined (ACE_HAS_VIRTUAL_TIME) + static clock_t times (struct tms *buf); +#endif /* ACE_HAS_VIRTUAL_TIME */ + + //changed for ACE_HAS_VIRTUAL_TIME changes. + + static int cond_timedwait_i (ACE_cond_t *cv, + ACE_mutex_t *m, + ACE_Time_Value *); + + static u_int alarm_i (u_int secs); + + static u_int ualarm_i (u_int usecs, u_int interval = 0); + + static u_int ualarm_i (const ACE_Time_Value &tv, + const ACE_Time_Value &tv_interval = ACE_Time_Value::zero); + + static int sleep_i (u_int seconds); + + static int sleep_i (const ACE_Time_Value &tv); + + static int nanosleep_i (const struct timespec *requested, + struct timespec *remaining = 0); + + static int select_i (int width, + fd_set *rfds, + fd_set *wfds, + fd_set *efds, + const ACE_Time_Value *tv = 0); + + static int select_i (int width, + fd_set *rfds, + fd_set *wfds, + fd_set *efds, + const ACE_Time_Value &tv); + + static int poll_i (struct pollfd *pollfds, + u_long len, + const ACE_Time_Value *tv = 0); + + static int poll_i (struct pollfd *pollfds, + u_long len, + const ACE_Time_Value &tv); + + static int sema_wait_i (ACE_sema_t *s); + + static int sema_wait_i (ACE_sema_t *s, + ACE_Time_Value &tv); + + static int sigtimedwait_i (const sigset_t *set, + siginfo_t *info, + const ACE_Time_Value *timeout); + + static ACE_Time_Value gettimeofday_i (void); }; /** diff --git a/ace/Process.h b/ace/Process.h index fbcacb23763..7fa4f2c9e56 100644 --- a/ace/Process.h +++ b/ace/Process.h @@ -22,7 +22,6 @@ #include "ace/Handle_Set.h" #include "ace/os_include/sys/os_types.h" -#include "ace/Global_Macros.h" // Forward declaration class ACE_Time_Value; @@ -561,10 +560,6 @@ protected: ACE_Handle_Set handles_passed_; /// Handle duplicates made for the child process. ACE_Handle_Set dup_handles_; - - // = Disallow copying and assignment since we don't support this (yet). - ACE_UNIMPLEMENTED_FUNC (ACE_Process (const ACE_Process &)) - ACE_UNIMPLEMENTED_FUNC (void operator= (const ACE_Process &)) }; diff --git a/ace/Select_Reactor_Base.cpp b/ace/Select_Reactor_Base.cpp index bb74ee1934a..329882049a9 100644 --- a/ace/Select_Reactor_Base.cpp +++ b/ace/Select_Reactor_Base.cpp @@ -801,13 +801,15 @@ ACE_Select_Reactor_Notify::notify (ACE_Event_Handler *event_handler, #if defined (ACE_HAS_REACTOR_NOTIFICATION_QUEUE) // Artificial scope to limit the duration of the mutex. { - bool notification_required = false; + // int notification_required = 0; ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, mon, this->notify_queue_lock_, -1); // No pending notifications. - if (this->notify_queue_.is_empty ()) - notification_required = true; + + // We will send notify for every message.. + // if (this->notify_queue_.is_empty ()) + // notification_required = 1; ACE_Notification_Buffer *temp = 0; @@ -842,11 +844,6 @@ ACE_Select_Reactor_Notify::notify (ACE_Event_Handler *event_handler, if (notify_queue_.enqueue_tail (temp) == -1) return -1; - - if(!notification_required) - { - return 0; - } } #endif /* ACE_HAS_REACTOR_NOTIFICATION_QUEUE */ @@ -896,12 +893,52 @@ ACE_Select_Reactor_Notify::notify_handle (void) } +// Special trick to unblock <select> when updates occur in somewhere +// other than the main <ACE_Select_Reactor> thread. All we do is +// write data to a pipe that the <ACE_Select_Reactor> is listening on. +// Thanks to Paul Stephenson for suggesting this approach. int ACE_Select_Reactor_Notify::is_dispatchable (ACE_Notification_Buffer &buffer) { + // There is tonnes of code that can be abstracted... #if defined (ACE_HAS_REACTOR_NOTIFICATION_QUEUE) - ACE_UNUSED_ARG(buffer); - return 1; + { + ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, mon, this->notify_queue_lock_, -1); + + ACE_Notification_Buffer *temp; + + ACE_UNUSED_ARG (buffer); + + // If the queue is empty just return 0 + if (notify_queue_.is_empty ()) + return 0; + + if (this->notify_queue_.dequeue_head (temp) == -1) + ACE_ERROR_RETURN ((LM_ERROR, + ACE_LIB_TEXT ("%p\n"), + ACE_LIB_TEXT ("dequeue_head")), + -1); + if (temp->eh_ != 0) + { + // If the queue had a buffer that has an event handler, put + // the element back in the queue and return a 1 + if (this->notify_queue_.enqueue_head (temp) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ACE_LIB_TEXT ("%p\n"), + ACE_LIB_TEXT ("enque_head")), + -1); + } + + return 1; + } + // Else put the element in the free queue + if (free_queue_.enqueue_head (temp) == -1) + ACE_ERROR_RETURN ((LM_ERROR, + ACE_LIB_TEXT ("%p\n"), + ACE_LIB_TEXT ("enqueue_head")), + -1); + } #else // If eh == 0 then another thread is unblocking the // <ACE_Select_Reactor> to update the <ACE_Select_Reactor>'s @@ -923,9 +960,8 @@ ACE_Select_Reactor_Notify::dispatch_notify (ACE_Notification_Buffer &buffer) int result = 0; #if defined (ACE_HAS_REACTOR_NOTIFICATION_QUEUE) - // Dispatch one message from the notify queue, and put another in - // the pipe if one is available. Remember, the idea is to keep - // exactly one message in the pipe at a time. + + // Dispatch all messages that are in the <notify_queue_>. { // We acquire the lock in a block to make sure we're not // holding the lock while delivering callbacks... @@ -946,23 +982,6 @@ ACE_Select_Reactor_Notify::dispatch_notify (ACE_Notification_Buffer &buffer) ACE_LIB_TEXT ("%p\n"), ACE_LIB_TEXT ("enqueue_head")), -1); - - bool write_next_buffer = false; - ACE_Notification_Buffer ** next; - - if(!this->notify_queue_.is_empty()) - { - // The queue is not empty, need to queue another message. - this->notify_queue_.get (next, 0); - write_next_buffer = true; - } - - if(write_next_buffer) - { - (void) ACE::send( - this->notification_pipe_.write_handle(), - (char *)*next, sizeof(ACE_Notification_Buffer)); - } } #endif /* ACE_HAS_REACTOR_NOTIFICATION_QUEUE */ diff --git a/ace/ace_wchar.inl b/ace/ace_wchar.inl index 68fd3d2fac2..dfd89add10c 100644 --- a/ace/ace_wchar.inl +++ b/ace/ace_wchar.inl @@ -33,7 +33,7 @@ ACE_Wide_To_Ascii::convert (const wchar_t *wstr) int len = ::WideCharToMultiByte (CP_OEMCP, 0, wstr, - -1, + 1, 0, 0, 0, diff --git a/bin/MakeProjectCreator/config/ftrtevent.mpb b/bin/MakeProjectCreator/config/ftrtevent.mpb new file mode 100644 index 00000000000..7f0a12d0d74 --- /dev/null +++ b/bin/MakeProjectCreator/config/ftrtevent.mpb @@ -0,0 +1,6 @@ +project : ftorbutils, rtevent, naming { + after += FtRtEvent + libs += TAO_FtRtEvent + comps += FtRtEvent + tagchecks += FtRtEvent +}
\ No newline at end of file diff --git a/bin/MakeProjectCreator/config/ftrteventclient.mpb b/bin/MakeProjectCreator/config/ftrteventclient.mpb new file mode 100644 index 00000000000..789a6db58e2 --- /dev/null +++ b/bin/MakeProjectCreator/config/ftrteventclient.mpb @@ -0,0 +1,6 @@ +project : ftclientorb, ftrtevent { + after += FTRT_ClientORB + libs += TAO_FTRT_ClientORB + comps += FTRT_ClientORB + tagchecks += FTRT_ClientORB +}
\ No newline at end of file diff --git a/bin/MakeProjectCreator/config/kokyu_dsrt_scheduler_client.mpb b/bin/MakeProjectCreator/config/kokyu_dsrt_scheduler_client.mpb deleted file mode 100644 index b086d577f05..00000000000 --- a/bin/MakeProjectCreator/config/kokyu_dsrt_scheduler_client.mpb +++ /dev/null @@ -1,2 +0,0 @@ -project : taoclient, kokyu_dsrt_schedulers { -} diff --git a/bin/MakeProjectCreator/config/kokyu_dsrt_scheduler_server.mpb b/bin/MakeProjectCreator/config/kokyu_dsrt_scheduler_server.mpb deleted file mode 100644 index efc2b2da2cd..00000000000 --- a/bin/MakeProjectCreator/config/kokyu_dsrt_scheduler_server.mpb +++ /dev/null @@ -1,2 +0,0 @@ -project(kokyu_dsrt_scheduler_server) : taoserver, kokyu_dsrt_schedulers { -} diff --git a/bin/MakeProjectCreator/config/kokyu_dsrt_schedulers.mpb b/bin/MakeProjectCreator/config/kokyu_dsrt_schedulers.mpb deleted file mode 100644 index c2050ceac25..00000000000 --- a/bin/MakeProjectCreator/config/kokyu_dsrt_schedulers.mpb +++ /dev/null @@ -1,5 +0,0 @@ -project(kokyu_dsrt_schedulers) : rtcorba, kokyu { - after += Kokyu_DSRT_Schedulers - libs += Kokyu_DSRT_Schedulers - includes += $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers -} diff --git a/bin/MakeProjectCreator/config/rtcosscheduling.mpb b/bin/MakeProjectCreator/config/rtcosscheduling.mpb deleted file mode 100644 index 653a7be43af..00000000000 --- a/bin/MakeProjectCreator/config/rtcosscheduling.mpb +++ /dev/null @@ -1,6 +0,0 @@ -project : rtportableserver { - after += RTCosScheduling - libs += TAO_RTCosScheduling - comps += RTCosScheduling - tagchecks += RTCosScheduling -} diff --git a/bin/MakeProjectCreator/modules/CbxProjectCreator.pm b/bin/MakeProjectCreator/modules/CbxProjectCreator.pm deleted file mode 100644 index 80291d9426e..00000000000 --- a/bin/MakeProjectCreator/modules/CbxProjectCreator.pm +++ /dev/null @@ -1,76 +0,0 @@ -package CbxProjectCreator; - -# ************************************************************ -# Description : The Borland C++ BuilderX Project Creator -# Author : Johnny Willemsen -# Create Date : 10/12/2003 -# ************************************************************ - -# ************************************************************ -# Pragmas -# ************************************************************ - -use strict; - -use ProjectCreator; -use File::Basename; - -use vars qw(@ISA); -@ISA = qw(ProjectCreator); - -# ************************************************************ -# Subroutine Section -# ************************************************************ - -sub fill_value { - my($self) = shift; - my($name) = shift; - my($value) = undef; - - if ($name eq 'cppdir') { - my(%dirnames) = (); - foreach my $file ($self->get_component_list('source_files')) { - my($dirname) = dirname($file); - if ($dirname eq '') { - $dirname = '.'; - } - $dirnames{$dirname} = 1; - } - $value = join(';', sort keys %dirnames); - } - - return $value; -} - - -sub project_file_name { - my($self) = shift; - my($name) = shift; - - if (!defined $name) { - $name = $self->project_name(); - } - - return "$name.cbx"; -} - - -sub get_dll_exe_template_input_file { - #my($self) = shift; - return 'cbxexe'; -} - - -sub get_dll_template_input_file { - #my($self) = shift; - return 'cbxdll'; -} - - -sub get_template { - #my($self) = shift; - return 'cbx'; -} - - -1; diff --git a/bin/MakeProjectCreator/templates/cbx.mpd b/bin/MakeProjectCreator/templates/cbx.mpd deleted file mode 100644 index 99391f2ad33..00000000000 --- a/bin/MakeProjectCreator/templates/cbx.mpd +++ /dev/null @@ -1,236 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!--C++Builder MP Project--> -<project> - <property category="build.config" name="active" value="0"/> - <property category="build.config" name="count" value="1"/> - <property category="build.config" name="excludedefaultforzero" value="0"/> - <property category="build.config.0" name="builddir" value="Debug"/> - <property category="build.config.0" name="key" value="Debug_Build"/> - <property category="build.config.0" name="linux.builddir" value="linux/Debug_Build"/> - <property category="build.config.0" name="name" value="Debug Build"/> - <property category="build.config.0" name="settings.MinGW" value="default;debug"/> - <property category="build.config.0" name="settings.gnuc++" value="default;debug"/> - <property category="build.config.0" name="settings.mswin32" value="default;debug"/> - <property category="build.config.0" name="solaris.builddir" value="solaris/Debug_Build"/> - <property category="build.config.0" name="type" value="Toolset"/> - <property category="build.config.0" name="win32.builddir" value="windows/Debug_Build"/> - <property category="build.config.1" name="key" value="Release_Build"/> - <property category="build.config.1" name="name" value="Release Build"/> - <property category="build.config.1" name="settings.MinGW" value="default;release"/> - <property category="build.config.1" name="settings.gnuc++" value="default;release"/> - <property category="build.config.1" name="settings.mswin32" value="default;release"/> - <property category="build.config.1" name="type" value="Toolset"/> - <property category="build.node" name="name" value="ACEtest"/> - <property category="build.node" name="type" value="libraryproject"/> - <property category="build.platform" name="active" value="win32"/> - <property category="build.platform" name="linux.Debug_Build.toolset" value="gnuc++"/> - <property category="build.platform" name="linux.Release_Build.toolset" value="gnuc++"/> - <property category="build.platform" name="linux.default" value="gnuc++"/> - <property category="build.platform" name="linux.gnuc++.enabled" value="1"/> - <property category="build.platform" name="solaris.Debug_Build.toolset" value="sunforte"/> - <property category="build.platform" name="solaris.Release_Build.toolset" value="sunforte"/> - <property category="build.platform" name="solaris.default" value="gnuc++"/> - <property category="build.platform" name="solaris.gnuc++.enabled" value="1"/> - <property category="build.platform" name="solaris.sunforte.enabled" value="1"/> - <property category="build.platform" name="win32.Debug_Build.toolset" value="win32b"/> - <property category="build.platform" name="win32.MinGW.enabled" value="1"/> - <property category="build.platform" name="win32.Release_Build.toolset" value="win32b"/> - <property category="build.platform" name="win32.default" value="win32b"/> - <property category="build.platform" name="win32.gnuc++.enabled" value="0"/> - <property category="build.platform" name="win32.mswin32.enabled" value="1"/> - <property category="build.platform" name="win32.win32b.enabled" value="1"/> - <property category="cbproject" name="lastnodeid" value="317"/> - <property category="cbproject" name="version" value="1.6"/> - <property category="linux.Debug_Build.gnuc++.g++compile" name="option.I.arg.1" value="\usr\include"/> - <property category="linux.Debug_Build.gnuc++.g++compile" name="option.I.arg.2" value="\usr\include\g++-3"/> - <property category="linux.Debug_Build.gnuc++.g++compile" name="option.I.enabled" value="1"/> - <property category="linux.Debug_Build.gnuc++.g++compile" name="option.MD.enabled" value="1"/> - <property category="linux.Debug_Build.gnuc++.g++compile" name="option.O0.enabled" value="1"/> - <property category="linux.Debug_Build.gnuc++.g++compile" name="option.c.enabled" value="1"/> - <property category="linux.Debug_Build.gnuc++.g++compile" name="option.g.arg" value="2"/> - <property category="linux.Debug_Build.gnuc++.g++compile" name="option.g.enabled" value="1"/> - <property category="linux.Debug_Build.gnuc++.g++compile" name="option.o.enabled" value="1"/> - <property category="linux.Debug_Build.gnuc++.g++link" name="option.g.arg" value="2"/> - <property category="linux.Debug_Build.gnuc++.g++link" name="option.g.enabled" value="1"/> - <property category="linux.Debug_Build.gnuc++.g++link" name="option.o.enabled" value="1"/> - <property category="linux.gnuc++.Debug_Build" name="saved" value="1"/> - <property category="runtime" name="ExcludeDefaultForZero" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_c_compile" name="option.o.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_c_link" name="option.o.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_Bdynamic.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_c.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_compat=5.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_dy.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_fns=no.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_fround=nearest.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_ftrap.arg.1" value="%none"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_ftrap.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_g.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_instances=global.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_o.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_staticlib.arg.1" value="%none"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_staticlib.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_template.arg.1" value="no%wholeclass,extdef"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_template.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_verbose.arg.1" value="%none"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_verbose.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_xalias_level=any.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_xarch=generic.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_xbuiltin=%none.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_xcheck=%none.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_xcrossfile=0.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_xinline.arg.1" value="%auto"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_xinline.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_xopenmp=none.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_xprefetch.arg.1" value="no%auto,explicit"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_xprefetch.enabled" value="1"/> - <property category="solaris.Debug_Build.sunforte.forte_cpp_link" name="option.minus_o.enabled" value="1"/> - <property category="solaris.sunforte.Debug_Build" name="saved" value="1"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.D.arg.1" value="_DEBUG"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.D.arg.2" value="_RTLDLL"/> -<%if(type_is_dynamic)%> - <%foreach(dynamicflags)%> - <property category="win32.Debug_Build.win32b.bcc32" name="option.D.arg.3" value="<%dynamicflag%>"/> - <%endfor%> -<%endif%> -<%if(need_staticflags)%> - <%foreach(staticflags)%> - <property category="win32.Debug_Build.win32b.bcc32" name="option.D.arg.3" value="<%libflag%>"/> - <%endfor%> -<%endif%> -<%foreach(defines common_defines macros)%> - <property category="win32.Debug_Build.win32b.bcc32" name="option.D.arg.3" value="<%define%>"/> -<%endfor%> - <property category="win32.Debug_Build.win32b.bcc32" name="option.D.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.Hc.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.I.arg.1" value="$(BCB)\include"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.I.arg.2" value="$(ACE_ROOT)"/> -<%foreach(includes)%> - <property category="win32.Debug_Build.win32b.bcc32" name="option.I.arg.2" value="<%include%>"/> -<%endfor%> - <property category="win32.Debug_Build.win32b.bcc32" name="option.I.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.Od.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.V.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.VA.enabled" value="0"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.Ve.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.Vx.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.a8.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.b.enabled" value="0"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.batchfilecompile.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.c.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.g.arg" value="100"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.g.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.i.arg" value="250"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.i.enabled" value="0"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.j.arg" value="25"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.j.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.k.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.o.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.r.enabled" value="0"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.responsefile.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.tWM.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.v.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.vi.enabled" value="0"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.w.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.bcc32" name="option.y.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.brcc32" name="option.F.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.D.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.Enn.arg" value="0"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.Enn.enabled" value="0"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.Gn.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.H:xxxx.arg" value="0x00100000"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.H:xxxx.enabled" value="0"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.Hc:xxxx.arg" value="0x00001000"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.Hc:xxxx.enabled" value="0"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.L.arg.1" value="$(BCB)\lib"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.L.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.S:xxxx.arg" value="0x00100000"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.S:xxxx.enabled" value="0"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.Sc:xxxx.arg" value="0x00002000"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.Sc:xxxx.enabled" value="0"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.Tpe.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.Ud.d.arg" value="1.0"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.Ud.d.enabled" value="0"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.Vd.d.arg" value="0.0"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.Vd.d.enabled" value="0"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.b:xxxx.arg" value="0x00400000"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.b:xxxx.enabled" value="0"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.v.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.x.enabled" value="1"/> - <property category="win32.Debug_Build.win32b.ilink32" name="param.libfiles.1" value="cw32mti.lib"/> - <property category="win32.Debug_Build.win32b.ilink32" name="param.libfiles.2" value="import32.lib"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.Tpd.enabled" value="<%if(type_is_dynamic)%>1<%w%>0<%endif%>"/> - <property category="win32.Debug_Build.win32b.ilink32" name="option.Tpe.enabled" value="<%if(type_is_dynamic)%>0<%else%>1<%endif%>"/> - <property category="win32.win32b.Debug_Build" name="saved" value="1"/> - <property category="win32b.ilink32" name="enabled" value="0"/> -<%if(source_files)%> - <node name="Source Files" type="Folder"> - <property category="unique" name="id"/> -<%foreach(source_files)%> - <file path=".\<%source_file%>"> - <property category="unique" name="id"/> - </file> -<%endfor%> - </node> -<%endif%> -<%if(header_files)%> - <node name="Header files" type="Folder"> - <property category="unique" name="id"/> -<%foreach(header_files)%> - <file path=".\<%header_file%>"> - <property category="unique" name="id"/> - </file> -<%endfor%> - </node> -<%endif%> -<%if(inline_files)%> - <node name="Inline files" type="Folder"> - <property category="unique" name="id"/> -<%foreach(inline_files)%> - <file path=".\<%inline_file%>"> - <property category="unique" name="id"/> - </file> -<%endfor%> - </node> -<%endif%> -<%if(idl_files)%> - <node name="IDL files" type="Folder"> - <property category="unique" name="id"/> -<%foreach(idl_files)%> - <file path=".\<%idl_file%>"> - <property category="unique" name="id"/> - </file> -<%endfor%> - </node> -<%endif%> -<%if(template_files)%> - <node name="Template files" type="Folder"> - <property category="unique" name="id"/> -<%foreach(template_files)%> - <file path=".\<%template_file%>"> - <property category="unique" name="id"/> - </file> -<%endfor%> - </node> -<%endif%> -<%if(documentation_files)%> - <node name="Documentation files" type="Folder"> - <property category="unique" name="id"/> -<%foreach(documentation_files)%> - <file path=".\<%documentation_file%>"> - <property category="unique" name="id"/> - </file> -<%endfor%> - </node> -<%endif%> -<%if(resource_files)%> - <node name="Resource files" type="Folder"> - <property category="unique" name="id"/> -<%foreach(resource_files)%> - <file path=".\<%resource_file%>"> - <property category="unique" name="id"/> - </file> -<%endfor%> - </node> -<%endif%> -</project> diff --git a/bin/MakeProjectCreator/templates/cbxdll.mpt b/bin/MakeProjectCreator/templates/cbxdll.mpt deleted file mode 100644 index d1f2dc6255a..00000000000 --- a/bin/MakeProjectCreator/templates/cbxdll.mpt +++ /dev/null @@ -1,6 +0,0 @@ -conditional_include "idl_compiler_win32" -conditional_include "common" - -type_is_binary = 1 -type_is_dynamic = 1 -common_defines = WIN32 diff --git a/bin/MakeProjectCreator/templates/cbxexe.mpt b/bin/MakeProjectCreator/templates/cbxexe.mpt deleted file mode 100644 index ffc6dd650a2..00000000000 --- a/bin/MakeProjectCreator/templates/cbxexe.mpt +++ /dev/null @@ -1,5 +0,0 @@ -conditional_include "idl_compiler_win32" -conditional_include "common" - -type_is_binary = 1 -common_defines = WIN32 diff --git a/bin/mpc.pl b/bin/mpc.pl index 27e29b1c5d4..7ad98f325db 100755 --- a/bin/mpc.pl +++ b/bin/mpc.pl @@ -31,7 +31,6 @@ my(@creators) = ('GNUACEProjectCreator', 'VC7ProjectCreator', 'VC71ProjectCreator', 'BorlandProjectCreator', - 'CbxProjectCreator', 'GHSProjectCreator', 'EM3ProjectCreator', 'VA4ProjectCreator', diff --git a/bin/tao_other_tests.lst b/bin/tao_other_tests.lst index c3df2ae11cf..1da05fd8028 100644 --- a/bin/tao_other_tests.lst +++ b/bin/tao_other_tests.lst @@ -105,8 +105,6 @@ TAO/orbsvcs/tests/Security/SecurityLevel1/run_test.pl: SSL !STATIC TAO/orbsvcs/tests/Security/Crash_Test/run_test.pl: SSL !STATIC TAO/orbsvcs/tests/Miop/McastHello/run_test.pl: !MINIMUM !STATIC !SUNCC5_1 TAO/orbsvcs/tests/LoadBalancing/GenericFactory/Application_Controlled/run_test.pl: !MINIMUM !DISABLE_INTERCEPTORS -TAO/orbsvcs/tests/LoadBalancing/GenericFactory/Infrastructure_Controlled/run_test.pl: !MINIMUM !DISABLE_INTERCEPTORS -TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/run_test.pl: !MINIMUM !DISABLE_INTERCEPTORS TAO/tests/Two_Objects/run_test.pl: !ST TAO/examples/RTCORBA/Activity/run_test.pl: !MINIMUM TAO/examples/RTScheduling/Fixed_Priority_Scheduler/run_test.pl: !MINIMUM !DISABLE_INTERCEPTORS diff --git a/include/makeinclude/platform_cygwin32.GNU b/include/makeinclude/platform_cygwin32.GNU index d71708d6cda..4ccfd85a53c 100644 --- a/include/makeinclude/platform_cygwin32.GNU +++ b/include/makeinclude/platform_cygwin32.GNU @@ -19,7 +19,8 @@ cygwin32 = 1 # Cygwin doesn't allow to add the version number of ACE to the dll name # because fe ace.dll.5.2.3 isn't a valid dll name -versioned_so=0 +SONAME= +SOVERSION= # Disable auto-import warnings. The Cygwin linker has a problem with imports # See https://sourceforge.net/tracker/?func=detail&atid=102435&aid=683455&group_id=2435 diff --git a/include/makeinclude/platform_linux_borland.GNU b/include/makeinclude/platform_linux_borland.GNU index d8cd0546b55..98bb78d9293 100644 --- a/include/makeinclude/platform_linux_borland.GNU +++ b/include/makeinclude/platform_linux_borland.GNU @@ -113,4 +113,5 @@ LINK.cc = override LINK.cc.override = $(LD) $(LDFLAGS) $(BOREXELIBS) $(BORLDFLAGS) $(POSTLINK) SOLINK.cc = $(LD) -Tpd -versioned_so=0 +SONAME= +SOVERSION= diff --git a/include/makeinclude/platform_mingw32.GNU b/include/makeinclude/platform_mingw32.GNU index b9122a49f33..98fda38062d 100644 --- a/include/makeinclude/platform_mingw32.GNU +++ b/include/makeinclude/platform_mingw32.GNU @@ -35,7 +35,8 @@ mingw32 = 1 # MingW doesn't allow to add the version number of ACE to the dll name # because fe ace.dll.5.2.3 isn't a valid dll name -versioned_so=0 +SONAME= +SOVERSION= # Disable auto-import warnings. The MingW linker has a problem with imports # See https://sourceforge.net/tracker/?func=detail&atid=102435&aid=683455&group_id=2435 diff --git a/include/makeinclude/wrapper_macros.GNU b/include/makeinclude/wrapper_macros.GNU index 3029e9ee2fb..ea5c73acea2 100644 --- a/include/makeinclude/wrapper_macros.GNU +++ b/include/makeinclude/wrapper_macros.GNU @@ -54,23 +54,19 @@ # gtk_reactor Build the GtkReactor. # ssl Build with OpenSSL support. # rapi Build with RAPI -# split Build the library by first splitting up the ACE source -# to several files, with one object code entity for each -# source file. This allows an application that is linked -# with ACE to extract _exactly_ what it needs from the -# library, resulting in a smaller executable. +# split Build the library by first splitting up the ACE source to several +# files, with one object code entity for each source file. This allows +# an application that is linked with ACE to extract _exactly_ what it +# needs from the library, resulting in a smaller executable. # Setting this to 1 overrides debug to 0. # sctp Build support for TAO SCIOP and for ACE SCTP # wrapper-facades. The sctp macro should be set to a string # value representing a particular SCTP implementation. # Recognized values include: openss7 # -# versioned_so Add versioning to libraries. Defaults to 1 (true). If 0, -# no version number is appended to shared library names. -# If versioned_so is 1 (enabled), the SOVERSION make -# variable can also be set to specify the version info -# to append to the name - it should have a leading '.' - -# else it defaults to .ACE_MAJOR.ACE_MINOR.ACE_BETA. +# versioned_so Add versioning to libraries. Defaults to 1 (true), and +# can be turned off by passing versioned_so=0 to make. Note +# that setting it in platform_macros.GNU has no effect. # # Usually, users do not need to be concerned with make targets. # Just enter "make" on the command line to build. A few notable @@ -168,19 +164,39 @@ ifeq ($(static_libs),) static_libs = 0 endif # static_libs +#### Defined versioned_so = 1 if your platform requires version number +#### be appended after so library. +ifeq ($(versioned_so),) + versioned_so = 1 +endif + #### The system has X Windows and we want to include the XtReactor in #### the library xt_reactor = 0 -#### Set up the build ACE version in case the platform_macros.GNU wants it. -ACE_MAJOR_VERSION := $(shell awk '/ACE_MAJOR_VERSION/ { print $$3}' ${ACE_ROOT}/ace/Version.h) -ACE_MINOR_VERSION := $(shell awk '/ACE_MINOR_VERSION/ { print $$3}' ${ACE_ROOT}/ace/Version.h) -ACE_BETA_VERSION := $(shell awk '/ACE_BETA_VERSION/ { print $$3}' ${ACE_ROOT}/ace/Version.h) - ifndef PACE_ROOT PACE_ROOT = $(ACE_ROOT)/PACE endif # PACE_ROOT +ifeq ($(versioned_so),1) + # Turn on symbol versioning. The scheme that we follow is to allow + # applications dependent on libraries, with same version numbers (major, + # minor and beta) to run, but applications with dependencies on libraries + # with different minor or major or beta versions to fail. + # + ACE_MAJOR_VERSION := $(shell awk '/ACE_MAJOR_VERSION/ { print $$3}' ${ACE_ROOT}/ace/Version.h) + ACE_MINOR_VERSION := $(shell awk '/ACE_MINOR_VERSION/ { print $$3}' ${ACE_ROOT}/ace/Version.h) + ACE_BETA_VERSION := $(shell awk '/ACE_BETA_VERSION/ { print $$3}' ${ACE_ROOT}/ace/Version.h) + + # Version number of the libraries + # + SOVERSION = .$(ACE_MAJOR_VERSION).$(ACE_MINOR_VERSION).$(ACE_BETA_VERSION) + + # Name that will be written into the dynamic library + # + SONAME = $(SHLIB).$(ACE_MAJOR_VERSION).$(ACE_MINOR_VERSION).$(ACE_BETA_VERSION) +endif + # Include this before the below variables to make it possible for # platform_macros.GNU to set default values for them. include $(ACE_ROOT)/include/makeinclude/platform_macros.GNU @@ -192,8 +208,7 @@ ifeq ($(threads),0) endif # threads #### -#### Defaults are exceptions off (0), fast off (0), rtti off (0), and -#### versioned_so on (1). +#### Defaults are exceptions off (0), fast off (0), and rtti off (0) #### ifndef exceptions exceptions = 0 @@ -209,26 +224,6 @@ ifndef rtti rtti = 0 endif -ifeq (,$(versioned_so)) - versioned_so = 1 -endif -ifeq ($(versioned_so),1) - # Turn on symbol versioning. The scheme that we follow is to allow - # applications dependent on libraries, with same version numbers (major, - # minor and beta) to run, but applications with dependencies on libraries - # with different minor or major or beta versions to fail. - # - # Version number of the libraries - # - ifndef SOVERSION - SOVERSION = .$(ACE_MAJOR_VERSION).$(ACE_MINOR_VERSION).$(ACE_BETA_VERSION) - endif # SOVERSION - - # Name that will be written into the dynamic library - # - SONAME = $(SHLIB)$(SOVERSION) -endif # versioned_so - #---------------------------------------------------------------------------- # Platform-independent macro definitions #---------------------------------------------------------------------------- diff --git a/protocols/ace/RMCast/Makefile.am b/protocols/ace/RMCast/Makefile.am deleted file mode 100644 index 5a183b2e90b..00000000000 --- a/protocols/ace/RMCast/Makefile.am +++ /dev/null @@ -1,105 +0,0 @@ -##---------------------------------------------------------------------------- -## $Id$ -## -## Makefile.am for ACE_RMCast library -##---------------------------------------------------------------------------- - -## -## Process this file with automake to create Makefile.in -## - -INCLUDES = -I$(top_builddir) -I$(top_srcdir) - -lib_LTLIBRARIES = libACE_RMCast.la - -libACE_RMCast_la_SOURCES = \ - RMCast.cpp \ - RMCast_Ack_Worker.cpp \ - RMCast_Fork.cpp \ - RMCast_Fragment.cpp \ - RMCast_IO_UDP.cpp \ - RMCast_Membership.cpp \ - RMCast_Module.cpp \ - RMCast_Module_Factory.cpp \ - RMCast_Partial_Message.cpp \ - RMCast_Proxy.cpp \ - RMCast_Reassembly.cpp \ - RMCast_Receiver_Module.cpp \ - RMCast_Reliable_Factory.cpp \ - RMCast_Reordering.cpp \ - RMCast_Resend_Handler.cpp \ - RMCast_Resend_Worker.cpp \ - RMCast_Retransmission.cpp \ - RMCast_Sequencer.cpp \ - RMCast_Singleton_Factory.cpp \ - RMCast_UDP_Event_Handler.cpp \ - RMCast_UDP_Proxy.cpp \ - RMCast_UDP_Reliable_Receiver.cpp \ - RMCast_UDP_Reliable_Sender.cpp - -libACE_RMCast_la_LIBADD = $(top_builddir)/ace/libACE.la - -## These are template source files. -TEMPLATE_FILES = \ - RMCast_Copy_On_Write.cpp \ - RMCast_Worker.cpp - -HEADER_FILES = \ - RMCast.h \ - RMCast_Ack_Worker.h \ - RMCast_Copy_On_Write.h \ - RMCast_Export.h \ - RMCast_Fork.h \ - RMCast_Fragment.h \ - RMCast_IO_UDP.h \ - RMCast_Membership.h \ - RMCast_Module.h \ - RMCast_Module_Factory.h \ - RMCast_Partial_Message.h \ - RMCast_Proxy.h \ - RMCast_Reassembly.h \ - RMCast_Receiver_Module.h \ - RMCast_Reliable_Factory.h \ - RMCast_Reordering.h \ - RMCast_Resend_Handler.h \ - RMCast_Resend_Worker.h \ - RMCast_Retransmission.h \ - RMCast_Sequencer.h \ - RMCast_Singleton_Factory.h \ - RMCast_UDP_Event_Handler.h \ - RMCast_UDP_Proxy.h \ - RMCast_UDP_Reliable_Receiver.h \ - RMCast_UDP_Reliable_Sender.h \ - RMCast_Worker.h - -INLINE_FILES = \ - RMCast.i \ - RMCast_Ack_Worker.i \ - RMCast_Copy_On_Write.i \ - RMCast_Fork.i \ - RMCast_Fragment.i \ - RMCast_IO_UDP.i \ - RMCast_Membership.i \ - RMCast_Module.i \ - RMCast_Module_Factory.i \ - RMCast_Partial_Message.i \ - RMCast_Proxy.i \ - RMCast_Reassembly.i \ - RMCast_Receiver_Module.i \ - RMCast_Reliable_Factory.i \ - RMCast_Reordering.i \ - RMCast_Resend_Handler.i \ - RMCast_Resend_Worker.i \ - RMCast_Retransmission.i \ - RMCast_Sequencer.i \ - RMCast_Singleton_Factory.i \ - RMCast_UDP_Event_Handler.i \ - RMCast_UDP_Proxy.i \ - RMCast_UDP_Reliable_Receiver.i \ - RMCast_UDP_Reliable_Sender.i \ - RMCast_Worker.i - -pkginclude_HEADERS = \ - $(HEADER_FILES) \ - $(INLINE_FILES) \ - $(TEMPLATE_FILES) diff --git a/protocols/ace/RMCast/README b/protocols/ace/RMCast/README deleted file mode 100644 index 2dd0c5d9cfc..00000000000 --- a/protocols/ace/RMCast/README +++ /dev/null @@ -1,57 +0,0 @@ -# $Id$ - - This directory will contain a simple, small-scale reliable -multicast framework for ACE. The framework is based on the ASX -components of the ACE library: the protocol is implemented as a stack -of interchangeable "modules", each one in charge of a very small task. -For example, one module implements fragmentation and reassembly, other -modules implement retransmission, send ACK and NAK messages, and -maintain receiver membership. - - The modules are replaced to achieve different levels of -reliability. For example, the retransmission module can be either the -"Best_Effort", "Semi_Reliable" or "Reliable" implementation. In the -first case no retransmissions are performed, but lost messages are -detected and reported to the receiver. The "Semi_Reliable" case -messages are held for a pre-specified amount of time, and -re-transmited if requested, but it is possible to loose some messages -if multiple re-transmissions fail. As in the "Best_Effort" case the -lost messages are detected and flagged to the application. Finally -in the "Reliable" mode the senders are flowed controlled until enough -messages are successfully transmitted. - - In general the stack looks like this: - - -SENDER: - ----------------------------------------------------------------- -Buffering : Save lost messages -Retransmission : Retransmit ----------------------------------------------------------------- -Fragmentation : Fragment messages in smaller chunks -Reassembly : and ensure that the IOVMAX limit is not - : reached ----------------------------------------------------------------- -Tranport : Encapsulate the specific transport media - : such as TCP/IP, ATM, or shared memory - : Demuxes incoming data to the right chain - : Change control messages and data messages - : to the right dynamic types. ----------------------------------------------------------------- - -RECEIVER: - ----------------------------------------------------------------- -Lost detection : Detect lost messages and send control - : messages back ----------------------------------------------------------------- -Reassembly : Reassemble messages, fragment control -Fragmentation : data ----------------------------------------------------------------- -Transport : Group membership, ACT reception, - : handle keep-alive messages... ----------------------------------------------------------------- - - -@@ TODO: Piggybacking... diff --git a/protocols/ace/RMCast/RMCast_Export.h b/protocols/ace/RMCast/RMCast_Export.h deleted file mode 100644 index 51257c4d682..00000000000 --- a/protocols/ace/RMCast/RMCast_Export.h +++ /dev/null @@ -1,44 +0,0 @@ -// -*- C++ -*- -// $Id$ -// Definition for Win32 Export directives. -// This file is generated automatically by -// generate_export_file.pl -// ------------------------------ -#if !defined (ACE_RMCAST_EXPORT_H) -#define ACE_RMCAST_EXPORT_H - -#include "ace/config-all.h" - -#if defined (ACE_AS_STATIC_LIBS) && !defined (ACE_RMCAST_HAS_DLL) -# define ACE_RMCAST_HAS_DLL 0 -#endif /* ACE_AS_STATIC_LIBS && ACE_RMCAST_HAS_DLL */ - -#if !defined (ACE_RMCAST_HAS_DLL) -#define ACE_RMCAST_HAS_DLL 1 -#endif /* ! ACE_RMCAST_HAS_DLL */ - -#if defined (ACE_RMCAST_HAS_DLL) -# if (ACE_RMCAST_HAS_DLL == 1) -# if defined (ACE_RMCAST_BUILD_DLL) -# define ACE_RMCast_Export ACE_Proper_Export_Flag -# define ACE_RMCAST_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) -# define ACE_RMCAST_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) -# else -# define ACE_RMCast_Export ACE_Proper_Import_Flag -# define ACE_RMCAST_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) -# define ACE_RMCAST_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) -# endif /* ACE_RMCAST_BUILD_DLL */ -# else -# define ACE_RMCast_Export -# define ACE_RMCAST_SINGLETON_DECLARATION(T) -# define ACE_RMCAST_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) -# endif /* ! ACE_RMCAST_HAS_DLL == 1 */ -#else -# define ACE_RMCast_Export -# define ACE_RMCAST_SINGLETON_DECLARATION(T) -# define ACE_RMCAST_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) -#endif /* ACE_RMCAST_HAS_DLL */ - -#endif /* ACE_RMCAST_EXPORT_H */ - -// End of auto generated file. diff --git a/tests/Makefile.tests b/tests/Makefile.tests index 27dae6f9649..19d9b4827fb 100644 --- a/tests/Makefile.tests +++ b/tests/Makefile.tests @@ -96,7 +96,6 @@ BIN = \ Reactor_Dispatch_Order_Test \ Reactor_Exceptions_Test \ Reactor_Notify_Test \ - Reactor_Notification_Queue_Test \ Reactor_Performance_Test \ Reactor_Registration_Test \ Reactor_Timer_Test \ diff --git a/tests/Reactor_Notification_Queue_Test.cpp b/tests/Reactor_Notification_Queue_Test.cpp deleted file mode 100644 index 26dfb59e426..00000000000 --- a/tests/Reactor_Notification_Queue_Test.cpp +++ /dev/null @@ -1,223 +0,0 @@ -/** - * @file Reactor_Notification_Queue_Test.cpp - * - * $Id$ - * - * Verify that the notification queue can be used with large numbers - * of events. - * - * Normally the ACE_Reactor uses a pipe to implement the notify() - * methods. ACE can be compiled with - * ACE_HAS_REACTOR_NOTIFICATION_QUEUE, with this configuration flag - * the Reactor uses a user-space queue to contain the notifications. - * A single message is sent through the pipe to indicate "pipe not - * empty." - * - * @author Carlos O'Ryan <coryan@atdesk.com> - * - */ - -#include "test_config.h" -#include "ace/Reactor.h" -#include "ace/TP_Reactor.h" -#include "ace/Select_Reactor.h" -#include "ace/WFMO_Reactor.h" - -ACE_RCSID(tests, - Reactor_Notification_Queue_Test, "$Id$") - -class Event_Handler : public ACE_Event_Handler -{ -public: - Event_Handler(ACE_Reactor * reactor, - int max_notifications, - char const *test_name); - - /// Run the test - void run(void); - - /// Receive the notifications. - virtual int handle_exception(ACE_HANDLE); - -private: - /** - * @brief Implement a single iteration. - * - * Each iteration of the test consists of sending multiple - * notifications simultaneously. - */ - void send_notifications (void); - - /** - * @brief Return true if the test is finished. - */ - bool done (void) const; - -private: - /** - * @brief The maximum number of notifications in any single - * iteration. - */ - int max_notifications_; - - /** - * @brief The name of the test - */ - char const * test_name_; - /** - * @brief Number of notifications received - */ - int notifications_sent_; - /** - * @brief Number of notifications sent - */ - int notifications_recv_; - - /** - * @brief Number of notifications sent on each iteration - */ - int notifications_curr_; -}; - -int -run_main (int, ACE_TCHAR *[]) -{ - ACE_START_TEST (ACE_TEXT ("Reactor_Notification_Queue_Test")); - -#if !defined(ACE_HAS_REACTOR_NOTIFICATION_QUEUE) - ACE_DEBUG ((LM_INFO, - ACE_TEXT ("Notification queue disabled, ") - ACE_TEXT ("small test version, ") - ACE_TEXT ("which is of no practical use\n"))); - - int max_notifications = 16; -#else - int max_notifications = 1024 * 1024; -#endif /* ACE_HAS_THREADS */ - - { - ACE_Reactor select_reactor ( - new ACE_Select_Reactor, - 1); - - Event_Handler handler(&select_reactor, - max_notifications, - "Select_Reactor"); - - handler.run (); - } - - { - ACE_Reactor tp_reactor (new ACE_TP_Reactor, - 1); - Event_Handler handler(&tp_reactor, - max_notifications, - "TP_Reactor"); - handler.run(); - } - -#if 0 - /// @@todo: Need to talk to Irfan to see how the WFMO handles this. -#if defined (ACE_WIN32) - { - ACE_Reactor wfmo_reactor (new ACE_WFMO_Reactor, - 1); - - Event_Handler handler(&wfmo_reactor, - max_notifications, - "WFMO_Reactor"); - handler.run(); - } -#endif /*ACE_WIN32*/ -#endif /*if 0 */ - ACE_END_TEST; - return 0; -} - -Event_Handler::Event_Handler ( - ACE_Reactor * reactor, - int max_notifications, - char const * test_name) - : ACE_Event_Handler(reactor) - , max_notifications_(max_notifications) - , test_name_(test_name) - , notifications_sent_(0) - , notifications_recv_(0) - , notifications_curr_(1) -{ -} - -void -Event_Handler::run (void) -{ - send_notifications (); - - // Run for 30 seconds or until the test is done. - for(int i = 0; i != 30 && !done(); ++i) - { - ACE_Time_Value tv (1,0); - reactor ()->run_reactor_event_loop(tv); - } - - if(!done()) - { - ACE_ERROR ((LM_ERROR, - ACE_TEXT ("Test %s failed due to timeout ") - ACE_TEXT (" sent=%d,recv=%d \n"), - test_name_, - notifications_sent_, - notifications_recv_)); - } - else - { - ACE_DEBUG ((LM_INFO, - ACE_TEXT ("Test %s passed sent=%d, recv=%d\n"), - test_name_, - notifications_sent_, - notifications_recv_)); - } -} - -int -Event_Handler::handle_exception (ACE_HANDLE) -{ - ++notifications_recv_; - if(notifications_recv_ == notifications_sent_) - { - if(notifications_curr_ >= max_notifications_) - { - - return 0; - } - send_notifications(); - } - return 0; -} - -void -Event_Handler::send_notifications (void) -{ - for (int i = 0; i != notifications_curr_; ++i) - { - if(reactor()->notify (this) == -1) - { - ACE_ERROR((LM_ERROR, - ACE_TEXT ("Cannot send notifications in %s test (%d/%d)\n"), - test_name_, i, notifications_curr_)); - return; - } - - ++notifications_sent_; - } - // ACE_ERROR((LM_ERROR, - // "Started iteration with %d notify() calls in test %s\n", - // notifications_curr_, test_name_)); - notifications_curr_ *= 2; -} - -bool -Event_Handler::done (void) const -{ - return (notifications_curr_ >= max_notifications_) - && (notifications_sent_ == notifications_recv_); -} diff --git a/tests/Reactor_Notification_Queue_Test.dsp b/tests/Reactor_Notification_Queue_Test.dsp deleted file mode 100644 index 52528df64c0..00000000000 --- a/tests/Reactor_Notification_Queue_Test.dsp +++ /dev/null @@ -1,166 +0,0 @@ -# Microsoft Developer Studio Project File - Name="Reactor_Notification_Queue_Test" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=Reactor_Notification_Queue_Test - Win32 Release
-!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 "Reactor_Notification_Queue_Test.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 "Reactor_Notification_Queue_Test.mak" CFG="Reactor_Notification_Queue_Test - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "Reactor_Notification_Queue_Test - Win32 Static Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "Reactor_Notification_Queue_Test - Win32 Static Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "Reactor_Notification_Queue_Test - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "Reactor_Notification_Queue_Test - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "Reactor_Notification_Queue_Test - Win32 Static Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Static_Debug"
-# PROP BASE Intermediate_Dir "Static_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Static_Debug"
-# PROP Intermediate_Dir "Static_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../" /D "_DEBUG" /D "ACE_AS_STATIC_LIBS" /D "WIN32" /D "_CONSOLE" /FD /c
-# SUBTRACT CPP /YX
-# 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
-# ADD LINK32 user32.lib acesd.lib advapi32.lib Test_Outputsd.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"..\ace"
-
-!ELSEIF "$(CFG)" == "Reactor_Notification_Queue_Test - Win32 Static Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Static_Release"
-# PROP BASE Intermediate_Dir "Static_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Static_Release"
-# PROP Intermediate_Dir "Static_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../" /D "NDEBUG" /D "ACE_AS_STATIC_LIBS" /D "WIN32" /D "_CONSOLE" /FD /c
-# SUBTRACT CPP /YX
-# 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 user32.lib aces.lib advapi32.lib Test_Outputs.lib /nologo /subsystem:console /machine:I386 /libpath:"..\ace"
-
-!ELSEIF "$(CFG)" == "Reactor_Notification_Queue_Test - 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" /YX /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /FD /c
-# SUBTRACT CPP /YX
-# 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 ace.lib Test_Output.lib /nologo /subsystem:console /machine:I386 /libpath:"..\ace"
-
-!ELSEIF "$(CFG)" == "Reactor_Notification_Queue_Test - 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 "../" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /c
-# SUBTRACT CPP /YX
-# 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 aced.lib Test_Outputd.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\ace"
-
-!ENDIF
-
-# Begin Target
-
-# Name "Reactor_Notification_Queue_Test - Win32 Static Debug"
-# Name "Reactor_Notification_Queue_Test - Win32 Static Release"
-# Name "Reactor_Notification_Queue_Test - Win32 Release"
-# Name "Reactor_Notification_Queue_Test - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
-# Begin Source File
-
-SOURCE=.\Main.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Reactor_Notification_Queue_Test.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-# Begin Source File
-
-SOURCE=.\test_config.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/tests/Tests.bor b/tests/Tests.bor index 14be8a5f026..ade1e4341c3 100644 --- a/tests/Tests.bor +++ b/tests/Tests.bor @@ -86,7 +86,6 @@ NAMES = \ Process_Strategy_Test \ RB_Tree_Test \ Reactor_Dispatch_Order_Test \ - Reactor_Notification_Queue_Test \ Reactor_Exceptions_Test \ Reactor_Notify_Test \ Reactor_Performance_Test \ diff --git a/tests/run_test.lst b/tests/run_test.lst index 9754c133c99..8cd70816828 100644 --- a/tests/run_test.lst +++ b/tests/run_test.lst @@ -98,7 +98,6 @@ RB_Tree_Test Reactor_Dispatch_Order_Test Reactor_Exceptions_Test Reactor_Notify_Test: !ST -Reactor_Notification_Queue_Test Reactor_Performance_Test: !chorus Reactor_Registration_Test Reactor_Timer_Test diff --git a/tests/tests.dsw b/tests/tests.dsw index 510d558b290..10d4fbf13ac 100644 --- a/tests/tests.dsw +++ b/tests/tests.dsw @@ -1275,21 +1275,6 @@ Package=<4> ###############################################################################
-Project: "Reactor_Notification_Queue_Test"=.\Reactor_Notification_Queue_Test.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name Test_Output DLL
- End Project Dependency
-}}}
-
-###############################################################################
-
Project: "Reactor_Performance_Test"=.\Reactor_Performance_Test.dsp - Package Owner=<4>
Package=<5>
diff --git a/tests/tests.mpc b/tests/tests.mpc index e7cff0f52e7..7a7d18175d7 100644 --- a/tests/tests.mpc +++ b/tests/tests.mpc @@ -605,13 +605,6 @@ project(Reactor Notify Test) : acetest { } } -project(Reactor Notification Queue Test) : acetest { - exename = Reactor_Notification_Queue_Test - Source_Files { - Reactor_Notification_Queue_Test.cpp - } -} - project(Reactor Dispatch Order Test) : acetest { exename = Reactor_Dispatch_Order_Test Source_Files { |