<?xml version="1.0"?>

<!-- Pluggable Messaging Specializations:
 *    When the concrete pluggable messaging is selected,
 *    this specialization removes the need for the Pluggable
 *    messaging interface completely from within TAO.
 *
 *    @author Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
 *    $Id: GIOP.spl 75377 2006-11-14 15:23:56Z johnnyw $
-->

<transform>

<!-- Define the module where there are multiple files -->
<module name="TAO/tao">

<file name="tao.mpc">

<!-- Remove Pluggable messaging include altogether -->
<substitute>
 <search>GIOP_Message_Lite.cpp</search>
 <replace>// GIOP_Message_Lite.cpp </replace>
</substitute>
<substitute>
 <search>GIOP_Message_Lite.h</search>
 <replace>// GIOP_Message_Lite.h</replace>
</substitute>
<substitute>
 <search>Pluggable_Messaging.h</search>
 <replace>// Pluggable_Messaging.h</replace>
</substitute>
<substitute>
 <search>Pluggable_Messaging.cpp</search>
 <replace>// Pluggable_Messaging.cpp</replace>
</substitute>

</file>

<file name="On_Demand_Fragmentation_Strategy.cpp">

<!-- Remove Pluggable Messaging include directive -->
<remove>#include "tao/Pluggable_Messaging.h"</remove>

</file>

<file name="GIOP_Message_Base.h">

<!-- Remove Pluggable Messaging include directive -->
<remove>#include "tao/Pluggable_Messaging.h"</remove>

<!-- Remove all occurences of virtual keyword -->
<remove>virtual</remove>

<!-- Remove inheritance from Pluggable Messaging replace with
     concrete class
-->
<remove>: public TAO_Pluggable_Messaging</remove>

<!-- Typedef the concrete type, GIOP_Message_Base as the
     underlying pluggable messaging type
  -->
<add>
  <hook>MESSAGING_SPL_EXTERN_ADD_HOOK</hook>
  <data>typedef TAO_GIOP_Message_Base TAO_Pluggable_Messaging;</data>
</add>

<!-- The method is_ready_for_bi_directional_giop is procted, this
     should be made public -->
<substitute match-line="yes">
 <!-- Operation signature -->
 <search>int is_ready_for_bidirectional \(TAO_OutputCDR &amp;msg\);</search>
 <replace>

public:
  int is_ready_for_bidirectional (TAO_OutputCDR &amp;msg);

protected:
 </replace>
</substitute>

</file>

<file name="IIOP_Connection_Handler.h">

<!-- remove forward decls -->
<remove>class TAO_Pluggable_Messaging;</remove>

</file>

<file name="IIOP_Transport.h">

<!-- remove forward decls -->
<remove>class TAO_Pluggable_Messaging;</remove>

</file>

<file name="TAO_Server_Request.h">

<!-- Remove Pluggable messaging include altogether -->
<substitute match-line="yes">
 <search>class TAO_Pluggable_Messaging;</search>
 <replace>#include "tao/GIOP_Message_Base.h"</replace>
</substitute>

</file>

<file name="TAO_Server_Request.cpp">

<!-- Remove Pluggable messaging include altogether -->
<remove>#include "tao/Pluggable_Messaging.h"</remove>

</file>

<file name="Transport.h">
<!-- Remove Pluggable messaging include altogether -->
<substitute match-line="yes">
 <search>class TAO_Pluggable_Messaging;</search>
 <replace>#include "tao/GIOP_Message_Base.h"</replace>
</substitute>
</file>

<file name="Transport.cpp">
 <remove>#include "tao/Pluggable_Messaging.h"</remove>
</file>

</module>

<!-- Transformations to the Messaging Directory -->
<module name="TAO/tao/Messaging">

<file name="AMH_Response_Handler.h">

<substitute match-line="yes">
 <search>class TAO_Pluggable_Messaging;</search>
 <replace>#include "tao/GIOP_Message_Base.h"</replace>
</substitute>

</file>

<file name="AMH_Response_Handler.cpp">
 <remove>#include "tao/Pluggable_Messaging.h"</remove>
</file>

<file name="AMH_Response_Handler.cpp">
<substitute match-line="yes">
 <search>#include "tao/Pluggable_Messaging.h"</search>
 <replace>#include "tao/GIOP_Message_Base.h"</replace>
</substitute>
</file>

<file name="Asynch_Invocation.cpp">
 <remove>#include "tao/Pluggable_Messaging.h"</remove>
 <replace>#include "tao/GIOP_Message_Base.h"</replace>
</file>

</module>

<module name="TAO/tao/Strategies">

<file name="DIOP_Connection_Handler.h">
 <remove>class TAO_Pluggable_Messaging;</remove>
</file>

<file name="DIOP_Transport.h">
 <remove>class TAO_Pluggable_Messaging;</remove>
</file>

<file name="DIOP_Transport.cpp">

 <!-- Replace GIOP_Lite with GIOP -->
<comment>
 <start-hook>MESSAGING_SPL_COMMENT_HOOK_START</start-hook>
 <end-hook>MESSAGING_SPL_COMMENT_HOOK_END</end-hook>
</comment>

<add>
 <hook>MESSAGING_SPL_COMMENT_HOOK_END</hook>
 <data>
    ACE_NEW (this->messaging_object_,
               TAO_GIOP_Message_Base (orb_core,
                                      this,
                                      ACE_MAX_DGRAM_SIZE));
 </data>
</add>

 <remove>#include "tao/GIOP_Message_Lite.h"</remove>

</file>

<file name="SHMIOP_Transport.h">
 <remove>class TAO_Pluggable_Messaging;</remove>
</file>

<file name="SHMIOP_Transport.cpp">
 <remove>#include "tao/GIOP_Message_Lite.h"</remove>

 <!-- Replace GIOP_Lite with GIOP -->
<comment>
 <start-hook>MESSAGING_SPL_COMMENT_HOOK_START</start-hook>
 <end-hook>MESSAGING_SPL_COMMENT_HOOK_END</end-hook>
</comment>

<add>
 <hook>MESSAGING_SPL_COMMENT_HOOK_END</hook>
 <data>
    ACE_NEW (this->messaging_object_,
               TAO_GIOP_Message_Base (orb_core,
                                      this));
 </data>
</add>

</file>

<file name="UIOP_Connection_Handler.h">
 <remove>class TAO_Pluggable_Messaging;</remove>
</file>

<file name="UIOP_Connection_Handler.cpp">
 <remove>#include "tao/GIOP_Message_Lite.h"</remove>
</file>

<file name="UIOP_Transport.h">
 <remove>class TAO_Pluggable_Messaging;</remove>
</file>

<file name="UIOP_Transport.cpp">

 <!-- Replace GIOP_Lite with GIOP -->
<comment>
 <start-hook>MESSAGING_SPL_COMMENT_HOOK_START</start-hook>
 <end-hook>MESSAGING_SPL_COMMENT_HOOK_END</end-hook>
</comment>

<add>
 <hook>MESSAGING_SPL_COMMENT_HOOK_END</hook>
 <data>
    ACE_NEW (this->messaging_object_,
               TAO_GIOP_Message_Base (orb_core,
                                      this));
 </data>
</add>
 <remove>#include "tao/GIOP_Message_Lite.h"</remove>
</file>
</module>

<module name="TAO/tao/DynamicInterface">
 <file name="DII_Invocation_Adapter.cpp">
  <substitute match-line="yes">
    <search>#include "tao/Pluggable_Messaging.h"</search>
    <replace>#include "tao/GIOP_Message_Base.h"</replace>
  </substitute>
 </file>
</module>

</transform>
