Re: orbit-perl patch
- From: Huw Rogers <count0 building2 co jp>
- To: sreeji_k yahoo com
- Cc: orbit-list gnome org, orbit-perl-list gnome org, otaylor redhat com
- Subject: Re: orbit-perl patch
- Date: Thu, 10 Jan 2002 05:52:08 +0900
The put_objref() code in marshal.c has changed in CVS
since your 0.4.3.
Having said that, reviewing the code,
it is not comforting to see the comment
still in there.
I think that the check against the typecode
should be removed since we already know we are
marshalling an object reference.
CORBA's C language binding does not need or have
a narrow() function, although it does have is_a().
However checking with is_a() is something that
will be performed by the object reference's servant's
ORB if/when an operation is ever invoked using the
reference being marshalled. Also is_a()
involves a remote call to the reference's
servant's ORB if the reference is not for a local
servant and the local ORB cannot match up the
repository IDs; that can happen in several
circumstances, not least if a remote ORB
is running it's own special derived
interface of some base, where the local
ORB is only aware of the base and won't
recognise the derived's repository ID.
I note that neither omniORB nor ORBit itself attempt
to validate the repository ID of the IDL parameter
against the repository ID actually passed in or
out by clients/servants when marshalling
object references. Receiver beware seems to
be the approach.
The entire put_objref() function should
probably be simplified to:
static CORBA_boolean
put_objref (GIOPSendBuffer *buf, CORBA_TypeCode tc, SV *sv)
{
CORBA_Object obj;
if (!SvOK(sv))
obj = CORBA_OBJECT_NIL;
else {
if (!sv_derived_from(sv, "CORBA::Object")) {
warn("not an object reference");
return CORBA_FALSE;
}
obj = (CORBA_Object)SvIV((SV *)SvRV(sv));
}
ORBit_marshal_object(buf, obj);
return CORBA_TRUE;
}
Anyway, can you test with the latest CVS version please?
cvs -d :pserver:anonymous anoncvs gnome org:/cvs/gnome login
(hit return when prompted for password)
cvs -d :pserver:anonymous anoncvs gnome org:/cvs/gnome checkout
orbit-perl
Thanks,
-Huw
Sreeji K Das wrote:
>
> Hi
> I had sent the above patch to this list long back. The following code
> snippet fails.
>
> ....
> ..
> $Server = CreateServer();
> $NameComponent =
> {
> 'id' => 'DepositServer',
> 'kind' => 'Accounting',
> };
>
> $NameServer = Object2Ref($IOR_of_Name_Server);
> $NameServer->bind([$NameComponent], $Server);
> ..
> ..
>
> The bind() call fails, due to a wrong checking of $Server. As a result,
> you cannot register an object with the Naming Service from perl. The
> attached patch fixes the problem. I had posted a test script to demo. the
> problem. If needed I can search & find it out.
>
> BTW, as I see it, there is not much devel. taking place with
> CORBA::ORBit. Owen, any plans for a latest release ? Is ORBit2 ripe enough
> to create perl bindings ?
>
> Sreeji
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]