summaryrefslogtreecommitdiff
path: root/bin/FOCUS/specializations/Context-Specific-Optimizations/Dispatch-Resolution-Optimization.spl
diff options
context:
space:
mode:
Diffstat (limited to 'bin/FOCUS/specializations/Context-Specific-Optimizations/Dispatch-Resolution-Optimization.spl')
-rw-r--r--bin/FOCUS/specializations/Context-Specific-Optimizations/Dispatch-Resolution-Optimization.spl172
1 files changed, 0 insertions, 172 deletions
diff --git a/bin/FOCUS/specializations/Context-Specific-Optimizations/Dispatch-Resolution-Optimization.spl b/bin/FOCUS/specializations/Context-Specific-Optimizations/Dispatch-Resolution-Optimization.spl
deleted file mode 100644
index c56543cf54f..00000000000
--- a/bin/FOCUS/specializations/Context-Specific-Optimizations/Dispatch-Resolution-Optimization.spl
+++ /dev/null
@@ -1,172 +0,0 @@
-<?xml version="1.0"?>
-
-<!-- Dispatch Resolution Optimization
- * ================================
- * This optimization should be applied with the requests
- * from a client are delivered to the same operation in
- * an IDL interface. In general this optimization applies
- * to IDL interfaces that have a single operation defined
- * on them
- *
- * @author Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
- * $Id$
--->
-
-<transform>
-
-<module name="TAO/tao">
-
-<file name="Connection_Handler.h">
-
-<!-- Include file to be added for this specialization -->
-<add>
- <hook>CONNECTION_HANDLER_SPL_INCLUDE_FORWARD_DECL_ADD_HOOK</hook>
- <data>
- class TAO_Servant_Base;
- #include "tao/Abstract_Servant_Base.h"
- </data>
-</add>
-
-<!-- Add get and set operations to hold operation signature -->
-<add>
- <hook>CONNECTION_HANDLER_SPL_PRIVATE_DATA_ADD_HOOK</hook>
- <data>
-TAO_Skeleton op_signature_;
-TAO_Servant_Base *servant_;
- </data>
-</add>
-
-<!-- Add get and set public operations for the data -->
-<add>
- <hook>CONNECTION_HANDLER_SPL_PUBLIC_METHODS_ADD_HOOK</hook>
- <data>
-void set_op_signature (TAO_Skeleton &amp;skeleton,
- TAO_Servant_Base *&amp;servant);
-void get_op_signature (TAO_Skeleton &amp;operation_ptr,
- TAO_Servant_Base *&amp;servant);
- </data>
-</add>
-
-</file>
-
-<file name="Connection_Handler.inl">
-
-<!-- Add operations to get and set the operation signature -->
-<add>
- <hook>CONNECTION_HANDLER_SPL_METHODS_ADD_HOOK</hook>
- <data>
- ACE_INLINE void
- TAO_Connection_Handler::set_op_signature (TAO_Skeleton &amp;skeleton,
- TAO_Servant_Base *&amp;servant)
-{
- this->op_signature_ = skeleton;
- this->servant_ = servant;
-}
-
-ACE_INLINE void
-TAO_Connection_Handler::get_op_signature (TAO_Skeleton &amp;operation_ptr,
- TAO_Servant_Base *&amp;servant)
-{
- operation_ptr = this->op_signature_;
- servant = this->servant_;
-}
-
- </data>
-</add>
-</file>
-
-<file name="GIOP_Message_Base.h">
-
-<add>
-<hook>GIOP_MESSAGE_BASE_DATA_MEMBER_ADD_HOOK</hook>
-<data>bool once__;</data>
-</add>
-</file>
-
-<file name="GIOP_Message_Base.cpp">
-
-<add>
- <hook>GIOP_MESSAGE_BASE_INCLUDE_ADD_HOOK</hook>
- <data>#include "tao/Connection_Handler.h"</data>
-</add>
-
-<!-- Add a once__ data member to the class that will
- only resolve the dispatch once -->
-<substitute match-line="yes">
- <search>TAO_DEF_GIOP_MINOR\)</search>
- <replace>TAO_DEF_GIOP_MINOR)
- , once__ (1)
- </replace>
-</substitute>
-
-<!-- Comment code that resolves dispatch normally -->
-<comment>
- <start-hook>TAO_DISPATCH_RESOLUTION_OPT_COMMENT_HOOK_START</start-hook>
- <end-hook>TAO_DISPATCH_RESOLUTION_OPT_COMMENT_HOOK_END</end-hook>
-</comment>
-
-<!-- Add the optimized path code -->
-<add>
- <hook>TAO_DISPATCH_RESOLUTION_OPT_COMMENT_HOOK_END</hook>
- <data>
- if (once__)
- {
- once__ = false;
-
- // Normal path the first time
- this->orb_core_->request_dispatcher ()->dispatch (
- this->orb_core_,
- request,
- forward_to
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- else
- {
- // Dispatch directly to the skeleton
- TAO_Connection_Handler *handler =
- transport->connection_handler ();
- TAO_Skeleton skel;
- TAO_Servant_Base *skeleton_ptr;
- handler->get_op_signature (skel, skeleton_ptr);
-
- // Convert references to void *
- void *upcall_ptr = 0;
- skel (request,
- upcall_ptr,
- (void *)skeleton_ptr
- ACE_ENV_ARG_PARAMETER);
- if (response_required)
- request.tao_send_reply ();
- }
- </data>
-</add>
-</file>
-</module>
-
-<module name="TAO/tao/PortableServer">
-<file name="Servant_Base.cpp">
-
-<!-- Add necessary include files -->
-<add>
- <hook>TAO_SERVANT_BASE_INCLUDE_ADD_HOOK</hook>
- <data>#include "tao/Transport.h"</data>
- <data>#include "tao/Connection_Handler.h"</data>
-</add>
-
-<!-- After processing the first request, set the operation signature on
- the connection handler for subsequent request processing -->
-<add>
- <hook>TAO_DISPATCH_RESOLUTION_OPT_ADD_HOOK</hook>
- <data>
- TAO_Connection_Handler *handler =
- req.transport ()->connection_handler ();
- handler->set_op_signature (skel,
- static_cast&lt;TAO_Servant_Base *&gt; (derived_this));
- </data>
-</add>
-</file>
-
-</module>
-
-</transform>