X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSALOMEDS%2FSALOMEDS_Server.cxx;h=e62a3a26a4c110989ced9044f4770a3c11b6a25a;hb=2545c09242343820cec14e8f6b05bb246a7ebffd;hp=a780abd6cc2c861a34954b83908c2ba6e08f2477;hpb=079701fc30cf485379ed81613e5b2b7b77d95c68;p=modules%2Fkernel.git diff --git a/src/SALOMEDS/SALOMEDS_Server.cxx b/src/SALOMEDS/SALOMEDS_Server.cxx index a780abd6c..e62a3a26a 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-2021 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 @@ -26,11 +26,13 @@ // Module : SALOME // $Header$ // +#include "ArgvKeeper.hxx" +#include "OpUtil.hxx" #include "utilities.h" #include "Utils_SINGLETON.hxx" #include "SALOME_NamingService.hxx" -#include "SALOMEDS_StudyManager_i.hxx" +#include "SALOMEDS_Study_i.hxx" #include #include CORBA_SERVER_HEADER(SALOMEDS) @@ -54,15 +56,12 @@ int main(int argc, char** argv) try { // Initialise the ORB. -#if OMNIORB_VERSION >= 4 - CORBA::ORB_var orb = CORBA::ORB_init( argc, argv, "omniORB4" ) ; -#else - CORBA::ORB_var orb = CORBA::ORB_init( argc, argv, "omniORB3" ); -#endif + SetArgcArgv(argc, argv); + CORBA::ORB_var orb = KERNEL::GetRefToORB() ; + SALOME_NamingService* NS = 0; // Obtain a reference to the root POA. long TIMESleep = 500000000; int NumberOfTries = 40; - int a; timespec ts_req; ts_req.tv_nsec=TIMESleep; ts_req.tv_sec=0; @@ -88,9 +87,9 @@ int main(int argc, char** argv) { if (i!=1) #ifndef WIN32 - a=nanosleep(&ts_req,&ts_rem); + nanosleep(&ts_req,&ts_rem); #else - Sleep(TIMESleep/1000000); + Sleep(TIMESleep/1000000); #endif try { @@ -103,12 +102,14 @@ int main(int argc, char** argv) 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::ImplicitActivationPolicy_var implicitPol(defaultPoa->create_implicit_activation_policy(PortableServer::IMPLICIT_ACTIVATION)); + //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"); @@ -119,14 +120,14 @@ int main(int argc, char** argv) MESSAGE( "SalomeDS Server: Naming Service was found" ); if(EnvL==1) { - CORBA::ORB_var orb1 = CORBA::ORB_init(argc,argv) ; - SALOME_NamingService &NS = *SINGLETON_::Instance() ; - NS.init_orb( orb1 ) ; + CORBA::ORB_var orb1 = KERNEL::GetRefToORB() ; + NS = SINGLETON_::Instance() ; + NS->init_orb( orb1 ) ; for(int j=1; j<=NumberOfTries; j++) { if (j!=1) #ifndef WIN32 - a=nanosleep(&ts_req, &ts_rem); + nanosleep(&ts_req, &ts_rem); #else Sleep(TIMESleep/1000000); #endif @@ -134,7 +135,7 @@ int main(int argc, char** argv) { object = inc->resolve(name); } - catch(CosNaming::NamingContext::NotFound) + catch(CosNaming::NamingContext::NotFound&) { MESSAGE( "SalomeDS Server: Logger Server wasn't found" ); } @@ -166,13 +167,19 @@ int main(int argc, char** argv) // We allocate the objects on the heap. Since these are reference // counted objects, they will be deleted by the POA when they are no // longer needed. - SALOMEDS_StudyManager_i * myStudyManager_i = new SALOMEDS_StudyManager_i(orb,poa); + SALOMEDS_Study_i * myStudy_i = new SALOMEDS_Study_i(orb); // Activate the objects. This tells the POA that the objects are // ready to accept requests. - PortableServer::ObjectId_var myStudyManager_iid = poa->activate_object(myStudyManager_i); - myStudyManager_i->register_name("/myStudyManager"); - myStudyManager_i->_remove_ref(); + PortableServer::ObjectId_var myStudy_iid = poa->activate_object(myStudy_i); + SALOMEDS::Study_var Study = myStudy_i->_this(); + if (!NS) + { + NS = SINGLETON_::Instance(); + NS->init_orb( orb ); + } + NS->Register(Study, "/Study"); + myStudy_i->_remove_ref(); // Obtain a POAManager, and tell the POA to start accepting // requests on its objects. @@ -188,6 +195,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&)