GNOME Bugzilla – Bug 93727
CORBA.BAD_OPERATION when using IMethods from CORBA_Object__iinterface?
Last modified: 2019-02-23 02:42:31 UTC
I noticed that "CORBA_Object__iinterface" is exposed in the headers, and used it to set up the standard CORBA.Object methods in my Python binding. However, when I try to invoke some of them (with the ORBit_small_invoke_stub() function), I get a CORBA.BAD_OPERATION exception. I don't think there is any problems with how I marshalled the arguments, so is this a known issue? Or should I have just ignored CORBA_Object__iinterface?
Most of these methods aren't supposed to be able to be invoked remotely. The ones that are are only supposed to be invoked by the ORB AFAIK. So just ignore it, I'm not sure why we've made it public :-)
Fair enough. It looked like a good short cut for writing the wrapper for CORBA.Object (handle the CORBA.Object methods the same as for other interfaces I wrap).
Hi James- you're exactly right. And this is the direction I'd like to take really; to ensure that by hook or by crook, we use the IInterface method to make all the 'pseudo-objects' into real objects on which we can use the standard invoke stuff; precisely to shrink the binding author's pain. Quite how we do that is an interesting question really; how we do this currently is poa.c (ORBit_POAObject_handle_request) uses: if (!skel && !small_skel) small_skel = get_small_skel_CORBA_Object ( pobj->servant, opname, (gpointer *)&m_data, &imp); To do a fallback for (only) remote invocations to the CORBA_Object special cases ( cf. ORBit2/src/orb/orb-core/corba-object.c ). I'd very much like to expand corba-object.c to handle all the methods: ref / unref etc. so we can use them in scripting bindings [ that bit should be easy ]. Actually, having chased that through I believe that's all you need to do; and it'd be great to have that. Of course - in future it'd be nice to have a similar scheme for other local objects such as DynAny / ORB etc. How does that sound ?
Of course; 1 last thing - we want to segregate the sinful remote/local operations on CORBA_Object, so someone remote can't do stupid 'unref's etc. [ which would cause no end of grief ].
ORBit2 is not under active development anymore. Its codebase has been archived: https://gitlab.gnome.org/Archive/orbit2/commits/master Closing this report as WONTFIX as part of Bugzilla Housekeeping to reflect reality. Please feel free to reopen this ticket (or rather reactivate the project to GNOME Gitlab, as GNOME Bugzilla is deprecated) if anyone takes the responsibility for active development again.