IOR parsing



Hi,

When parsing IOR's with ORBit, the "file://" form does not work. This form works in MICO and TAO.

When parsing IOR's with ORBit, if the .ref file is not present, an uncaught exception occurs. In MICO and TAO, IIRC, a "nil" CORBA object is returned that can then be tested with CORBA::is_nil() to give a graceful error message.

Thanks,
Marc

--
Marc Siegel
MIT Lincoln Laboratory, Group 63
mlsiegel ll mit edu . (781)981-5434
--
--- Begin Message --- Marc Siegel wrote:

Well, the main() is so simple for this client at this stage, I 'll just paste it below. As far as I can tell, there wasnt enough done here to unref things additional times or anything like that, but if you spot a problem please tell me.

The problem is that ORB::destroy() is not getting called on the ORB object. Other ORB implementations do this for you automatically. We don't. I'll see if I can fix this. I doubt it will be as easy as it sounds. If you add an orb->destroy() your code will not assert. Except you need to clean up all your references (destruct all your _var's) before you call destroy. One way to achieve this is with blocks:


{
   ORB_var orb = ...
   {
      Object_var obj = ...
   }
   orb->destroy();
}

Even easier than that is to not clean up and change the ORB_var to an ORB_ptr. It's always a good idea to try and clean up though.


ALSO - notice that I am reading the IOR file into a string to get the ref. This is a more minor nit, but the other ORB's support the the file:// notation for passing IOR refs and read in the files themselves.

Can't help you there. If the C binding doesn't support it, the C++ binding doesn't either. The C++ binding is just a wrapper.



ALSO - if the .ref file is not present, this program exits with "Aborted", which I assume means an uncaught exception. I think the correct behavior, as exhibited by the other ORB's, is to return a CORBA nil object so that the if-block below will function.

Yes the Aborted is going to be an uncaught exception. As for the behaviour of string_to_object in the when there is a bad IOR passed it looks like the right thing to do is throw a BAD_PARAM which is what MICO does and backed up by the following doc:


http://edocs.bea.com/tuxedo/tux81/CORBA_ref/corba_67.htm


-- Bowie Owens

CSIRO Mathematical & Information Sciences
phone  : +61 3 9545 8055
fax    : +61 3 9545 8080
mobile : 0425 729 875
email  : Bowie Owens csiro au




--- End Message ---


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]