Hello,
I've write a little server which could be summary like this:
void
ONED::CosTransactionsApp::_sighandler( int )
{
SmartLocker<XRecBool>( _request_shutdown )->value( true );
}
main()
{
signal( SIGINT , _sighandler );
signal( SIGTERM , _sighandler );
_orb = CORBA::ORB_init( _argc , _argv , "mico-local-orb" );
CORBA::Object_var obj = _orb->resolve_initial_references( "RootPOA" );
PortableServer::POA_var rootPOA = PortableServer::POA::_narrow( obj );
PortableServer::POAManager_var mgr = rootPOA->the_POAManager();
CORBA::PolicyList pl;
pl.length(2);
pl[0] = rootPOA->create_lifespan_policy( PortableServer::PERSISTENT );
pl[1] = rootPOA->create_id_assignment_policy( PortableServer::USER_ID );
PortableServer::POA_var factoryPOA = rootPOA->create_POA(
"TransactionService" , mgr , pl );
PortableServer::POA_var controlPOA = rootPOA->create_POA( "ControlPOA" , mgr
, pl );
TransactionFactoryImpl* servant =
new ONED::OTS::TransactionFactoryImpl( controlPOA , _orb );
PortableServer::ObjectId_var oid =
PortableServer::string_to_ObjectId( "TransactionService" );
factoryPOA->activate_object_with_id( oid , servant );
mgr->activate();
bool quit = false;
do {
if ( _orb->work_pending() )
_orb->perform_work();
quit = SmartLocker<XRecBool>(_request_shutdown)->value();
} while ( ! quit );
std::cerr << "=> Shutdown ...";
_orb->shutdown( TRUE );
std::cerr << "[ok]\n";
return 0;
}
It seems that _orb->shutdown( ) hang up for ever end never return. I've tried
TRUE and FALSE as parameters, but "[ok]" is never printed while "=> Shutdown
..." is printed.
Any idea ?
+--------------------+
+ Laurent Marzullo
+
_______________________________________________
Mico-devel mailing list
[email protected]
http://www.mico.org/mailman/listinfo/mico-devel