summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_reply_stub_operation_cs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_operation/ami_handler_reply_stub_operation_cs.cpp')
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/ami_handler_reply_stub_operation_cs.cpp271
1 files changed, 12 insertions, 259 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_reply_stub_operation_cs.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_reply_stub_operation_cs.cpp
index e8a7aefc44e..be325370a40 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_reply_stub_operation_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_reply_stub_operation_cs.cpp
@@ -56,8 +56,6 @@ be_visitor_operation_ami_handler_reply_stub_operation_cs::post_process (
return 0;
}
-#if defined (TAO_HAS_DEPRECATED_EXCEPTION_HOLDER)
-
int
be_visitor_operation_ami_handler_reply_stub_operation_cs::visit_operation (
be_operation *node
@@ -130,14 +128,18 @@ be_visitor_operation_ami_handler_reply_stub_operation_cs::visit_operation (
// Generate the argument list.
*os << "TAO_InputCDR &_tao_in, " << be_nl
- << "::Messaging::ReplyHandler_ptr _tao_reply_handler," << be_nl
+ << "Messaging::ReplyHandler_ptr _tao_reply_handler," << be_nl
<< "::CORBA::ULong reply_status";
- << env_decl << ")" << be_uidt << be_uidt_nl;
+
+ *os << be_nl
+ << "ACE_ENV_ARG_DECL";
+
+ *os << ")" << be_uidt << be_uidt_nl;
// Generate the actual code for the stub. However, if any of the argument
// types is "native", we flag a MARSHAL exception.
// last argument - is always ACE_ENV_ARG_PARAMETER
- *os << "{" << be_idt_nl;
+ *os << "{\n" << be_idt;
// Generate any pre stub info if and only if none of our parameters is of the
// native type.
@@ -165,10 +167,9 @@ be_visitor_operation_ami_handler_reply_stub_operation_cs::visit_operation (
<< "_tao_reply_handler_object =" << be_idt_nl;
*os << parent->full_name ();
- *os << "::_narrow (_tao_reply_handler"
- << (be_global->use_raw_throw () ? "" : " ACE_ENV_ARG_PARAMETER")
- << ");" << be_uidt
- << TAO_ACE_CHECK () << be_nl << be_nl
+ *os << "::_narrow (_tao_reply_handler ACE_ENV_ARG_PARAMETER);" << be_uidt_nl;
+
+ *os << "ACE_CHECK;" << be_nl << be_nl
<< "// Exception handling" << be_nl
<< "switch (reply_status)" << be_nl
<< "{" << be_idt_nl
@@ -288,254 +289,6 @@ be_visitor_operation_ami_handler_reply_stub_operation_cs::visit_operation (
return 0;
}
-#else
-
-int
-be_visitor_operation_ami_handler_reply_stub_operation_cs::visit_operation (
- be_operation *node
- )
-{
- be_type *bt;
- be_visitor_context ctx;
-
- TAO_OutStream *os = this->ctx_->stream ();
- this->ctx_->node (node);
-
- // Initialize the return type variable.
- bt = be_type::narrow_from_decl (node->return_type ());
-
- if (!bt)
- {
- ACE_ERROR_RETURN ((
- LM_ERROR,
- "(%N:%l) be_visitor_ami_handler_reply_stub_operation_cs::"
- "visit_operation - "
- "Bad return type\n"
- ),
- -1
- );
- }
-
- // Start with the current indentation level.
- os->indent ();
-
- // Generate the return type. Return type is simply void.
- *os << be_nl << "void" << be_nl;
-
- // Get the scope name.
- be_decl *parent =
- be_scope::narrow_from_scope (node->defined_in ())->decl ();
-
- if (!parent)
- {
- ACE_ERROR_RETURN ((
- LM_ERROR,
- "(%N:%l) be_visitor_operation_ami_handler_reply_stub_operation_cs::"
- "visit_operation - "
- "node information not sufficient :-<\n"
- ),
- -1
- );
- }
-
- // Genereate scope name.
- *os << parent->full_name ();
-
- // Generate the operation name.
- *os << "::";
-
- // Check if we are an attribute node in disguise
- if (this->ctx_->attribute ())
- {
- // Now check if we are a "get" or "set" operation
- if (node->nmembers () == 1)
- {
- *os << "_set_";
- }
- else
- {
- *os << "_get_";
- }
- }
-
- *os << node->local_name () << "_reply_stub (" << be_idt_nl;
-
- // Generate the argument list.
- *os << "TAO_InputCDR &_tao_in, " << be_nl
- << "::Messaging::ReplyHandler_ptr _tao_reply_handler," << be_nl
- << "::CORBA::ULong reply_status"
- << env_decl << ")" << be_uidt << be_uidt_nl
- << "{" << be_idt_nl;
-
- *os << "// Retrieve Reply Handler object." << be_nl;
- *os << parent->full_name () << "_var "
- << "_tao_reply_handler_object =" << be_idt_nl;
-
- *os << parent->full_name ();
- *os << "::_narrow (_tao_reply_handler"
- << (be_global->use_raw_throw () ? "" : " ACE_ENV_ARG_PARAMETER")
- << ");" << be_uidt
- << TAO_ACE_CHECK () << be_nl << be_nl
- << "// Exception handling" << be_nl
- << "switch (reply_status)" << be_nl
- << "{" << be_idt_nl
- << "case TAO_AMI_REPLY_OK:" << be_nl
- << "{" << be_idt << "\n";
-
- // declare variables for arguments
- ctx = *this->ctx_;
- ctx.state (TAO_CodeGen::TAO_OPERATION_ARG_DECL_SS);
- be_visitor_operation_argument oad_visitor (&ctx);
-
- if (node->accept (&oad_visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) ami_handler_reply_stub_operation_cs::"
- "visit_operation - "
- "codegen for return var decl failed\n"),
- -1);
- }
-
- // Demarshal parameters
- if (this->gen_marshal_and_invoke (node, bt) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%1) ami_handler_reply_stub_operation_cs::"
- "visit_operation - "
- "gen_demarshal_params failed\n"),
- -1);
- }
-
- *os << "break;" << be_uidt_nl
- << "}" << be_nl
- << "case TAO_AMI_REPLY_USER_EXCEPTION:" << be_nl
- << "case TAO_AMI_REPLY_SYSTEM_EXCEPTION:" << be_nl
- << "{" << be_idt_nl
- << "const ACE_Message_Block* cdr = _tao_in.start ();" << be_nl ;
-
- be_interface *original =
- (be_interface::narrow_from_decl (parent))->original_interface ();
-
- if (!original)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%1) ami_handler_reply_stub_operation_cs::"
- "visit_operation - "
- "original interface is not set\n"),
- -1);
- }
-
- const char *exception_data_arg = "0";
- const char *exception_count_arg = "0";
-
- // Don't do anything if the exception list is empty.
- if (node->exceptions ())
- {
- *os << be_nl << "static TAO::Exception_Data " << "exceptions_data [] = " << be_nl;
- *os << "{" << be_idt_nl;
-
- int excep_count = 0;
-
- be_exception *ex = 0;
-
- // Initialize an iterator to iterate thru the exception list.
- // Continue until each element is visited.
- // Iterator must be explicitly advanced inside the loop.
- for (UTL_ExceptlistActiveIterator ei (node->exceptions ());
- !ei.is_done ();)
- {
- ex = be_exception::narrow_from_decl (ei.item ());
-
- *os << "{" << be_idt_nl
- << "\"" << ex->repoID () << "\"," << be_nl;
- // Allocator method.
- *os << ex->name () << "::_alloc"
- << "\n#if TAO_HAS_INTERCEPTORS == 1" << be_nl;
-
- if (be_global->tc_support ())
- {
- *os << ", " << ex->tc_name ();
- }
- else
- {
- *os << ", 0";
- }
-
- *os << "\n#endif /* TAO_HAS_INTERCEPTORS */" << be_uidt_nl
- << "}";
-
- ++excep_count;
- ei.next ();
-
- if (!ei.is_done ())
- {
- *os << "," << be_nl;
- }
-
- }
-
- *os << be_uidt_nl << "};" << be_nl << be_nl;
-
- *os << "::CORBA::ULong exceptions_count = "
- << excep_count << ";\n" << be_nl;
-
- exception_data_arg = "exceptions_data";
- exception_count_arg = "exceptions_count";
- }
-
- *os << "::CORBA::OctetSeq "
- << "_tao_marshaled_exception (" << be_idt << be_idt_nl
- << "static_cast <CORBA::ULong> (cdr->length ())," << be_nl
- << "static_cast <CORBA::ULong> (cdr->length ())," << be_nl
- << "reinterpret_cast <unsigned char*> (cdr->rd_ptr ())," << be_nl
- << "0" << be_uidt_nl
- << ");" << be_uidt_nl;
-
- *os << "::Messaging::ExceptionHolder* exception_holder_ptr = 0;" << be_nl
- << "ACE_NEW (" << be_idt << be_idt_nl
- << "exception_holder_ptr," << be_nl
- << "::TAO::ExceptionHolder (" << be_idt_nl
- << "(reply_status == TAO_AMI_REPLY_SYSTEM_EXCEPTION)," << be_nl
- << "_tao_in.byte_order ()," << be_nl
- << "_tao_marshaled_exception," << be_nl
- << exception_data_arg << "," << be_nl
- << exception_count_arg << ")" << be_uidt_nl
- << ");" << be_uidt_nl << be_uidt_nl;
-
- *os << "::Messaging::ExceptionHolder_var exception_holder_var = "
- << "exception_holder_ptr;" << be_nl;
-
- *os << "_tao_reply_handler_object->"
- << node->local_name () << "_excep (" << be_idt << be_idt_nl
- << "exception_holder_var";
-
- if (!be_global->exception_support ())
- {
- *os << " ACE_ENV_ARG_PARAMETER";
- }
-
- *os << be_uidt_nl << ");" << be_uidt_nl;
-
- if (!be_global->exception_support ())
- {
- *os << "ACE_CHECK;" << be_nl;
- }
-
- *os << "break;" << be_uidt_nl
- << "}" << be_nl;
-
- *os << "case TAO_AMI_REPLY_NOT_OK:" << be_idt_nl
- << "// @@ Michael: Not even the spec mentions this case." << be_nl
- << "// We have to think about this case." << be_nl
- << "break;" << be_uidt << be_uidt_nl
- << "}" << be_uidt << be_uidt_nl;
- *os << "}" << be_nl << be_nl;
-
- return 0;
-}
-
-#endif
-
// This method is used to generate the ParamData table entry.
int
be_visitor_operation_ami_handler_reply_stub_operation_cs::visit_argument (
@@ -690,8 +443,8 @@ be_visitor_operation_ami_handler_reply_stub_operation_cs::gen_marshal_and_invoke
-1);
}
- *os << be_uidt_nl << ");" << be_uidt
- << TAO_ACE_CHECK () << be_nl;
+ *os << be_uidt_nl << ");" << be_uidt_nl;
+ *os << "ACE_CHECK;" << be_nl;
return 0;
}