diff options
-rw-r--r-- | TAO/ChangeLog | 10 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/IFRService/ComponentContainer_i.cpp | 6 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/IFRService/Container_i.cpp | 26 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/IFRService/IFR_Service_Utils.cpp | 3 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/IFRService/InterfaceDef_i.cpp | 4 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/IFRService/OperationDef_i.cpp | 5 | ||||
-rw-r--r-- | TAO/orbsvcs/tests/InterfaceRepo/IFR_Test/Admin_Client.cpp | 15 | ||||
-rw-r--r-- | TAO/tao/Any.cpp | 43 | ||||
-rw-r--r-- | TAO/tao/Any_T.cpp | 11 | ||||
-rw-r--r-- | TAO/tao/Asynch_Queued_Message.cpp | 1 | ||||
-rw-r--r-- | TAO/tao/Sequence.h | 1 | ||||
-rw-r--r-- | TAO/tao/Synch_Queued_Message.cpp | 1 | ||||
-rw-r--r-- | TAO/tao/Thread_Lane_Resources.h | 1 |
13 files changed, 94 insertions, 33 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 1f4a0257b0d..890f81ea271 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -5,6 +5,8 @@ Fri Feb 21 19:38:19 2003 Jeff Parsons <j.parsons@vanderbilt.edu> * orbsvcs/orbsvcs/IFRService/IFR_Service_Utils.cpp: * orbsvcs/orbsvcs/IFRService/InterfaceDef_i.cpp: * orbsvcs/orbsvcs/IFRService/OperationDef_i.cpp: + * tao/Any_T.cpp: + * tao/Any.cpp: Fixed bugs turned up from running IFR_Test. @@ -13,6 +15,14 @@ Fri Feb 21 19:38:19 2003 Jeff Parsons <j.parsons@vanderbilt.edu> Changed test checks because AttributeDef creation no longer automatically creates corresponding OperationDef(s). + * tao/Asynch_Queued_Message.cpp: + * tao/Sequence.h: + * tao/Synch_Queued_Message.cpp: + * tao/Thread_Lane_Resources.h: + + Added an include file to each of these to get rid of + build errors. + Thu Feb 20 15:48:19 2003 Jeff Parsons <j.parsons@vanderbilt.edu> * orbsvcs/orbsvcs/IFRService.dsp: diff --git a/TAO/orbsvcs/orbsvcs/IFRService/ComponentContainer_i.cpp b/TAO/orbsvcs/orbsvcs/IFRService/ComponentContainer_i.cpp index acf1d33ef4e..6f8c6c1e390 100644 --- a/TAO/orbsvcs/orbsvcs/IFRService/ComponentContainer_i.cpp +++ b/TAO/orbsvcs/orbsvcs/IFRService/ComponentContainer_i.cpp @@ -70,7 +70,7 @@ TAO_ComponentContainer_i::create_component_i ( name, &TAO_ComponentContainer_i::same_as_tmp_name, version, - "defns\\" + "defns" ACE_ENV_ARG_PARAMETER ); ACE_CHECK_RETURN (CORBA::ComponentDef::_nil ()); @@ -198,7 +198,7 @@ TAO_ComponentContainer_i::create_home_i ( name, &TAO_ComponentContainer_i::same_as_tmp_name, version, - "defns\\" + "defns" ACE_ENV_ARG_PARAMETER ); ACE_CHECK_RETURN (CORBA::ComponentIR::HomeDef::_nil ()); @@ -324,7 +324,7 @@ TAO_ComponentContainer_i::create_event_i ( name, &TAO_ComponentContainer_i::same_as_tmp_name, version, - "defns\\" + "defns" ACE_ENV_ARG_PARAMETER ); ACE_CHECK_RETURN (CORBA::ComponentIR::EventDef::_nil ()); diff --git a/TAO/orbsvcs/orbsvcs/IFRService/Container_i.cpp b/TAO/orbsvcs/orbsvcs/IFRService/Container_i.cpp index ea21394e2f4..450bc7e1819 100644 --- a/TAO/orbsvcs/orbsvcs/IFRService/Container_i.cpp +++ b/TAO/orbsvcs/orbsvcs/IFRService/Container_i.cpp @@ -743,7 +743,7 @@ TAO_Container_i::create_module_i (const char *id, name, &TAO_Container_i::same_as_tmp_name, version, - "defns\\" + "defns" ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (CORBA::ModuleDef::_nil ()); @@ -802,7 +802,7 @@ TAO_Container_i::create_constant_i (const char *id, name, &TAO_Container_i::same_as_tmp_name, version, - "defns\\" + "defns" ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (CORBA::ConstantDef::_nil ()); @@ -896,7 +896,7 @@ TAO_Container_i::create_struct_i (const char *id, name, &TAO_Container_i::same_as_tmp_name, version, - "defns\\" + "defns" ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (CORBA::StructDef::_nil ()); @@ -1003,7 +1003,7 @@ TAO_Container_i::create_union_i (const char *id, name, &TAO_Container_i::same_as_tmp_name, version, - "defns\\" + "defns" ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (CORBA::UnionDef::_nil ()); @@ -1120,7 +1120,7 @@ TAO_Container_i::create_enum_i (const char *id, name, &TAO_Container_i::same_as_tmp_name, version, - "defns\\" + "defns" ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (CORBA::EnumDef::_nil ()); @@ -1210,7 +1210,7 @@ TAO_Container_i::create_alias_i (const char *id, name, &TAO_Container_i::same_as_tmp_name, version, - "defns\\" + "defns" ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (CORBA::AliasDef::_nil ()); @@ -1274,7 +1274,7 @@ TAO_Container_i::create_interface_i (const char *id, name, &TAO_Container_i::same_as_tmp_name, version, - "defns\\" + "defns" ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (CORBA::InterfaceDef::_nil ()); @@ -1378,7 +1378,7 @@ TAO_Container_i::create_value_i ( name, &TAO_Container_i::same_as_tmp_name, version, - "defns\\" + "defns" ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (CORBA::ValueDef::_nil ()); @@ -1592,7 +1592,7 @@ TAO_Container_i::create_value_box_i (const char *id, name, &TAO_Container_i::same_as_tmp_name, version, - "defns\\" + "defns" ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (CORBA::ValueBoxDef::_nil ()); @@ -1656,7 +1656,7 @@ TAO_Container_i::create_exception_i (const char *id, name, &TAO_Container_i::same_as_tmp_name, version, - "defns\\" + "defns" ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (CORBA::ExceptionDef::_nil ()); @@ -1744,7 +1744,7 @@ TAO_Container_i::create_native_i (const char *id, name, &TAO_Container_i::same_as_tmp_name, version, - "defns\\" + "defns" ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (CORBA::NativeDef::_nil ()); @@ -1804,7 +1804,7 @@ TAO_Container_i::create_abstract_interface_i ( name, &TAO_Container_i::same_as_tmp_name, version, - "defns\\" + "defns" ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (CORBA::AbstractInterfaceDef::_nil ()); @@ -1890,7 +1890,7 @@ TAO_Container_i::create_local_interface_i ( name, &TAO_Container_i::same_as_tmp_name, version, - "defns\\" + "defns" ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (CORBA::LocalInterfaceDef::_nil ()); diff --git a/TAO/orbsvcs/orbsvcs/IFRService/IFR_Service_Utils.cpp b/TAO/orbsvcs/orbsvcs/IFRService/IFR_Service_Utils.cpp index 32a77a4a3f0..ff810108929 100644 --- a/TAO/orbsvcs/orbsvcs/IFRService/IFR_Service_Utils.cpp +++ b/TAO/orbsvcs/orbsvcs/IFRService/IFR_Service_Utils.cpp @@ -857,7 +857,7 @@ TAO_IFR_Service_Utils::create_common ( // Create new section, or open if it already exists. ACE_Configuration_Section_Key sub_key; config->open_section (container_key, - "defns", + sub_section_name, 1, sub_key); @@ -942,6 +942,7 @@ TAO_IFR_Service_Utils::create_common ( } path += sub_section_name; + path += '\\'; path += section_name; // Store our path under our global repo id for fast lookup. diff --git a/TAO/orbsvcs/orbsvcs/IFRService/InterfaceDef_i.cpp b/TAO/orbsvcs/orbsvcs/IFRService/InterfaceDef_i.cpp index 8c02a8916a8..a2e43300776 100644 --- a/TAO/orbsvcs/orbsvcs/IFRService/InterfaceDef_i.cpp +++ b/TAO/orbsvcs/orbsvcs/IFRService/InterfaceDef_i.cpp @@ -646,7 +646,7 @@ TAO_InterfaceDef_i::create_attribute_i ( name, &TAO_Container_i::same_as_tmp_name, version, - "attrs\\" + "attrs" ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (CORBA::AttributeDef::_nil ()); @@ -739,7 +739,7 @@ TAO_InterfaceDef_i::create_operation_i (const char *id, name, &TAO_Container_i::same_as_tmp_name, version, - "ops\\" + "ops" ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (CORBA::AttributeDef::_nil ()); diff --git a/TAO/orbsvcs/orbsvcs/IFRService/OperationDef_i.cpp b/TAO/orbsvcs/orbsvcs/IFRService/OperationDef_i.cpp index 15058541e2c..ab9e7674eac 100644 --- a/TAO/orbsvcs/orbsvcs/IFRService/OperationDef_i.cpp +++ b/TAO/orbsvcs/orbsvcs/IFRService/OperationDef_i.cpp @@ -413,13 +413,16 @@ TAO_OperationDef_i::contexts_i (ACE_ENV_SINGLE_ARG_DECL) // IR objects so they can't be destroyed one at a time. To // make a change one has to call the mutator version of this // function and make a completely new list. - char *stringified = TAO_IFR_Service_Utils::int_to_string (index++); + char *stringified = TAO_IFR_Service_Utils::int_to_string (index); while (this->repo_->config ()->get_string_value (contexts_key, stringified, context) == 0) { context_queue.enqueue_tail (context); + ++index; + char *stringified = + TAO_IFR_Service_Utils::int_to_string (index); } } diff --git a/TAO/orbsvcs/tests/InterfaceRepo/IFR_Test/Admin_Client.cpp b/TAO/orbsvcs/tests/InterfaceRepo/IFR_Test/Admin_Client.cpp index 9146da5e428..e3ced1ffa55 100644 --- a/TAO/orbsvcs/tests/InterfaceRepo/IFR_Test/Admin_Client.cpp +++ b/TAO/orbsvcs/tests/InterfaceRepo/IFR_Test/Admin_Client.cpp @@ -942,7 +942,8 @@ Admin_Client::struct_test (ACE_ENV_SINGLE_ARG_DECL) ACE_ASSERT (!ACE_OS::strcmp (str.in (), members[i].name)); } - CORBA::Contained::Description_var desc = svar->describe (ACE_ENV_SINGLE_ARG_PARAMETER); + CORBA::Contained::Description_var desc = + svar->describe (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK; CORBA::TypeDescription *td; @@ -2317,9 +2318,9 @@ Admin_Client::interface_test (ACE_ENV_SINGLE_ARG_DECL) ACE_TEXT ("operations::length: %d\n"), length)); - ACE_ASSERT (length == 4); + ACE_ASSERT (length == 1); - length = fifd->operations[3].contexts.length (); + length = fifd->operations[0].contexts.length (); if (this->debug_) ACE_DEBUG ((LM_DEBUG, @@ -2331,7 +2332,7 @@ Admin_Client::interface_test (ACE_ENV_SINGLE_ARG_DECL) for (i = 0; i < length; i++) { - tmp = fifd->operations[3].contexts[i]; + tmp = fifd->operations[0].contexts[i]; if (this->debug_) ACE_DEBUG ((LM_DEBUG, @@ -2343,7 +2344,7 @@ Admin_Client::interface_test (ACE_ENV_SINGLE_ARG_DECL) ACE_ASSERT (!ACE_OS::strcmp (tmp, contexts[i])); } - length = fifd->operations[3].exceptions.length (); + length = fifd->operations[0].exceptions.length (); if (this->debug_) ACE_DEBUG ((LM_DEBUG, @@ -2355,7 +2356,7 @@ Admin_Client::interface_test (ACE_ENV_SINGLE_ARG_DECL) for (i = 0; i < length; i++) { - const char *tmp = fifd->operations[3].exceptions[i].name; + const char *tmp = fifd->operations[0].exceptions[i].name; if (this->debug_) ACE_DEBUG ((LM_DEBUG, @@ -2456,7 +2457,7 @@ Admin_Client::interface_test (ACE_ENV_SINGLE_ARG_DECL) ACE_TEXT ("\nInterfaceDef::contents::length: %d\n"), length)); - ACE_ASSERT (length == 6); + ACE_ASSERT (length == 3); for (i = 0; i < length; i++) { diff --git a/TAO/tao/Any.cpp b/TAO/tao/Any.cpp index 6ce0a706814..fc470c62668 100644 --- a/TAO/tao/Any.cpp +++ b/TAO/tao/Any.cpp @@ -337,11 +337,48 @@ void TAO::Unknown_IDL_Type::_tao_decode (TAO_InputCDR &cdr ACE_ENV_ARG_DECL) { + // @@ (JP) The following code depends on the fact that + // TAO_InputCDR does not contain chained message blocks, + // otherwise <begin> and <end> could be part of + // different buffers! + + // This will be the start of a new message block. + char *begin = cdr.rd_ptr (); + + // Skip over the next argument. + CORBA::TypeCode::traverse_status status = + TAO_Marshal_Object::perform_skip (this->type_, + &cdr + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + if (status != CORBA::TypeCode::TRAVERSE_CONTINUE) + { + ACE_THROW (CORBA::MARSHAL ()); + } + + // This will be the end of the new message block. + char *end = cdr.rd_ptr (); + + // The ACE_CDR::mb_align() call can shift the rd_ptr by up to + // ACE_CDR::MAX_ALIGNMENT-1 bytes. Similarly, the offset adjustment + // can move the rd_ptr by up to the same amount. We accommodate + // this by including 2 * ACE_CDR::MAX_ALIGNMENT bytes of additional + // space in the message block. + size_t size = end - begin; + ACE_Message_Block::release (this->cdr_); ACE_NEW (this->cdr_, - ACE_Message_Block); - ACE_CDR::consolidate (this->cdr_, - cdr.start ()); + ACE_Message_Block (size + 2 * ACE_CDR::MAX_ALIGNMENT)); + + ACE_CDR::mb_align (this->cdr_); + ptr_arith_t offset = ptr_arith_t (begin) % ACE_CDR::MAX_ALIGNMENT; + this->cdr_->rd_ptr (offset); + this->cdr_->wr_ptr (offset + size); + + ACE_OS::memcpy (this->cdr_->rd_ptr (), + begin, + size); } // **************************************************************** diff --git a/TAO/tao/Any_T.cpp b/TAO/tao/Any_T.cpp index 88372080b1b..cd6ed922252 100644 --- a/TAO/tao/Any_T.cpp +++ b/TAO/tao/Any_T.cpp @@ -773,9 +773,14 @@ TAO::Any_Dual_Impl_T<T>::extract (const CORBA::Any & any, 0); auto_ptr<TAO::Any_Dual_Impl_T<T> > replacement_safety (replacement); - - TAO_InputCDR cdr (impl->_tao_get_cdr (), - impl->_tao_byte_order ()); + ACE_Message_Block *mb = impl->_tao_get_cdr (); + TAO_InputCDR cdr (mb->data_block (), + ACE_Message_Block::DONT_DELETE, + mb->rd_ptr () - mb->base (), + mb->wr_ptr () - mb->base (), + impl->_tao_byte_order (), + TAO_DEF_GIOP_MAJOR, + TAO_DEF_GIOP_MINOR); CORBA::Boolean result = replacement->demarshal_value (cdr); diff --git a/TAO/tao/Asynch_Queued_Message.cpp b/TAO/tao/Asynch_Queued_Message.cpp index 86dab3697b9..b12a57221d6 100644 --- a/TAO/tao/Asynch_Queued_Message.cpp +++ b/TAO/tao/Asynch_Queued_Message.cpp @@ -2,6 +2,7 @@ #include "debug.h" #include "ace/Malloc_T.h" #include "ace/Log_Msg.h" +#include "ace/Message_Block.h" ACE_RCSID (tao, diff --git a/TAO/tao/Sequence.h b/TAO/tao/Sequence.h index e8414664340..457be411b8f 100644 --- a/TAO/tao/Sequence.h +++ b/TAO/tao/Sequence.h @@ -25,6 +25,7 @@ #include "tao/Managed_Types.h" #include "ace/Log_Msg.h" /* For "ACE_ASSERT" */ +#include "ace/Message_Block.h" class CORBA_Object; class CORBA_Environment; diff --git a/TAO/tao/Synch_Queued_Message.cpp b/TAO/tao/Synch_Queued_Message.cpp index 61095eadc55..a39fcb52df8 100644 --- a/TAO/tao/Synch_Queued_Message.cpp +++ b/TAO/tao/Synch_Queued_Message.cpp @@ -2,6 +2,7 @@ #include "debug.h" #include "ace/Malloc_T.h" #include "ace/Log_Msg.h" +#include "ace/Message_Block.h" ACE_RCSID (tao, diff --git a/TAO/tao/Thread_Lane_Resources.h b/TAO/tao/Thread_Lane_Resources.h index 2a3f89b268e..b383930acf3 100644 --- a/TAO/tao/Thread_Lane_Resources.h +++ b/TAO/tao/Thread_Lane_Resources.h @@ -22,6 +22,7 @@ #include "tao/corbafwd.h" #include "ace/Synch_T.h" +#include "ace/Malloc_Base.h" class TAO_ORB_Core; class TAO_Acceptor_Registry; |