X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSALOMETraceCollector%2FTraceCollector_WaitForServerReadiness.cxx;h=60525ea1f8f045aeb62b85ea054045c05eee7d5e;hb=HEAD;hp=b7c0770df8030bfa1393c6298ee3b85510ceb0c4;hpb=703cf8ca778de35a6b463d4b4fca7c36697d717f;p=modules%2Fkernel.git diff --git a/src/SALOMETraceCollector/TraceCollector_WaitForServerReadiness.cxx b/src/SALOMETraceCollector/TraceCollector_WaitForServerReadiness.cxx index b7c0770df..60525ea1f 100644 --- a/src/SALOMETraceCollector/TraceCollector_WaitForServerReadiness.cxx +++ b/src/SALOMETraceCollector/TraceCollector_WaitForServerReadiness.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -26,10 +26,15 @@ // $Header$ // #include "TraceCollector_WaitForServerReadiness.hxx" +#include "KernelBasis.hxx" +#include "SALOME_Fake_NamingService.hxx" +#include "OpUtil.hxx" #include #include +#include -#ifdef WIN32 + +#if defined(WIN32) && defined(_MSC_VER) && _MSC_VER < 1900 #include #endif @@ -46,8 +51,7 @@ */ // ============================================================================ -CORBA::Object_ptr TraceCollector_WaitForServerReadiness(CORBA::ORB_ptr orb, - std::string serverName) +CORBA::Object_ptr TraceCollector_WaitForServerReadiness(const std::string& serverName) { long TIMESleep = 500000000; int NumberOfTries = 40; @@ -59,6 +63,7 @@ CORBA::Object_ptr TraceCollector_WaitForServerReadiness(CORBA::ORB_ptr orb, ts_rem.tv_nsec=0; ts_rem.tv_sec=0; + CORBA::ORB_var orb = KERNEL::GetRefToORB(); CORBA::Object_var obj; try @@ -66,60 +71,78 @@ CORBA::Object_ptr TraceCollector_WaitForServerReadiness(CORBA::ORB_ptr orb, // NB. You can't use SALOME_NamingService class because // it uses MESSAGE macro // Otherwise, you will get segmentation fault. - - CosNaming::NamingContext_var inc; - CosNaming::Name name; - name.length(1); - name[0].id = CORBA::string_dup(serverName.c_str()); - CORBA::Object_var theObj=CORBA::Object::_nil(); - - for (int itry=0; itry < NumberOfTries; itry++) + if(getSSLMode()) + { + std::string regName(std::string("/")+serverName); + std::unique_ptr ns(new SALOME_Fake_NamingService); + for (int itry=0; itry < NumberOfTries; itry++) { - try - { - if(!CORBA::is_nil(orb)) - theObj = orb->resolve_initial_references("NameService"); - if (!CORBA::is_nil(theObj)) - inc = CosNaming::NamingContext::_narrow(theObj); - } - catch( CORBA::SystemException& ) - { - std::cout << "TraceCollector_WaitForServerReadiness: " - << "CORBA::SystemException: " - << "Unable to contact the Naming Service" << std::endl; - } - catch(...) - { - std::cout << "TraceCollector_WaitForServerReadiness: " - << "Unknown exception dealing with Naming Service" << std::endl; - } - - obj=CORBA::Object::_nil(); - if(!CORBA::is_nil(inc)) - { - try - { - obj = inc->resolve(name); - if (!CORBA::is_nil(obj)) - { - //cout << "TraceCollector_WaitForServerReadiness: " - // << serverName << " found in CORBA Name Service" << endl; - break; - } - } - catch (const CosNaming::NamingContext::NotFound&) - { - std::cout << "Caught exception: Naming Service can't found Logger"; - } - } -#ifndef WIN32 - nanosleep(&ts_req,&ts_rem); -#else - Sleep(TIMESleep / 1000000); -#endif - std::cout << "TraceCollector_WaitForServerReadiness: retry look for" - << serverName << std::endl; - } + obj = ns->Resolve(regName.c_str()); + if(!CORBA::is_nil(obj)) + break; + #ifndef WIN32 + nanosleep(&ts_req,&ts_rem); + #else + Sleep(TIMESleep / 1000000); + #endif + } + } + else + { + CosNaming::NamingContext_var inc; + CosNaming::Name name; + name.length(1); + name[0].id = CORBA::string_dup(serverName.c_str()); + CORBA::Object_var theObj=CORBA::Object::_nil(); + + for (int itry=0; itry < NumberOfTries; itry++) + { + try + { + if(!CORBA::is_nil(orb)) + theObj = orb->resolve_initial_references("NameService"); + if (!CORBA::is_nil(theObj)) + inc = CosNaming::NamingContext::_narrow(theObj); + } + catch( CORBA::SystemException& ) + { + std::cout << "TraceCollector_WaitForServerReadiness: " + << "CORBA::SystemException: " + << "Unable to contact the Naming Service" << std::endl; + } + catch(...) + { + std::cout << "TraceCollector_WaitForServerReadiness: " + << "Unknown exception dealing with Naming Service" << std::endl; + } + + obj=CORBA::Object::_nil(); + if(!CORBA::is_nil(inc)) + { + try + { + obj = inc->resolve(name); + if (!CORBA::is_nil(obj)) + { + //cout << "TraceCollector_WaitForServerReadiness: " + // << serverName << " found in CORBA Name Service" << endl; + break; + } + } + catch (const CosNaming::NamingContext::NotFound&) + { + std::cout << "Caught exception: Naming Service can't found Logger"; + } + } + #ifndef WIN32 + nanosleep(&ts_req,&ts_rem); + #else + Sleep(TIMESleep / 1000000); + #endif + std::cout << "TraceCollector_WaitForServerReadiness: retry look for" + << serverName << std::endl; + } + } } catch (const CosNaming::NamingContext::NotFound&) {