summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-02-22 01:48:23 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-02-22 01:48:23 +0000
commit4f9d0fdf5749f681257b6e094b582d80cbb4c8cd (patch)
treeff11a83a8fcebff97c59930c09675b0c380e5005
parentd65e7fd217071c9d963347eaf2709c413f43818e (diff)
downloadATCD-4f9d0fdf5749f681257b6e094b582d80cbb4c8cd.tar.gz
ChangeLogTag: Fri Feb 21 19:38:19 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/ChangeLog10
-rw-r--r--TAO/orbsvcs/orbsvcs/IFRService/ComponentContainer_i.cpp6
-rw-r--r--TAO/orbsvcs/orbsvcs/IFRService/Container_i.cpp26
-rw-r--r--TAO/orbsvcs/orbsvcs/IFRService/IFR_Service_Utils.cpp3
-rw-r--r--TAO/orbsvcs/orbsvcs/IFRService/InterfaceDef_i.cpp4
-rw-r--r--TAO/orbsvcs/orbsvcs/IFRService/OperationDef_i.cpp5
-rw-r--r--TAO/orbsvcs/tests/InterfaceRepo/IFR_Test/Admin_Client.cpp15
-rw-r--r--TAO/tao/Any.cpp43
-rw-r--r--TAO/tao/Any_T.cpp11
-rw-r--r--TAO/tao/Asynch_Queued_Message.cpp1
-rw-r--r--TAO/tao/Sequence.h1
-rw-r--r--TAO/tao/Synch_Queued_Message.cpp1
-rw-r--r--TAO/tao/Thread_Lane_Resources.h1
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;