TAO VERSION: 1.4a_p4
ACE VERSION: 5.4a_p4
HOST MACHINE and OPERATING SYSTEM:
Microsoft Windows XP Professional
COMPILER NAME AND VERSION (AND PATCHLEVEL):
Visual c++ 7
AREA/CLASS/EXAMPLE AFFECTED:
Corba::Any with ValueType marshaling/demarshaling
DOES THE PROBLEM AFFECT:
EXECUTION? YES
SYNOPSIS:
Tao generates not compatible TypeCode for ValueTypes
in Any.
DESCRIPTION:
============
tao orb and omni orb generates different typecodes for
valuetypes inserted
in Any. For example for IDL:
typedef any QueryAttributeValue;
enum LogicOperation {
LO_OR
, LO_AND
, LO_NOT
};
valuetype QueryDictData {
public LogicOperation operation;
};
interface SearchManager {
long search (in QueryAttributeValue search_query);
};
omni ORB client while invoking SearchManager.search
operation generates this
message:
-->message part skipped
49 44 4c 3a 56 61 6c 75 65 54 65 73 74 2f 51 75
IDL:ValueTest/Qu
65 72 79 44 69 63 74 44 61 74 61 3a 31 2e 30 00
eryDictData:1.0.
0e 00 00 00 51 75 65 72 79 44 69 63 74 44 61 74
....QueryDictDat
61 00 00 00 00 00 00 00 01 00 00 00 0a 00 00 00
a...............
6f 70 65 72 61 74 69 6f 6e 00 00 00 11 00 00 00
operation.......
-->message part skipped
but tao client generates:
-->message part skipped
49 44 4c 3a 56 61 6c 75 65 54 65 73 74 2f 51 75
IDL:ValueTest/Qu
65 72 79 44 69 63 74 44 61 74 61 3a 31 2e 30 00
eryDictData:1.0.
0e 00 00 00 51 75 65 72 79 44 69 63 74 44 61 74
....QueryDictDat
61 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
a...............
0a 00 00 00 6f 70 65 72 61 74 69 6f 6e 00 00 00
....operation...
-->message part skipped
// TAO_IDL - Generated from
//
ace_wrappers\tao\tao_idl\be\be_visitor_typecode/typecode_defn.cpp:295
static const CORBA::Long _oc_ValueTest_QueryDictData[] =
{
//-> some fields skipped
ACE_NTOHL (0x61000000), // name = QueryDictData
0, // value modifier
CORBA::tk_null, // no stateful base valuetype
1, // member count
//-> some fields skipped
};
I think that difference because TAO uses value modifier of
type long, but
standart says that value modifier is short :( And tao
server can't read correct GIOP message from omni. Any
suggestions?
> TAO VERSION: 1.4a_p4
> ACE VERSION: 5.4a_p4
This appears to be an OCI release of TAO. In the future, please send
questions regarding such releases to OCI.
[snip]
> SYNOPSIS:
> Tao generates not compatible TypeCode for ValueTypes
> in Any.
[snip]
> I think that difference because TAO uses value modifier of
> type long, but
> standart says that value modifier is short :( And tao
> server can't read correct GIOP message from omni. Any
> suggestions?
Yes. Upgrade to a recent version of TAO. The ValueModifier field is a
typedef to CORBA::Short in recent versions of TAO.
HTH,
-Ossama
Thanks for using the PRF.
>> TAO VERSION: 1.4a_p4
>> ACE VERSION: 5.4a_p4
Since you're using OCI's version of TAO please send your questions to
taosu...@ociweb.com.
Thanks,
Doug
>> HOST MACHINE and OPERATING SYSTEM:
>> Microsoft Windows XP Professional
>>
>>
>> COMPILER NAME AND VERSION (AND PATCHLEVEL):
>> Visual c++ 7
>>
>> AREA/CLASS/EXAMPLE AFFECTED:
>> Corba::Any with ValueType marshaling/demarshaling
>>
>> DOES THE PROBLEM AFFECT:
>> EXECUTION? YES
>>
>> SYNOPSIS:
>> Tao generates not compatible TypeCode for ValueTypes
>> in Any.
>>
>> I think that difference because TAO uses value modifier of
>> type long, but
>> standart says that value modifier is short :( And tao
>> server can't read correct GIOP message from omni. Any
>> suggestions?
>>
>>
>>
>>
--
Dr. Douglas C. Schmidt Professor and Associate Chair
Electrical Engineering and Computer Science TEL: (615) 343-8197
Institute for Software Integrated Systems WEB: www.dre.vanderbilt.edu/~schmidt
Vanderbilt University, Nashville TN, 37203 NET: d.sc...@vanderbilt.edu