[omniORB] remote _is_a() behaviour

Duncan Grisby dgrisby@uk.research.att.com
Fri, 11 Jan 2002 10:33:56 +0000


On Thursday 10 January, Huw Rogers wrote:

> I'm testing remote _is_a invocations to
> omniORB3 from Perl CORBA::ORBit.
> 
> This is handled by omniServant.cc, 81 - 138.
> 
> Shouldn't objref->_is_a("IDL:CORBA/Object:1.0")
> always return true? omniORB returns false if
> the passed string is not exactly the most
> derived repo. ID of the interface.

_is_a("IDL:CORBA/Object:1.0") should always return false, since that
isn't the repository id of base CORBA::Object. The correct id is
"IDL:omg.org/CORBA/Object:1.0". omniORB's _is_a does return true for
that.

> interface A { };
> interface B : A { };
> 
> B_ptr b;
> 
> b->_is_a("IDL:A:1.0") should also return true.

As long a b is initialised to a genuine object with interface B, it
should, and it does for me.

Try running your omniORB server with command line arguments
-ORBtraceLevel 30. That will print out details of the IIOP traffic,
and lots of other stuff, to help you see what's going on.

Cheers,

Duncan.

-- 
 -- Duncan Grisby  \  Research Engineer  --
  -- AT&T Laboratories Cambridge          --
   -- http://www.uk.research.att.com/~dpg1 --