Re: Retrieving a sequence from an ORBit-2 client to an ORBit-1 server



On Thu, 2004-07-22 at 11:53 +0200, Peter Van Osta wrote:
> Hi,
> 
> We are trying to retrieve a data sequence from an ORBit-1 server to an 
> ORBit-2 server running on Fedora Core 1:
> 
> 
> retval->data._maximum = size + 1;
> retval->data._length = size;
> retval->data._buffer = CORBA_sequence_CORBA_octet_allocbuf( 
> retval->data._length  );
> 
> Connecting the clietn tothe server works fine, but we get a 
> communication failure when attempting to retrieve the octect sequence. 
> Everything works fine when the server and cleint are both using ORBit 1.
> 
> Is the server incompatible with the client ?


Some more information about this specific problem:

We have a ORBit-1 server which will serve us image-data. It's a
difficult process to port this ORBit-1 server to ORBit-2 for several
reasons (including vendor support for some of our hardware parts of the
device which the client will talk to using CORBA). We are planning to
eventually start porting code to ORBit-2 and Glib-2 but it would make us
more confortable if we could develop this in stages (first port the
client to a newer version of the libraries and get our customers excited
about the new look and feel, then port the more complex server).


We want to create a userinterface on GTK+-2 and the GNOME 2.0 Desktop.
Our platform will be the Fedora Core 2 with a downgraded Linux 2.4.x
kernel (also for vendor support reasons, we don't have kernel drivers
for the 2.6.x kernel series for some of our client-side hardware)


So far we have managed to make our ORBit-2 client talk to the ORBit-1
server. We can feed it with our functions (methods) and the server will
execute them. We can even transfer most structures and simple data-
types.

However, we came across an instability which leaves us stunned about a
reason why it's not working.

The structure looks like this: 

   typedef CORBA_sequence_CORBA_octet A_typeImgBuf

   struct A_type
   {
      CORBA_string name;
      A_typeImgBuf data;
      CORBA_short type;
      CORBA_long width;
      CORBA_long height;
      CORBA_long depth;
      CORBA_long slice;
      CORBA_short axis;
      CORBA_long spectral;
      CORBA_long overlay;
      CORBA_long clut;
      CORBA_long frmrate;
   };


At the server, we debugged to the very point where it's going to return
this "A_type"-object. We have printed it's values and they where
correct. 

At the client, however, we get an error in the CORBA_Environment
parameter (the one which is passed as a pointer) which has the following
values:

CORBA ERROR: IDL:omg.org/CORBA/COMM_FAILURE:1.0, 2, 0,

This is how I printed it:

g_print ("CORBA ERROR: %s, %d, %d, %s\n", ev->_id, ev->_major, ev->_any,
	 CORBA_exception_id (ev));


The values of the returned object are all invalid (set to some unstable
dummy value, probably the values that have been left in the memory and
during a previous session with -and allocation of another object). I
don't think that ORBit is returning data from the server at all for
these cases.

It is, however, receiving the arguments that I gave the function. We
have debugged and checked that.


-- 
Philip Van Hoof, Software Developer @ Cronos
home: me at freax dot org
gnome: pvanhoof at gnome dot org
work: Philip dot VanHoof at Cronos dot Be
http://www.freax.be, http://www.freax.eu.org



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