[omniORB] omniORB 3.00pre1 problem with _is_a (_real_is_a)
David Riddoch
djr@uk.research.att.com
Mon, 8 Nov 1999 09:35:38 +0000 (GMT)
Hi Christof,
Yes, I think you're right. Just remove those lines.
Cheers,
David
On Sun, 7 Nov 1999, Christof Meerwald wrote:
> I think there is a problem in omniObjRef::_real_is_a:
>
> {
> omni::internalLock->lock();
> int tv = pd_flags.type_verified;
> omni::internalLock->unlock();
> if( tv ) return 0;
> }
>
> But the specs say (CORBA 2.3.1: 99-10-07, 13.6.2 Interoperable Object
> References: IORs):
>
> The type ID, if provided by the server, indicates the most derived type
> that the server wishes to publish, at the time the reference is generated.
> The object's actual most derived type may later change to a more derived
> type. Therefore, the type ID in the IOR can only be interpreted by the
> client as a hint that the object supports at least the indicated
> interface. The client can succeed in narrowing the reference to the
> indicated interface, or to one of its base interfaces, based solely on the
> type ID in the IOR, but must not fail to narrow the reference without
> consulting the object via the "_is_a" or "_get_interface"
> pseudo-operations.
>
>
> As I understand it, _real_is_a shouldn't return 0 without calling
> _remote_is_a.