summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Mesnier <mesnier_p@ociweb.com>2006-07-01 15:46:08 +0000
committerPhil Mesnier <mesnier_p@ociweb.com>2006-07-01 15:46:08 +0000
commit0c915687c29ab36116372207284a04ffecfde53b (patch)
treebb9ecfc2e4b36143822b5371112d895b85bc3ee1
parente8c51091f9703299450eb371308a00d9b5f7acdc (diff)
downloadATCD-0c915687c29ab36116372207284a04ffecfde53b.tar.gz
ChangeLog tag: Sat Jul 1 15:32:43 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
-rw-r--r--TAO/ChangeLog21
-rw-r--r--TAO/tao/AnyTypeCode/skip.cpp7
-rw-r--r--TAO/tao/TAO_Server_Request.h4
-rw-r--r--TAO/tao/Valuetype/Valuetype_Adapter_Impl.cpp11
-rw-r--r--TAO/tao/Valuetype/Valuetype_Adapter_Impl.h3
-rw-r--r--TAO/tao/Valuetype_Adapter.h3
6 files changed, 42 insertions, 7 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index a6a06a8ad33..fbb068c2c6f 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,3 +1,24 @@
+Sat Jul 1 15:32:43 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * tao/AnyTypeCode/skip.cpp:
+ * tao/Valuetype/Valuetype_Adapter_Impl.h:
+ * tao/Valuetype/Valuetype_Adapter_Impl.cpp:
+ * tao/Valuetype_Adapter.h:
+
+ Added an exclusion for Valuetypes marshaled with implied types.
+ Implicitly typed values are those for which the actual valuetype
+ matches the formal valuetype. For values inserted into an Any
+ this is always true as the Any separately marshals the typecode
+ making it redundant to do this again by the value itself.
+
+ TAO only marshals values this way when compiled to use optimized
+ valuetype marshaling which is not the default case since it
+ breaks backwards compatibility.
+
+ * tao/TAO_Server_Request.h:
+
+ Fixed a typo in a comment.
+
Sat Jul 1 12:16:20 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
* tao/Valuetype/ValueBase.cpp:
diff --git a/TAO/tao/AnyTypeCode/skip.cpp b/TAO/tao/AnyTypeCode/skip.cpp
index 9d1f455c933..86a7d6c3d3f 100644
--- a/TAO/tao/AnyTypeCode/skip.cpp
+++ b/TAO/tao/AnyTypeCode/skip.cpp
@@ -986,10 +986,15 @@ TAO_Marshal_Value::skip (CORBA::TypeCode_ptr tc,
}
else if (value_tag & adapter->type_info_single ())
{
+ // @@@ this isn't really correct, the test will return true
+ // if the value_tag ends with 02 for a single value or 06
+ // for a value list. In the latter case, we need to skip an
+ // array of strings.
+
// Skip a single repository id which is of type string.
stream->skip_string ();
}
- else
+ else if (value_tag != adapter->type_info_implied ())
{
//@@ boris: VT CDR
return TAO::TRAVERSE_STOP;
diff --git a/TAO/tao/TAO_Server_Request.h b/TAO/tao/TAO_Server_Request.h
index 20a8995daf0..d2e4d4efde7 100644
--- a/TAO/tao/TAO_Server_Request.h
+++ b/TAO/tao/TAO_Server_Request.h
@@ -80,7 +80,7 @@ class TAO_Operation_Details;
class TAO_Export TAO_ServerRequest
{
public:
-
+
/// Declare FW_Server_Request_Wrapper a friend
/// This friendship makes the FW_Server_Request_Wrapper be able to
/// clone the TAO_ServerRequest.
@@ -341,7 +341,7 @@ private:
/**
* An argument flag to indicate whether there is any data that is
- * going to get marshalled along as a reply. The default will be 1
+ * going to get marshaled along as a reply. The default will be 1
* which indicates that we have some data that needs to be sent back
* to the client.
*/
diff --git a/TAO/tao/Valuetype/Valuetype_Adapter_Impl.cpp b/TAO/tao/Valuetype/Valuetype_Adapter_Impl.cpp
index 074fcdf7de2..feb3c35f783 100644
--- a/TAO/tao/Valuetype/Valuetype_Adapter_Impl.cpp
+++ b/TAO/tao/Valuetype/Valuetype_Adapter_Impl.cpp
@@ -42,12 +42,20 @@ TAO_Valuetype_Adapter_Impl::stream_to_abstract_base (
return cdr >> obj;
}
-CORBA::ULong
+CORBA::Long
TAO_Valuetype_Adapter_Impl::type_info_single (void) const
{
return TAO_OBV_GIOP_Flags::Type_info_single;
}
+CORBA::Long
+TAO_Valuetype_Adapter_Impl::type_info_implied (void) const
+{
+ return
+ TAO_OBV_GIOP_Flags::Value_tag_base |
+ TAO_OBV_GIOP_Flags::Type_info_none;
+}
+
int
TAO_Valuetype_Adapter_Impl::vf_map_rebind (const char *repo_id,
CORBA::ValueFactory &factory)
@@ -72,4 +80,3 @@ TAO_Valuetype_Adapter_Impl::vf_map_find (const char *repo_id)
}
TAO_END_VERSIONED_NAMESPACE_DECL
-
diff --git a/TAO/tao/Valuetype/Valuetype_Adapter_Impl.h b/TAO/tao/Valuetype/Valuetype_Adapter_Impl.h
index eb8a6550838..933308e42c9 100644
--- a/TAO/tao/Valuetype/Valuetype_Adapter_Impl.h
+++ b/TAO/tao/Valuetype/Valuetype_Adapter_Impl.h
@@ -56,7 +56,8 @@ public:
CORBA::AbstractBase_ptr &
);
- virtual CORBA::ULong type_info_single (void) const;
+ virtual CORBA::Long type_info_single (void) const;
+ virtual CORBA::Long type_info_implied (void) const;
virtual int vf_map_rebind (const char *,
CORBA::ValueFactory &);
diff --git a/TAO/tao/Valuetype_Adapter.h b/TAO/tao/Valuetype_Adapter.h
index b87ea614994..f967a77e423 100644
--- a/TAO/tao/Valuetype_Adapter.h
+++ b/TAO/tao/Valuetype_Adapter.h
@@ -67,7 +67,8 @@ public:
CORBA::AbstractBase_ptr &
) = 0;
- virtual CORBA::ULong type_info_single (void) const = 0;
+ virtual CORBA::Long type_info_single (void) const = 0;
+ virtual CORBA::Long type_info_implied (void) const = 0;
virtual int vf_map_rebind (const char *,
CORBA::ValueFactory &) = 0;