[omniORB] POA assertion fails with multiple interfaces

Gary D. Duzan gdd0@gte.com
Mon, 30 Oct 2000 11:26:42 -0500


   This is a FAQ. You can't implement two different interfaces
using inheritance. Either implement a separate IDL interface which
inherits both interfaces, then implement the new interface, or use
a tie implementation to delegate calls from two objects to the same
servant.

					Gary Duzan
					Verizon Laboratories



In Message <20001030171241.A28784@sunhalle10.informatik.tu-muenchen.de> ,
   Asa MacWilliams <macwilli@informatik.tu-muenchen.de> wrote:

=>Hi,
=>
=>I'm using OmniORB 3.0.2 (on SuSE Linux 6.4 for PowerPC), and I have servants
=>that implement several interfaces. When I use the _this() function on the
=>second interface, an assertion fails:
=>
=>omniORB: Assertion failed.  This indicates a bug in omniORB.
=> file: ../portableserver.cc
=> line: 242
=> info: ref
=>
=>The code is more or less like:
=>
=>class MyImpl:
=>	public POA_Interface1,
=>	public POA_Interface2
=>{
=>	...
=>};
=>
=>MyImpl* myServant=new MyImpl;
=>Interface1_ptr=((POA_Interface1*)myServant)->_this();
=>Interface2_ptr=((POA_Interface2*)myServant)->_this();
=>
=>The second call of "_this()" causes the assertion.
=>
=>Am I doing something wrong here (I hope) or is this really a problem in
=>OmniORB?
=>
=>Thanks,
=>Asa
=>
=>--
=>
=>|\ /\ /| Asa MacWilliams
=>| /--\ | asa.macwilliams@in.tum.de
=>|/ \/ \| http://www.in.tum.de/~macwilli/
=>