X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSALOMEDS%2FSALOMEDS_Server.cxx;h=bb66e6e9dcf5ad13b7a744c4da3e53d138784e3b;hb=cea440b19b1add32b817dc903ab2474fbc18e1c0;hp=e973353876f99b5ff4614fb55575047c48b9e954;hpb=074699f122e9bfd758dc805ca0023d355ce25ec5;p=modules%2Fkernel.git diff --git a/src/SALOMEDS/SALOMEDS_Server.cxx b/src/SALOMEDS/SALOMEDS_Server.cxx index e97335387..bb66e6e9d 100644 --- a/src/SALOMEDS/SALOMEDS_Server.cxx +++ b/src/SALOMEDS/SALOMEDS_Server.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2019 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -59,7 +59,7 @@ int main(int argc, char** argv) #else CORBA::ORB_var orb = CORBA::ORB_init( argc, argv, "omniORB3" ); #endif - SALOME_NamingService* NS; + SALOME_NamingService* NS = 0; // Obtain a reference to the root POA. long TIMESleep = 500000000; int NumberOfTries = 40; @@ -71,6 +71,7 @@ int main(int argc, char** argv) ts_rem.tv_nsec=0; ts_rem.tv_sec=0; CosNaming::NamingContext_var inc; + PortableServer::POA_var defaultPoa; PortableServer::POA_var poa; CORBA::Object_var theObj; CORBA::Object_var obj; @@ -96,9 +97,22 @@ int main(int argc, char** argv) { obj = orb->resolve_initial_references("RootPOA"); if(!CORBA::is_nil(obj)) - poa = PortableServer::POA::_narrow(obj); - if(!CORBA::is_nil(poa)) - pman = poa->the_POAManager(); + defaultPoa = PortableServer::POA::_narrow(obj); + if(!CORBA::is_nil(defaultPoa)) + pman = defaultPoa->the_POAManager(); + + PortableServer::POAManager_var pman = defaultPoa->the_POAManager(); + CORBA::PolicyList policies; + policies.length(2); + //PortableServer::ThreadPolicy_var threadPol(defaultPoa->create_thread_policy(PortableServer::SINGLE_THREAD_MODEL)); + PortableServer::ThreadPolicy_var threadPol(defaultPoa->create_thread_policy(PortableServer::ORB_CTRL_MODEL)); // default for all POAs + PortableServer::ImplicitActivationPolicy_var implicitPol(defaultPoa->create_implicit_activation_policy(PortableServer::IMPLICIT_ACTIVATION)); // default for Root_POA, NO for others + policies[0] = PortableServer::ThreadPolicy::_duplicate(threadPol); + policies[1] = PortableServer::ImplicitActivationPolicy::_duplicate(implicitPol); + poa = defaultPoa->create_POA("KERNELStandaloneStudySingleThreadPOA",pman,policies); + threadPol->destroy(); + SALOMEDS_Study_i::SetThePOA(poa); + if(!CORBA::is_nil(orb)) theObj = orb->resolve_initial_references("NameService"); if (!CORBA::is_nil(theObj)){ @@ -183,6 +197,7 @@ int main(int argc, char** argv) #endif orb->run(); MESSAGE( "end of SALOME_DS server" ); + NS->Destroy_Name("/Study"); orb->destroy(); } catch(CORBA::SystemException&)