[orbitcpp-list] Re: orbitcpp status and question
Status: Beta
Brought to you by:
philipd
From: John L. <jk...@lu...> - 2000-12-17 22:24:28
|
> Hello, > > I have been interested in C++ bindings for ORBit for sometime now, > although I don't have a lot of time to keep up-to-date :-(. I have > three questions. > I hope this won't have to do with velocity of swallows! > 1. What is the current status of this project? After porting my program > to use these bindings, I suddenly noticed a lot of important functions > have error("NYI") (eg. deactivate_object). Any ideas when these > functions will be implemented? > Alot is still not completed, but most of the POA stuff is. The example you cite shows that the orbitcpp you are using is older than God, I think a lot of this stuff is in the latest release. And if it isn't then it certainly is in CVS. Of couse you also need to have a very late dev snapshot (or CVS) of ORBit to use bleeding edge orbitcpp. Also do not install this stuff in /usr or you will be sorry because precompiled versions of GNOME depend on release ORBit, and will die with the latest dev ORBit. As for the pace, things seem to have slowed down. Everyone that writes free software enjoys it, but most of us have jobs and or other engagements necessary for survival. I have not heard from Phil Dawes lately, and I would assume that this is the case with him. The holiday season has made me awfully busy myself. The IDL compiler has come along nicely, but there are still some issues with it that I am going to take a look at over the next week. Hopefully things will settle down for the other developers so that orbitcpp can pick up the pace. If after installing CVS orbitcpp and ORBit, you find any NYIs for simple things, reports to the mailing list are appreciated. > 2. In C, it is not always safe to copy an object (eg CORBA struct > containing interfaces and strings) using =, as only a shallow copy is > created, and you risk freeing nested objects multiple times. Do the > C++ bindings overload the copy constructor to create deep copies, or > is this something which has to be done manually by the programmer? > > (this is IMHO one of the hardest aspects of CORBA programming - > especially with C or C++ - knowing how/when to copy/free/deactivate > objects - few examples seem to deal with these issues, but rely on > memory being freed when the program exits). The goal of this project is to faithfully implement the CORBA C++ mapping. In the binding spec, deep copying is done sequences and arrays, and orbitcpp tries to follow the spec. Now if you (or anyone) finds places where compliant code crashes due to a buggy copy (shallow where it should be deep), please contact the list. > > 3. Also, I noticed in <URL:http://gnome.dataplus.se/gnomefaq/html/x703.html> > > "...Now, that might be a shared library which got mapped into your > address space and you are now doing straight function calls into > it..." > > this is something that really interests me. From > <URL:http://orbitcpp.sourceforge.net/> it says that a secondary > objective is to "Allow C and C++ objects in the same address space to > short-circuit calls (i.e. no on-the-wire marshalling) for maximum > speed.", which I assume is the same thing. In someway this is already done, as ORBit itself short circuits the calls if the server is in the same address space. orbitcpp is merely wrapping the stubs and skels of ORBit, and ORBit does this optimization. > > Previously,I always thought CORBA objects had to run as separate > processes or threads. I now get the impression that this is not the > case. However, how do I construct an object as a shared library that > is meant to be run from the same address space? > -- > Brian May <ba...@sn...> ORBit handles this sort of thing automatically. If the server is in the same address space, when you deal with the IORs and the client resolves the IOR, if the servant is in the same space, then the object reference that the client gets will be "complete", and will have a pointer to the actual entry point vectors for the servant The stubs check if the CORBA_Object is complete and call the method directly instead of going on the wire. Also, as long as you have the CORBA_Object from the servant creation, it is totally safe to pass that around in client code, I believe that the binding allows this. John > > --__--__-- > > _______________________________________________ > orbitcpp-list mailing list > orb...@li... > http://lists.sourceforge.net/mailman/listinfo/orbitcpp-list > > End of orbitcpp-list Digest |