summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOssama Othman <ossama-othman@users.noreply.github.com>2002-05-15 22:46:00 +0000
committerOssama Othman <ossama-othman@users.noreply.github.com>2002-05-15 22:46:00 +0000
commitbb47c0364d38ffeeaf2114b56518985aae01a3d9 (patch)
treed5e0d6bb1ed0e39a85b694dabe11e0ecb36190f3
parentca357f7f35c4badc3e173884401a3d44d58ec96f (diff)
downloadATCD-bb47c0364d38ffeeaf2114b56518985aae01a3d9.tar.gz
ChangeLogTag:Wed May 15 15:44:54 2002 Ossama Othman <ossama@uci.edu>
-rw-r--r--TAO/ChangeLogs/ChangeLog-02a24
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/interface_sh.cpp6
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/interface_ss.cpp12
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/operation_sh.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/operation_ss.cpp32
5 files changed, 61 insertions, 15 deletions
diff --git a/TAO/ChangeLogs/ChangeLog-02a b/TAO/ChangeLogs/ChangeLog-02a
index 3ffeacf7050..4f108ee6218 100644
--- a/TAO/ChangeLogs/ChangeLog-02a
+++ b/TAO/ChangeLogs/ChangeLog-02a
@@ -1,3 +1,27 @@
+Wed May 15 15:44:54 2002 Ossama Othman <ossama@uci.edu>
+
+ * TAO_IDL/be/be_visitor_interface/interface_sh.cpp
+ (visit_interface):
+ * TAO_IDL/be/be_visitor_interface/interface_ss.cpp
+ (visit_interface):
+ * TAO_IDL/be/be_visitor_operation/operation_sh.cpp
+ (visit_operation):
+ * TAO_IDL/be/be_visitor_operation/operation_ss.cpp
+ (visit_operation):
+
+ Clarified one of the "_skel" method parameter names. A pointer
+ to a servant is passed in, not an object reference. Renamed
+ "_tao_object_reference" to "_tao_servant."
+
+ From Eric Malenfant <EMalenfant@interstarinc.com>:
+ * TAO_IDL/be/be_visitor_operation/operation_ss.cpp
+ (visit_operation):
+
+ Fixed generated skeleton code so that the upcall is not made if
+ the ServerRequestInterceptor::receive_request() interception
+ point caused a location forward to occur
+ (i.e. PortableInterceptor::ForwardRequest was thrown).
+
Wed May 15 15:20:15 2002 Jeff Parsons <parsons@cs.wustl.edu>
* orbsvcs/orbsvcs/IFRService/ConstantDef_i.cpp:
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_sh.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_sh.cpp
index bbb32209225..a011fd31ded 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/interface_sh.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_sh.cpp
@@ -156,7 +156,7 @@ be_visitor_interface_sh::visit_interface (be_interface *node)
// Add a skeleton for our _is_a method.
*os << "static void _is_a_skel (" << be_idt << be_idt_nl
<< "TAO_ServerRequest &req," << be_nl
- << "void *obj," << be_nl
+ << "void *servant," << be_nl
<< "void *servant_upcall" << be_nl
<< "ACE_ENV_ARG_DECL" << be_uidt_nl
<< ");\n" << be_uidt_nl;
@@ -164,7 +164,7 @@ be_visitor_interface_sh::visit_interface (be_interface *node)
// Add a skeleton for our _non_existent method.
*os << "static void _non_existent_skel (" << be_idt << be_idt_nl
<< "TAO_ServerRequest &req," << be_nl
- << "void *obj," << be_nl
+ << "void *servant," << be_nl
<< "void *servant_upcall" << be_nl
<< "ACE_ENV_ARG_DECL" << be_uidt_nl
<< ");\n" << be_uidt_nl;
@@ -172,7 +172,7 @@ be_visitor_interface_sh::visit_interface (be_interface *node)
// Add a skeleton for our _interface method.
*os << "static void _interface_skel (" << be_idt << be_idt_nl
<< "TAO_ServerRequest &req," << be_nl
- << "void *obj," << be_nl
+ << "void *servant," << be_nl
<< "void *servant_upcall" << be_nl
<< "ACE_ENV_ARG_DECL" << be_uidt_nl
<< ");\n" << be_uidt_nl;
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_ss.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_ss.cpp
index 8686a4bf0ac..0278ab39ae4 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/interface_ss.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_ss.cpp
@@ -164,14 +164,14 @@ be_visitor_interface_ss::visit_interface (be_interface *node)
*os << "void " << full_skel_name
<< "::_is_a_skel (" << be_idt << be_idt_nl
<< "TAO_ServerRequest &_tao_server_request, " << be_nl
- << "void * _tao_object_reference," << be_nl
+ << "void * _tao_servant," << be_nl
<< "void * /* Servant_Upcall */" << be_nl
<< "ACE_ENV_ARG_DECL" << be_uidt_nl
<< ")" << be_uidt_nl;
*os << "{" << be_idt_nl;
*os << "TAO_InputCDR &_tao_in = _tao_server_request.incoming ();" << be_nl;
*os << full_skel_name << " *_tao_impl = ("
- << full_skel_name << " *) _tao_object_reference;" << be_nl;
+ << full_skel_name << " *) _tao_servant;" << be_nl;
*os << "CORBA::Boolean _tao_retval = 0;" << be_nl;
*os << "CORBA::String_var value;" << be_nl;
*os << "if (!(_tao_in >> value.out ()))" << be_idt_nl;
@@ -210,13 +210,13 @@ be_visitor_interface_ss::visit_interface (be_interface *node)
*os << "void " << full_skel_name
<< "::_non_existent_skel (" << be_idt << be_idt_nl
<< "TAO_ServerRequest &_tao_server_request, " << be_nl
- << "void * _tao_object_reference," << be_nl
+ << "void * _tao_servant," << be_nl
<< "void * /* Servant_Upcall */" << be_nl
<< "ACE_ENV_ARG_DECL" << be_uidt_nl
<< ")" << be_uidt_nl;
*os << "{" << be_idt_nl;
*os << full_skel_name << " *_tao_impl = ("
- << full_skel_name << " *) _tao_object_reference;" << be_nl;
+ << full_skel_name << " *) _tao_servant;" << be_nl;
*os << "CORBA::Boolean _tao_retval =" << be_idt_nl
<< "_tao_impl->_non_existent (ACE_ENV_SINGLE_ARG_PARAMETER);"
<< be_uidt_nl;
@@ -237,13 +237,13 @@ be_visitor_interface_ss::visit_interface (be_interface *node)
*os << "void " << full_skel_name
<< "::_interface_skel (" << be_idt << be_idt_nl
<< "TAO_ServerRequest &_tao_server_request, " << be_nl
- << "void * _tao_object_reference," << be_nl
+ << "void * _tao_servant," << be_nl
<< "void * /* Servant_Upcall */" << be_nl
<< "ACE_ENV_ARG_DECL" << be_uidt_nl
<< ")" << be_uidt_nl;
*os << "{" << be_idt_nl;
*os << full_skel_name << " *_tao_impl = ("
- << full_skel_name << " *) _tao_object_reference;" << be_nl
+ << full_skel_name << " *) _tao_servant;" << be_nl
<< "CORBA_InterfaceDef_ptr _tao_retval = 0;" << be_nl
<< "CORBA::Boolean _tao_result = 0;" << be_nl << be_nl;
*os << "TAO_IFR_Client_Adapter *_tao_adapter =" << be_idt_nl
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/operation_sh.cpp b/TAO/TAO_IDL/be/be_visitor_operation/operation_sh.cpp
index 096fc8a6633..41ebae411c1 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/operation_sh.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/operation_sh.cpp
@@ -136,7 +136,7 @@ be_visitor_operation_sh::visit_operation (be_operation *node)
*os << node->local_name () <<
"_skel (" << be_idt << be_idt_nl
<< "TAO_ServerRequest &_tao_req," << be_nl
- << "void *_tao_obj," << be_nl
+ << "void *_tao_servant," << be_nl
<< "void *_tao_servant_upcall" << be_nl
<< "ACE_ENV_ARG_DECL" << be_uidt_nl
<< ");" << be_uidt << "\n\n";
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/operation_ss.cpp b/TAO/TAO_IDL/be/be_visitor_operation/operation_ss.cpp
index af39de154e1..d5420b63ba6 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/operation_ss.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/operation_ss.cpp
@@ -125,7 +125,7 @@ be_visitor_operation_ss::visit_operation (be_operation *node)
*os << node->local_name ()
<< "_skel (" << be_idt << be_idt_nl
<< "TAO_ServerRequest &_tao_server_request," << be_nl
- << "void *_tao_object_reference," << be_nl
+ << "void *_tao_servant," << be_nl
<< "void *_tao_servant_upcall" << be_nl
<< "ACE_ENV_ARG_DECL" << be_uidt_nl
<< ")" << be_uidt_nl;
@@ -151,7 +151,7 @@ be_visitor_operation_ss::visit_operation (be_operation *node)
*os << intf->full_skel_name () << " *_tao_impl =" << be_idt_nl
<< "ACE_static_cast (" << be_idt << be_idt_nl
<< intf->full_skel_name () << " *," << be_nl
- << "_tao_object_reference" << be_uidt_nl
+ << "_tao_servant" << be_uidt_nl
<< ");" << be_uidt << be_uidt_nl;
// Declare a return type variable.
@@ -298,6 +298,12 @@ be_visitor_operation_ss::visit_operation (be_operation *node)
*os << "_tao_vfr.receive_request (&_tao_ri ACE_ENV_ARG_PARAMETER);" << be_nl
<< "ACE_TRY_CHECK;" << be_nl;
+ // Check if a PortableInterceptor::ForwardRequest was raised by
+ // ServerRequestInterceptor::receive_request().
+ *os << be_nl
+ << "if (!_tao_vfr.location_forwarded ())" << be_idt_nl
+ << "{" << be_idt_nl;
+
*os << "\n#endif /* TAO_HAS_INTERCEPTORS */\n";
// Make the upcall and assign to the return val.
@@ -356,9 +362,21 @@ be_visitor_operation_ss::visit_operation (be_operation *node)
// check for exception.
*os << "\n#if (TAO_HAS_INTERCEPTORS == 1)" << be_nl;
- *os << be_uidt
+ // Close scope for "if (!_tao_vfr.location_forwarded ()"
+ *os << be_uidt_nl
+ << "}" << be_uidt_nl;
+
+ // Close the TAO_PICurrent_Guard scope
+ *os << be_uidt_nl
<< "}" << be_nl << be_nl;
+ // Set reply status only if no PortableInterceptor::ForwardRequest
+ // was raised by ServerRequestInterceptor::receive_request(). We
+ // have to make this check a second time because the scope of the
+ // first check overlaps with the scope of TAO_PICurrent_Guard.
+ *os << "if (!_tao_vfr.location_forwarded ())" << be_idt_nl
+ << "{" << be_idt_nl;
+
// Grab the right visitor to generate the return type accessor if
// it's not void since we can't have a private member to be of void
// type.
@@ -407,6 +425,10 @@ be_visitor_operation_ss::visit_operation (be_operation *node)
<< "_tao_vfr.send_reply (&_tao_ri ACE_ENV_ARG_PARAMETER);"<< be_nl
<< "ACE_TRY_CHECK;" << be_uidt_nl;
+ // Close scope of the "if (!_tao_vfr.location_forwarded()"
+ // conditional block.
+ *os << be_uidt << "}" << be_uidt_nl;
+
*os << "}" << be_uidt_nl
<< "ACE_CATCHANY" << be_idt_nl
<< "{" << be_idt_nl;
@@ -465,9 +487,9 @@ be_visitor_operation_ss::visit_operation (be_operation *node)
*os << "// In case _tao_servant_upcall is not used in this function"
<< be_nl
- << "ACE_UNUSED_ARG (_tao_servant_upcall);" << be_nl << be_nl;
+ << "ACE_UNUSED_ARG (_tao_servant_upcall);" << be_nl;
- *os << be_uidt << "}\n\n";
+ *os << be_uidt_nl << "}\n\n";
return 0;
}