-// Copyright (C) 2007-2014 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.
- * Type of trace (and corresponding class) is choosen in LocalTraceBufferPool.
+ * Type of trace (and corresponding class) is chosen in LocalTraceBufferPool.
*
* Guarantees a unique object instance of the class (singleton thread safe)
* a separate thread for loop to print traces is launched.
{
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;
}
// ============================================================================
/*!
* In a separate thread, loop to print traces.
- * Mutex garantees intialisation on instance method is done and only one run
+ * Mutex guarantees initialisation on instance method is done and only one run
* allowed (double check ...)
* Loop until there is no more buffer to print,
* and no ask for end from destructor.
*/
// ============================================================================
-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
}
// ============================================================================