Re: "any within struct" ORBit decoding problem



On Tue, 12 Jun 2001 11:35:07 +0100, 
"me" == Philip Lijnzaad <lijnzaad@ebi.ac.uk> wrote:

me> This has been a while ago, so I include the whole mail. The question is, has
me> anything changed in the mean time? We have a very similar setup, and are
me> trying to send a 

me>     struct Property {
me> 	string property_name;
me> 	any property_value;
me>     };

me> to a Java server (using ORBacus 4.0.5). Plain anys (i.e. not as part of a
me> struct) appear to work fine, both as clients/servers and sending/receiving.
me> However anys as part of a struct just don't get marshalled (although we don't
me> get a failed assertion). 

me> I haven't seen a follow-up to this mail; has this (IMHO serious) problem been
me> solved in the mean time? Should I get the latest ORBit snapshot from CVS ? 

me> 'any' help appreciated !-)
me>                                                                       Philip 

OK, some more info. It turns out that it's more an interoperability problem.
To quote from a mail by my colleague Martin Senger, who investigated this in
some detail:

  1) All examples work fine when both server and client are orbit-perl. That
  means we have here an interoperability problem.
  
  2) Standalone Anys work also fine. For example, method:
     any get_any (in any my_any)
  
  3) The problems are when an Any is a member of a struct. Such Any is not
  passed throught the wire at all (in any combinantion of perl-orbit and
  java servers/clients). Or it is lost during un/marshalling - I do not know
  where.
     Interesting - especially for the orbit-perl developers - is that the
  Any in struct works if it is the first member of the struct. So, passing
  this:
  
    struct MyStructure {
      any    value;
      string name;
    };                        
  
  works, but passing this:
  
    struct MyStructure {
      string name;
      any    value;
    };                        
  
  does not work.
  
  4) When I am passing an array of Anys:
     - again it works for orbit-perl on both sides,
     - surprisingly itworks for the combinantion client-in-orbit-perl and
  server in java-orbacus (which gives me some chnaces to continue with the
  'novella' project, at least until the bug is fixed)
      - and it does not work for client-in-java and server-in-orbit-perl
  (actually it works only for the first element of the array but not for the
  rest - sic!).
  
  5) Sending/receiving array of structs with an Any as a member also does
  not work (and again it works for the first struct but not for the others).
  Just to be sure, I also checked sending/receiving array of structs without
  any Any as members - and it works fine. So the problem is with Anys not
  with sending arrays of structs.

I have tried to see if a plain C orbit-client could pass structs with
any-members to and from an ORBacus server, but I have failed so far (which 
due to the scarcity of documentation on anys in C; see also my mail to
news:comp.object.corba). 

The complete examples are available from 

  ftp://ftp.ebi.ac.uk/pub/lijnzaad/novella-tests.tar.gz

PS: following plea still stands :-) 

me> PS: I have so failed to find any examples on how to work with anys in ORBit;
me>     any pointers (sorry about the pun again) would be very welcome. 


-- 
If you have a procedure with 10 parameters, you probably missed some. (Kraulis)
-----------------------------------------------------------------------------
Philip Lijnzaad, lijnzaad@ebi.ac.uk \ European Bioinformatics Institute,rm A2-08
+44 (0)1223 49 4639                 / Wellcome Trust Genome Campus, Hinxton
+44 (0)1223 49 4468 (fax)           \ Cambridgeshire CB10 1SD,  GREAT BRITAIN





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