<?xml version="1.0"?>

<!-- Wait Strategy Specialization
 *   ===============================
 *   Details all the specialization transformations necessary
 *   to specialize the Wait_Strategy with the Wait_On_Read strategy
 *
 *   @author Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
-->

<transform>

<module name="TAO/tao">

<file name="Wait_Strategy.cpp">

<!-- Copy specialized code from the Wait_On_Read strategy
     to this file -->

<copy-from-source>

 <!-- Name of the source file from which to copy. In this case, this is
      the Wait_On_Read source file -->
 <source>Wait_On_Read.cpp</source>

 <!-- Copy data between the following hooks defined in the aforementioned
      file -->
 <copy-hook-start>WAIT_STRATEGY_SPL_COPY_HOOK_START</copy-hook-start>
 <copy-hook-end>WAIT_STRATEGY_SPL_COPY_HOOK_END</copy-hook-end>

 <!-- Destination hook in the Wait_Strategy.h file where the code
      should be placed -->
 <dest-hook>TAO_WAIT_STRATEGY_SPL_ADD_HOOK</dest-hook>

</copy-from-source>

<!-- Copy include files to the hook to get the necessary include files -->
<add>
 <hook>WAIT_STRATEGY_SPL_COPY_HOOK_START</hook>
 <data>
#include "tao/Wait_On_Read.h"
#include "tao/Transport.h"
#include "tao/Resume_Handle.h"
#include "tao/Synch_Reply_Dispatcher.h"
#include "tao/Client_Strategy_Factory.h"
#include "tao/ORB_Core.h"
#include "ace/Reactor.h"
#include "ace/Countdown_Time.h"
 </data>
</add>

<!-- Once this is done, replace all occurences of TAO_Wait_On_Read with
     TAO_Wait_Strategy -->
<substitute>
 <search>TAO_Wait_On_Read</search>
 <replace>TAO_Wait_Strategy</replace>
</substitute>

</file>

<file name="Wait_Strategy.h">

<!-- Remove all occurances of virtual -->
<remove>virtual</remove>
<remove>= 0</remove>

</file>

<file name="default_client.cpp">

<comment>
 <start-hook>WAIT_STRATEGY_SPL_COMMENT_HOOK_START</start-hook>
 <end-hook>WAIT_STRATEGY_SPL_COMMENT_HOOK_END</end-hook>
</comment>

<add>
 <hook>WAIT_STRATEGY_SPL_COMMENT_HOOK_END</hook>
 <data>
    ACE_NEW_RETURN (ws,
                    TAO_Wait_Strategy (transport),
                    0);
 </data>
</add>

</file>

<file name="tao.mpc">

<!-- Do not build the other Wait strategy classes -->
<substitute>
 <search>Wait_On_Read.h</search>
 <replace>// Wait_On_Read.cpp</replace>
</substitute>
<substitute>
 <search>Wait_On_Read.cpp</search>
 <replace>// Wait_On_Read.cpp</replace>
</substitute>

<substitute>
 <search>Wait_On_Reactor.h</search>
 <replace>// Wait_On_Reactor.cpp</replace>
</substitute>
<substitute>
 <search>Wait_On_Reactor.cpp</search>
 <replace>// Wait_On_Reactor.cpp</replace>
</substitute>

<substitute>
 <search>Wait_On_Leader_Follower.h</search>
 <replace>// Wait_On_Leader_Follower.cpp</replace>
</substitute>
<substitute>
 <search>Wait_On_Leader_Follower.cpp</search>
 <replace>// Wait_On_Leader_Follower.cpp</replace>
</substitute>

<substitute>
 <search>Wait_On_LF_No_Upcall.h</search>
 <replace>// Wait_On_LF_No_Upcall.cpp</replace>
</substitute>
<substitute>
 <search>Wait_On_LF_No_Upcall.cpp</search>
 <replace>// Wait_On_LF_No_Upcall.cpp</replace>
</substitute>

</file>

</module>

</transform>
