summaryrefslogtreecommitdiff
path: root/ACE/bin/FOCUS/specializations/Reactor_Family/Select_Reactor_MT.spl
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/bin/FOCUS/specializations/Reactor_Family/Select_Reactor_MT.spl')
-rw-r--r--ACE/bin/FOCUS/specializations/Reactor_Family/Select_Reactor_MT.spl452
1 files changed, 452 insertions, 0 deletions
diff --git a/ACE/bin/FOCUS/specializations/Reactor_Family/Select_Reactor_MT.spl b/ACE/bin/FOCUS/specializations/Reactor_Family/Select_Reactor_MT.spl
new file mode 100644
index 00000000000..6d4ecf6609b
--- /dev/null
+++ b/ACE/bin/FOCUS/specializations/Reactor_Family/Select_Reactor_MT.spl
@@ -0,0 +1,452 @@
+<?xml version="1.0"?>
+
+<!-- Select Reactor Specializations:
+ * ===============================
+ * Details all the specialization transformations necessary
+ * to specialize the Reactor framework when the target reactor
+ * is a select reactor.
+ *
+ * @author Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+ * $Id$
+-->
+
+<transform>
+
+<!-- Define the module where there are multiple files -->
+<module name="ace">
+
+<!-- File where the transformations happen -->
+<file name="Select_Reactor_Base.h">
+
+<!-- Add the following lines based on a hook -->
+<add>
+ <hook>REACTOR_SPL_INCLUDE_FORWARD_DECL_ADD_HOOK</hook>
+ <data>class ACE_Sig_Handler;</data>
+ <data>class ACE_Sig_Action;</data>
+ <data>class ACE_Sig_Set;</data>
+</add>
+
+<add>
+ <hook>REACTOR_SPL_PUBLIC_METHODS_ADD_HOOK</hook>
+ <data>
+//--- How can we devirtualize these methods?
+virtual ~ACE_Select_Reactor_Impl () {}
+
+virtual int notify (ACE_Event_Handler *event_handler = 0,
+ ACE_Reactor_Mask mask = ACE_Event_Handler::EXCEPT_MASK,
+ ACE_Time_Value * = 0) =0;
+
+virtual int remove_handler (ACE_Event_Handler *eh,
+ ACE_Reactor_Mask mask) =0;
+
+virtual int register_handler (ACE_HANDLE handle,
+ ACE_Event_Handler *eh,
+ ACE_Reactor_Mask mask) =0;
+ </data>
+</add>
+
+<!-- Remove what ever is present in the tag from the file -->
+<remove>virtual</remove>
+<remove>: public ACE_Reactor_Impl</remove>
+<remove>#include "ace/Reactor_Impl.h"</remove>
+
+<!-- Replace a with b -->
+<substitute>
+ <search>public ACE_Reactor_Notify</search>
+ <replace>public ACE_Event_Handler</replace>
+</substitute>
+
+<!-- Replace the generic versions with the Select specialized versions -->
+<substitute>
+ <search>ACE_Reactor_Notify</search>
+ <replace>ACE_Select_Reactor_Notify</replace>
+</substitute>
+
+<substitute>
+ <search>ACE_Reactor_Impl</search>
+ <replace>ACE_Select_Reactor_Impl</replace>
+</substitute>
+
+<!-- After the specialization, the following functions are still virtual -->
+<substitute>
+ <search>void renew</search>
+ <replace>virtual void renew</replace>
+</substitute>
+<substitute>
+ <search>int is_suspended_i</search>
+ <replace>virtual int is_suspended_i</replace>
+</substitute>
+<substitute>
+ <search>void clear_dispatch_mask</search>
+ <replace>virtual void clear_dispatch_mask</replace>
+</substitute>
+
+</file>
+
+<file name="Select_Reactor_Base.cpp">
+
+<substitute>
+ <search>ACE_Reactor_Impl</search>
+ <replace>ACE_Select_Reactor_Impl</replace>
+</substitute>
+
+</file>
+
+<file name="Select_Reactor_Base.inl">
+
+<remove>#include "ace/Reactor.h"</remove>
+
+</file>
+
+<!-- Transformations to Reactor_Token_T.h -->
+<file name="Reactor_Token_T.h">
+
+<substitute>
+ <search>ACE_Reactor_Impl</search>
+ <replace>ACE_Select_Reactor_Impl</replace>
+</substitute>
+
+<substitute match-line="yes">
+ <search>#include "ace/Reactor_Impl.h"</search>
+ <replace>#include "ace/Select_Reactor_Base.h"</replace>
+</substitute>
+
+</file>
+
+<file name="Reactor_Token_T.cpp">
+
+<!-- Search for ACE_Reactor_Impl and replace it with
+ ACE_Select_Reactor_Impl -->
+<substitute>
+ <search>ACE_Reactor_Impl</search>
+ <replace>ACE_Select_Reactor_Impl</replace>
+</substitute>
+
+</file>
+
+<file name="Select_Reactor_T.h">
+
+<add>
+<hook>REACTOR_SPL_INCLUDE_FORWARD_DECL_ADD_HOOK</hook>
+<data>class ACE_Sig_Handler;</data>
+<data>class ACE_Sig_Action;</data>
+<data>class ACE_Sig_Set;</data>
+</add>
+
+<substitute>
+ <search>ACE_Reactor_Notify</search>
+ <replace>ACE_Select_Reactor_Notify</replace>
+</substitute>
+
+<remove>virtual</remove>
+
+</file>
+
+<file name="Select_Reactor_T.cpp">
+
+<add>
+ <hook>REACTOR_SPL_INCLUDE_FORWARD_DECL_ADD_HOOK</hook>
+ <data>#include "ace/Countdown_Time.h"</data>
+</add>
+
+<substitute>
+ <search>ACE_Reactor_Notify</search>
+ <replace>ACE_Select_Reactor_Notify</replace>
+</substitute>
+
+</file>
+
+<!--
+<file name="Select_Reactor_T.inl">
+
+<remove>#include "ace/Reactor.h"</remove>
+
+</file>
+-->
+
+<file name="Reactor.h">
+
+<add>
+<hook>REACTOR_SPL_INCLUDE_FORWARD_DECL_ADD_HOOK</hook>
+<data>#include "ace/Select_Reactor.h"</data>
+</add>
+
+<remove>class ACE_Reactor_Impl;</remove>
+<remove>virtual</remove>
+
+<substitute>
+<search>ACE_Reactor_Impl</search>
+<replace>ACE_Select_Reactor</replace>
+</substitute>
+
+<!-- Remove the Reactor_Timer interface include -->
+<remove>: public ACE_Reactor_Timer_Interface</remove>
+<remove>#include "ace/Reactor_Timer_Interface.h"</remove>
+
+</file>
+
+<file name="Event_Handler.h">
+
+<!-- remove the ACE_Event_Handler forware declaration -->
+<remove>class ACE_Reactor_Timer_Interface;</remove>
+
+<!-- substitute ACE_Reactor_Timer operations with ACE_Reactor -->
+<substitute>
+ <search>ACE_Reactor_Timer_Interface</search>
+ <replace>ACE_Reactor</replace>
+</substitute>
+</file>
+
+<file name="Event_Handler.cpp">
+ <substitute>
+ <search>ACE_Reactor_Timer_Interface</search>
+ <replace>ACE_Reactor</replace>
+ </substitute>
+</file>
+
+<file name="Timer_Queue_T.cpp">
+
+<!-- Remove the Reactor_Timer_Interface include -->
+<remove>#include "ace/Reactor_Timer_Interface.h"</remove>
+
+</file>
+
+
+<file name="Reactor.cpp">
+
+<!-- Comment the conditional includes in the file -->
+<comment>
+ <start-hook>REACTOR_SPL_COMMENT_INCLUDE_START_HOOK</start-hook>
+ <end-hook>REACTOR_SPL_COMMENT_INCLUDE_END_HOOK</end-hook>
+</comment>
+
+<!-- Comment out conditional includes files in the Reactor's
+ constructor
+-->
+<comment>
+ <start-hook>REACTOR_SPL_CONSTRUCTOR_COMMENT_HOOK_START</start-hook>
+ <end-hook>REACTOR_SPL_CONSTRUCTOR_COMMENT_HOOK_END</end-hook>
+</comment>
+
+<!-- Within the constructor now create the right Reactor -->
+<add>
+ <hook>REACTOR_SPL_CONSTRUCTOR_COMMENT_HOOK_END</hook>
+ <data>
+ ACE_NEW (impl,
+ ACE_Select_Reactor);
+ </data>
+</add>
+
+<substitute>
+ <search>ACE_Reactor_Impl</search>
+ <replace>ACE_Select_Reactor</replace>
+</substitute>
+
+</file>
+
+<file name="Reactor.inl">
+
+<add>
+ <hook>REACTOR_SPL_INCLUDE_FORWARD_DECL_ADD_HOOK</hook>
+ <data>
+// Check if this is necessary
+#include "ace/Select_Reactor.h"
+ </data>
+</add>
+
+</file>
+
+<!-- Do not build the other reactors than the Select Reactor! -->
+<file name="ace.mpc">
+
+<!-- Here is where regular expressions can come handy. Such
+ a capability is not currently provided
+ -->
+<substitute>
+ <search>TP_Reactor.h</search>
+ <replace>// TP_Reactor.h </replace>
+</substitute>
+<substitute>
+ <search>TP_Reactor.cpp</search>
+ <replace>// TP_Reactor.cpp</replace>
+</substitute>
+
+<!-- Do not build the Msg_WFMO_Reactor -->
+<substitute>
+ <search>Msg_WFMO_Reactor.cpp</search>
+ <replace>// Msg_WFMO_Reactor.cpp</replace>
+</substitute>
+
+<!-- Do not build the WFMO Reactor -->
+<substitute>
+ <search>WFMO_Reactor.cpp</search>
+ <replace>// WFMO_Reactor.cpp</replace>
+</substitute>
+
+<!-- Do not build the Reactor Impl -->
+<substitute>
+ <search>Reactor_Impl.cpp</search>
+ <replace>// Reactor_Impl.cpp</replace>
+</substitute>
+<substitute>
+ <search>Reactor_Impl.h</search>
+ <replace>// Reactor_Impl.h</replace>
+</substitute>
+
+<!-- Do not build the Dev Poll Reactor -->
+<substitute>
+ <search>Dev_Poll_Reactor.cpp</search>
+ <replace>// Dev_Poll_Reactor.cpp</replace>
+</substitute>
+
+<!-- Do not build the priority Reactor -->
+<substitute>
+ <search>Priority_Reactor.cpp</search>
+ <replace>// Priority_Reactor.cpp</replace>
+</substitute>
+
+<!-- Do not build the Reactor_Timer_Interface -->
+<substitute>
+ <search>Reactor_Timer_Interface.h</search>
+ <replace>// Reactor_Timer_Interface.h</replace>
+</substitute>
+<substitute>
+ <search>Reactor_Timer_Interface.cpp</search>
+ <replace>// Reactor_Timer_Interface.cpp </replace>
+</substitute>
+
+</file>
+
+</module>
+
+<!-- transformations required in TAO to work with a select reactor -->
+<module name="TAO/tao">
+
+<!-- Changes to default_resource.h -->
+<file name="default_resource.h">
+
+<!-- Remove the forward declaration of ACE_Reactor_Impl -->
+<substitute match-line="yes">
+<search>class ACE_Reactor_Impl;</search>
+<replace>#include "ace/Reactor.h"</replace>
+</substitute>
+
+<!-- Replace all occurences of ACE_Reactor_Impl with
+ ACE_Select_Reactor -->
+<substitute>
+ <search>ACE_Reactor_Impl</search>
+ <replace>ACE_Select_Reactor</replace>
+</substitute>
+
+</file>
+
+<!-- Changes to default_resource.cpp -->
+<file name="default_resource.cpp">
+
+<!-- Remove the occurence of TP_Reactor -->
+<remove>#include "ace/TP_Reactor.h"</remove>
+
+<!-- Replace all occurences of ACE_Reactor_Impl with
+ ACE_Select_Reactor -->
+<substitute>
+ <search>ACE_Reactor_Impl</search>
+ <replace>ACE_Select_Reactor</replace>
+</substitute>
+
+<!-- Comment out the code that creates TP_Reactor -->
+<comment>
+ <start-hook>TAO_REACTOR_SPL_COMMENT_HOOK_START</start-hook>
+ <end-hook>TAO_REACTOR_SPL_COMMENT_HOOK_END</end-hook>
+</comment>
+
+<!-- Add hook to add code that creates the select reactor
+ component -->
+<add>
+ <!-- We use the same hook that signifies where the comment code
+ ended to add the concrete Reactor type -->
+ <hook>TAO_REACTOR_SPL_COMMENT_HOOK_END</hook>
+ <data>
+ ACE_NEW_RETURN (impl,
+ TAO_REACTOR ((ACE_Sig_Handler*)0,
+ (ACE_Timer_Queue*)0,
+ 0,
+ (ACE_Select_Reactor_Notify*)0,
+ this->reactor_mask_signals_),
+ 0);
+ </data>
+</add>
+</file>
+
+<!-- changes to tao.mpc -->
+<file name="tao.mpc">
+ <substitute>
+ <search>GUIResource_Factory.cpp</search>
+ <replace>// GUIResource_Factory.cpp</replace>
+ </substitute>
+ <substitute>
+ <search>GUIResource_Factory.h</search>
+ <replace>// GUIResource_Factory.h</replace>
+ </substitute>
+</file>
+
+</module>
+
+<module name="TAO/tao/Strategies">
+
+<file name="advanced_resource.h">
+
+<!-- Replace all occurances of ACE_Reactor_Impl with
+ Select_Reactor
+ -->
+<substitute>
+ <search>ACE_Reactor_Impl</search>
+ <replace>ACE_Select_Reactor</replace>
+</substitute>
+
+</file>
+
+<file name="advanced_resource.cpp">
+
+<!-- Comment out all other reactor includes -->
+<remove>#include "ace/FlReactor.h"</remove>
+<remove>#include "ace/TkReactor.h"</remove>
+<remove>#include "ace/WFMO_Reactor.h"</remove>
+<remove>#include "ace/TP_Reactor.h"</remove>
+<remove>#include "ace/Msg_WFMO_Reactor.h"</remove>
+
+<substitute>
+ <search>ACE_Reactor_Impl</search>
+ <replace>ACE_Select_Reactor</replace>
+</substitute>
+
+<!-- Replace Select_Reactor.h with Reactor.h -->
+<substitute>
+ <search>ace/Select_Reactor.h</search>
+ <replace>ace/Reactor.h</replace>
+</substitute>
+
+<!-- Comment out creation code for all other reactors -->
+<comment>
+ <start-hook>TAO_ADVANCED_RESOURCE_REACTOR_SPL_COMMENT_HOOK_START</start-hook>
+ <end-hook>TAO_ADVANCED_RESOURCE_REACTOR_SPL_COMMENT_HOOK_END</end-hook>
+</comment>
+
+<!-- Use the end hook to insert code that will create right reactor -->
+<add>
+ <hook>TAO_ADVANCED_RESOURCE_REACTOR_SPL_COMMENT_HOOK_END</hook>
+ <data>
+ ACE_NEW_RETURN (impl,
+ TAO_REACTOR ((ACE_Sig_Handler*)0,
+ (ACE_Timer_Queue*)0,
+ 0,
+ (ACE_Select_Reactor_Notify*)0,
+ this->reactor_mask_signals_),
+ 0);
+ </data>
+</add>
+
+</file>
+
+</module>
+
+</transform>