[omniORB] Re: omniORB3 problem?

David Riddoch djr@uk.research.att.com
Mon, 24 Jan 2000 13:38:22 +0000 (GMT)


Hi Mark,


The mapping for the signature of object implementations has changed
between CORBA 2.0 and 2.3.  See page 103 of the c++ spec.  It basically
says that T_out types should be used as the parameter type for the out
arguments.

Thus you implementation signature should be:

  void work(Hammer_out obj);

(nb. I am assuming 'create' below should have been 'work')

_CORBA_ObjRef_OUT_arg<_objref_Hammer,Hammer_Helper> is just an omniORB
specific name for the same type.  You should use Hammer_out.

If you wish you can continue to use the old mapping, by passing the
-Bold_signatures option to omniidl3.


Cheers,
David



On Mon, 24 Jan 2000, Mark Little wrote:

> Hi. I'm trying to rebuild an existing application using omniORB3 and have
> run into a small problem with the following idl:
> 
> interface Hammer
> {
> //  some methods
> };
> 
> interface foo
> {
>     void work (out Hammer h);
> };
> 
> On omniORB2 I'd expect to have to implement a method work which takes a
> Hammer_ptr& as a parameter. However, the new idl compiler gives me:
> 
> create(_CORBA_ObjRef_OUT_arg<_objref_Hammer,Hammer_Helper > obj)
> 
> which seems strange. Do I really have to know this much detail to implement
> a basic CORBA object now?