-// Copyright (C) 2007-2020 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
#include <cstdlib>
#include <omniORB4/CORBA.h>
+#include "Utils_SALOME_Exception.hxx"
#include "SALOMETraceCollector.hxx"
#include "TraceCollector_WaitForServerReadiness.hxx"
#include <SALOMEconfig.h>
#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.
{
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;
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;
}
*/
// ============================================================================
-void* SALOMETraceCollector::run(void *bid)
+void* SALOMETraceCollector::run(void* /*bid*/)
{
_threadId = new pthread_t;
*_threadId = pthread_self();
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))
}
myTraceBuffer->retrieve(myTrace);
- if (!CORBA::is_nil(_orb))
+ //if (!CORBA::is_nil(_orb))
+ if (true)
{
if (myTrace.traceType == ABORT_MESS)
{
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()");
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
}
// ============================================================================
*/
// ============================================================================
+#include "KernelBasis.hxx"
+#include "SALOME_Logger_Server.hxx"
+#include "SALOME_Fake_NamingService.hxx"
+
+#include <memory>
+
extern "C"
{
SALOMETRACECOLLECTOR_EXPORT
BaseTraceCollector *SingletonInstance(void)
{
+ if(getSSLMode())
+ {
+ SALOME_Logger::Logger_var logger = KERNEL::getLoggerServantSA();
+ std::unique_ptr<SALOME_Fake_NamingService> ns(new SALOME_Fake_NamingService);
+ ns->Register(logger,"/Logger");
+ }
BaseTraceCollector *instance = SALOMETraceCollector::instance();
return instance;
}