X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSALOMETraceCollector%2FSALOMETraceCollector.cxx;h=82fdc3e67e9d56445eadec25868b6a2bf074f560;hb=d2cad0f565b5c83ce4d823b757f57d1c78f13e9d;hp=dbc791758001f774110e322b04047cf89eca42ac;hpb=4d57f98cebfdeb55bfcc1a73b698bfe7a36abb4e;p=modules%2Fkernel.git diff --git a/src/SALOMETraceCollector/SALOMETraceCollector.cxx b/src/SALOMETraceCollector/SALOMETraceCollector.cxx index dbc791758..82fdc3e67 100644 --- a/src/SALOMETraceCollector/SALOMETraceCollector.cxx +++ b/src/SALOMETraceCollector/SALOMETraceCollector.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 @@ -33,15 +33,12 @@ #include #include +#include "Utils_SALOME_Exception.hxx" #include "SALOMETraceCollector.hxx" #include "TraceCollector_WaitForServerReadiness.hxx" #include #include CORBA_CLIENT_HEADER(Logger) -// Class attributes initialisation, for class method SALOMETraceCollector::run - -CORBA::ORB_ptr SALOMETraceCollector::_orb = 0; - // ============================================================================ /*! * This class is for use with CORBA, inside SALOME. @@ -56,15 +53,10 @@ BaseTraceCollector* SALOMETraceCollector::instance() { if (_singleton == 0) // no need of lock when singleton already exists { - int ret; - ret = pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone + pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone if (_singleton == 0) // another thread may have got { // the lock after the first test BaseTraceCollector* myInstance = new SALOMETraceCollector(); - int argc=0; - char *_argv=0; - char ** argv = &_argv; - _orb = CORBA::ORB_init (argc, argv); sem_init(&_sem,0,0); // to wait until run thread is initialized pthread_t traceThread; @@ -74,7 +66,7 @@ BaseTraceCollector* SALOMETraceCollector::instance() sem_wait(&_sem); _singleton = myInstance; // _singleton known only when init done } - ret = pthread_mutex_unlock(&_singletonMutex); // release lock + pthread_mutex_unlock(&_singletonMutex); // release lock } return _singleton; } @@ -90,7 +82,7 @@ BaseTraceCollector* SALOMETraceCollector::instance() */ // ============================================================================ -void* SALOMETraceCollector::run(void *bid) +void* SALOMETraceCollector::run(void* /*bid*/) { _threadId = new pthread_t; *_threadId = pthread_self(); @@ -102,7 +94,7 @@ void* SALOMETraceCollector::run(void *bid) SALOME_Logger::Logger_var m_pInterfaceLogger; CORBA::Object_var obj; - obj = TraceCollector_WaitForServerReadiness(_orb,"Logger"); + obj = TraceCollector_WaitForServerReadiness("Logger"); if (!CORBA::is_nil(obj)) m_pInterfaceLogger = SALOME_Logger::Logger::_narrow(obj); if (CORBA::is_nil(m_pInterfaceLogger)) @@ -131,7 +123,8 @@ void* SALOMETraceCollector::run(void *bid) } myTraceBuffer->retrieve(myTrace); - if (!CORBA::is_nil(_orb)) + //if (!CORBA::is_nil(_orb)) + if (true) { if (myTrace.traceType == ABORT_MESS) { @@ -176,8 +169,7 @@ void* SALOMETraceCollector::run(void *bid) SALOMETraceCollector:: ~SALOMETraceCollector() { - int ret; - ret = pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone + pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone if (_singleton) { DEVTRACE("SALOMETraceCollector:: ~SALOMETraceCollector()"); @@ -187,15 +179,15 @@ SALOMETraceCollector:: ~SALOMETraceCollector() if (_threadId) { int ret = pthread_join(*_threadId, NULL); - if (ret) std::cerr << "error close SALOMETraceCollector : "<< ret << std::endl; - else DEVTRACE("SALOMETraceCollector destruction OK"); + if (ret) { std::cerr << "error close SALOMETraceCollector : "<< ret << std::endl; } + else { DEVTRACE("SALOMETraceCollector destruction OK") }; delete _threadId; _threadId = 0; _threadToClose = 0; } _singleton = 0; } - ret = pthread_mutex_unlock(&_singletonMutex); // release lock + pthread_mutex_unlock(&_singletonMutex); // release lock } // ============================================================================ @@ -217,11 +209,23 @@ SALOMETraceCollector::SALOMETraceCollector() */ // ============================================================================ +#include "KernelBasis.hxx" +#include "SALOME_Logger_Server.hxx" +#include "SALOME_Fake_NamingService.hxx" + +#include + extern "C" { SALOMETRACECOLLECTOR_EXPORT BaseTraceCollector *SingletonInstance(void) { + if(getSSLMode()) + { + SALOME_Logger::Logger_var logger = KERNEL::getLoggerServantSA(); + std::unique_ptr ns(new SALOME_Fake_NamingService); + ns->Register(logger,"/Logger"); + } BaseTraceCollector *instance = SALOMETraceCollector::instance(); return instance; }