[omniORB] Win32 Question
ryan.tecco
rtecco@voxel.ummu.umich.edu
Fri, 4 Jun 1999 17:39:05 -0400 (EDT)
I made those corrections and the same assertion is still occurring,
despite the changes. Ah!
rt
--------------
ryan.tecco
734.647.8057
microcosm/CAVE programmer
the university of michigan
"when all the pettiness is gone,
what do we really have?"
On Fri, 4 Jun 1999, Steven W. Brenneis wrote:
> ryan.tecco wrote:
> >
> > Steve,
> > I placed the impl_is_ready(0,1) call in the OnIdle function, but it
> > doesn't appear to get run. I am running a computationally expensive
> > ActiveX control in my application. Do you think this is preventing OnIdle
> > from being run?
> >
> > This definitely the solution to the problem. Moving that one line from
> > place to place will either make the app work or crash it.
> >
> > Suggestions would be helpful.
> >
> > rt
> >
> > --------------
> > ryan.tecco
> > 734.647.8057
> > microcosm/CAVE programmer
> > the university of michigan
> > "when all the pettiness is gone,
> > what do we really have?"
> >
>
> Ryan,
>
> We have created a global function:
>
> void* run_orb(void* p) {
> try {
> static_cast<CORBA::BOA*>(p)->impl_is_ready();
> }
> catch (omni_thread_fatal& e) {
> std::cerr << "Fatal omnithread exception. Error code = " <<
> e.error;
> std::cerr << ". BOA thread terminated." << std::endl;
> }
> catch(...) {
> std::cerr << "Unknown BOA exception. BOA thread terminated." <<
> std::endl;
> }
> return 0;
> }
>
> The output to std::cerr is used when this code resides on command-line
> platforms, you can send them to AfxTrace's or to log files or ditch them
> completely on Windows platforms.
>
> Then from WinMain or CWinApp::OnInitInstance we do this:
>
> CORBA::ORB_ptr my_orb = CORBA::ORB_init(argc,argv,"omniORB2");
> CORBA::BOA_ptr my_boa = my_orb->BOA_init(argc,argv,"omniORB2_BOA");
>
> boa_thread = new omni_thread(run_orb,my_boa);
> boa_thread->start();
>
> Actually we have encapsulated all this in a class so what I have above
> is a paraphrase, but you get the idea.
>
> At the end of WinMain or in the CWinApp::OnExitInstance member you will
> need to do something like:
>
> CORBA::BOA::getBOA()->impl_shutdown();
> void* result;
> boa_thread->join(&result);
>
> Good Luck.
>