Re: Interoperability with Visibroker arrays inside structs passing



Title:
Thanks for the fast response, I did enabled the debug and start digging into ORBit2 sources. The problem seams to be with the ORBit_marshal_value function from corba_any.c. For the TypeCode CORBA_tk_array I have removed the switch and let only the default brach and now it looks like the problem is solved. I still have to do some better tests (next week) .

So the part:
-----------------
case CORBA_tk_array:
        switch (tc->subtypes[0]->kind) {
        case CORBA_tk_boolean:
        case CORBA_tk_char:
        case CORBA_tk_octet:
            giop_send_buffer_append (buf, val, tc->length);
            break;
        default: {
            int align = tc->subtypes[0]->c_align;
           
              for (i = 0; i < tc->length; i++) {
                ORBit_marshal_value (buf, val, tc->subtypes[0]);
               
                *val = ALIGN_ADDRESS (*val, align);
            }
            break;
        }
        }
        break;
--------------
became:
---------------
case CORBA_tk_array:
     for (i = 0; i < tc->length; i++) {
                ORBit_marshal_value (buf, val, tc->subtypes[0]);             
                *val = ALIGN_ADDRESS (*val, tc->subtypes[0]->c_align);
    }


Mark, do you have some time to take a look and tell me if this modification is ok?

Sergiu Gavrila


Mark McLoughlin wrote:
Hi Sergiu,

I really should read ahead in my inboc before responding :-)

On Fri, 5 Apr 2002, Sergiu Gavrila wrote:

Hi all,
I'm trying to use the ORBit2 broker (ORBit2-2.3.107) to get access to a
CORBA app server (Visibroker). All is nice until I try to pass a struct
that containes an array of octes (IDL below). At this moment the
CORBA server crashes or, if the typedef is used, it just receives the
same array all the time, no matter what I actually pass. This problem
does not appear if I use ORBit-0.5.15 (but with this one I have other
problems). As I can't modify the Visibroker server, my only hope is in a
patch for ORBit2, or a workarund. Can somebody help me (I have test
applications and time but no knowledge of ORBit internals)?

Unfortunately, I can't be a lot of help *right* now, but to
aid debugging this have a look in ORBit2/doc/(something)/FAQ at the
part about debugging flags. So if you set ORBIT2_DEBUG=giop or
ORBIT2_DEBUG=traces you'll get to see what data is being transmitted.
If you could take the hex output from the GIOP debugging and decode it
by hand (or with whatever tools are available out there) you might see
where the problem is. Failing that just send on the GIOP debugging
output, idl + code etc. and we'll have a look and see where the
problem is ...

Cheers,
Mark.

_______________________________________________
orbit-list mailing list
orbit-list@gnome.org
http://mail.gnome.org/mailman/listinfo/orbit-list






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