[omniORB] Corba-COM bridge

David Hyde davidh@cavendish.co.uk
Mon, 29 Jan 2001 08:29:32 -0000


If I understand you correctly what you are saying is that you are =
having
problems when a callback comes into your COM control from CORBA and you =
have
to pass it back to the front end as an event.

The problem is that apartment threaded objects have to fire events off =
their
main threads only and the CORBA call is entering your control on a =
seperate
thread.  You have to marshall the object's reference using
CoMarshalInterThreadInterfaceInStream and then unmarshall it with
CoGetInterfaceAndReleaseStream when the event comes in.  You then use =
the
unmarshalled pointer to fire the events.  MSDN and VC++ newsgroups have
examples of doing this.

Regards

David


-----Original Message-----
From: T|r=F5" Roland [mailto:tororoland@freemail.hu]
Sent: Sunday, January 28, 2001 4:27 PM
To: omniorb-list@uk.research.att.com
Subject: [omniORB] Corba-COM bridge


hi=20

i use windows nt4 with visual c++6=20
i made a com dll that is called by a corba client and the=20
server is a vb application that is calling my dll with the=20
COM interface

the problem is if i call a service form my corba client the=20
dll gets the control and the corba service is running but=20
in the function witch is called my corba client is a Fire_
event /because i have to reach the vb side/ and at this=20
point the corba core is crasing=20

it is crashing in  the giopServer.cc=20

at line 728

 catch(...) {
    if( omniORB::traceLevel > 1 ) {
      omniORB::logger l;
      l << "WARNING -- method \'" << operation() << "\'=20
raised an unexpected\n"
	" exception (not a CORBA exception).\n";
    }
    CORBA::UNKNOWN ex(0, CORBA::COMPLETED_MAYBE);
    CHECK_AND_MAYBE_MARSHALL_SYSTEM_EXCEPTION (UNKNOWN,ex);
  }


anyone has an idea what can be the solutoin?