Re: Interoperability of Orbit2



Michael Meeks wrote:

>> I'd like to use a Orbit2 server on a Linux machine with a MacOSX 
>> client  using Objective C implementation of corba (ADORB). ADORB use
>> IIOP 1.0 or  1.1.
>>   
>
>
>     The data in your log is all GIOP 1.2 - [ bytes 5,6 of the header:
> 0x0000:   47 49 4f 50  01 02 00 00  00 00 00 40  XX XX XX XX |
>                       ^^^^^ ]
>  
>
Well, I just read what is in the ADORB doc. This one is not open source 
... ;((( But Objective C CORBA Impl are not very common ...
I'm trying to contact the author to get more info.

>> It works fine ( or almost, some times it just hangs ... ) with Orbit1.
>> But not with Orbit2. Is'nt it backward compatible with IIOP 1.1 ?
>>   
>
>
>     So the problem is with ORBit1 or ORBit2 ? I'm not that interested in
> supporting ORBit1 really .
>  
>
With a ORBit2 server.
[ With ORBit1 it work most of the time ( some times it just hangs. The 
author says that the IIOP 1.0 is not well supported ). ]

>> The macosx apps connects to the server but the argument passing fails.
>> For example, I have a 'long' argument and I always recive the same
>> value 1074140992, It's always the same ( I can reboot client and
>> server, it will always be ... ). And when I try to return a long, the
>> client always  receive 0 ... Weird isn't it ?
>>   
>
>
>     Very odd indeed. The on-the wire data is: 00 00 00 14:
> [snip]
> 0x0040:   00 00 00 14  XX XX XX XX  XX XX XX XX  XX XX XX XX |  ...
> p12562 : ([0x8050c30])->setValue (0x40064c20)[08050858] setValue 
> called : 1074154528 Outgoing IIOP data:
> [snip]
>
>     Of course - 1074154528 is 40064c20 hex; that may be some badly
> endian-swapped something from the wire I suppose. The strange thing is
> that setValue doesn't seem that different from 'replaceValue' - which
> appears to demarshal 0a just fine. the Bigendianness [ bit 1 of byte 7
> of the header ] is set correctly for a PPC machine I think.
>  
>
It's a PPC machine (OSX). The only difference with setValue and 
replaceValue is that one return a value, the other don't.

>> The server has some outputs : The IOR and each time a function is 
>> called, it prints stuff like :
>>
>> [08050858] replaceValue called : 15 5
>>
>> Where 08... is the object address, 15 is the old value, 5 the new one.
>>
>> As I said, the OSX client receive always 0 and the value I receive for
>> the setValue is not the one he sent ...
>>   
>
>
>     It's very odd indeed. One would need to dig down further into the
> de-marshalling code I think in order to work out quite why this is going
> on. Can you try doing the same thing but using the 'octet' type instead
> of long - and post another GIOP trace - it should be easier to unwind
> any swapping problems from that.
>  
>
I've tried with octet instead of long. Result is 
http://www.246tNt.com/s-orbit2_c-osx-char.log

Same problem : With setValue the arg is not correct. All value that 
should return a value, the client only get 0x00 instead of the true value.


Thanks for your help,

   Munaut Sylvain


PS: I tried with other CORBA impl ( mico ) and it seem to work.
PS2: Sorry for the first reply to your personnal email, I forgot to 
replace the To: field ...




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]