X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FLogger%2FSALOME_Logger_Server.cxx;h=24e431c7f3e9ac98c2528504d2e6db1b3ac1b44f;hb=e379646b647cf817ef93f995cbd123458eae0c52;hp=c3f7acce130c8aaa2e9052a581823d2fac008483;hpb=0c092bf59ee4120ef16d351b3d882ef1165570cd;p=modules%2Fkernel.git diff --git a/src/Logger/SALOME_Logger_Server.cxx b/src/Logger/SALOME_Logger_Server.cxx index c3f7acce1..24e431c7f 100644 --- a/src/Logger/SALOME_Logger_Server.cxx +++ b/src/Logger/SALOME_Logger_Server.cxx @@ -1,19 +1,41 @@ -// SALOME Logger : CORBA server managing trace output +// Copyright (C) 2007-2008 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 +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. // -// Copyright (C) 2003 CEA/DEN, EDF R&D +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// SALOME Logger : CORBA server managing trace output // File : SALOME_Logger_Server.cxx // Author : Vasily Rusyaev // Module : SALOME - -using namespace std; +// #include #include "SALOME_Logger_Server.hxx" #include #include -#include +#ifndef WIN32 +# include +#endif + +#ifdef WIN32 +#include +#endif + omni_mutex Logger::myLock; ///////////////////////////////////////////////////////////////////// @@ -28,7 +50,7 @@ Logger::Logger() Logger::Logger(const char *filename) { // m_outputFile.open( filename, ios::out | ios::trunc , filebuf::openprot); - m_outputFile.open( filename, ios::out | ios::trunc); + m_outputFile.open( filename, std::ios::out | std::ios::trunc); if (m_outputFile.is_open()) m_putIntoFile = true; else @@ -45,112 +67,14 @@ void Logger::putMessage(const char* message) { myLock.lock(); if (m_putIntoFile) - m_outputFile << message << flush; + + m_outputFile << message << std::flush; else - cout << message; + std::cout << message; myLock.unlock(); } void Logger::ping() { - cout<<" Logger::ping() pid "<< getpid()< 2) - { - cout << "usage: SALOME_Logger_Server [output_file]" << endl; - exit(1); - } - try - { - //Initialize the ORB - long TIMESleep = 250000000; - int NumberOfTries = 40; - int a; - timespec ts_req; - ts_req.tv_nsec=TIMESleep; - ts_req.tv_sec=0; - timespec ts_rem; - ts_rem.tv_nsec=0; - ts_rem.tv_sec=0; - CosNaming::NamingContext_var inc; - CORBA::ORB_var orb; - SALOME_Logger::Logger_var myLoggerRef; - CORBA::Object_var theObj; - Logger* myLogger; - CORBA::Object_var obj; - PortableServer::POA_var poa; - PortableServer::POAManager_var pman; - orb = CORBA::ORB_init(argc,argv) ; - for (int i = 1; i<=NumberOfTries; i++){ - if (i!=1) - a=nanosleep(&ts_req,&ts_rem); - obj = orb->resolve_initial_references("RootPOA") ; - if(!CORBA::is_nil(obj)) - poa = PortableServer::POA::_narrow(obj) ; - pman = poa->the_POAManager(); - // NB. You can activate the POA before or after - // activating objects in that POA. - - // This activates the object in the root POA (by default), and - // returns a reference to it. - //NB. You can't use SALOME_NamingService class because it uses MESSAGE macro - //Otherwise, you will get segmentation fault. - //Get initial naming context - try{ - if(!CORBA::is_nil(orb)) - theObj = orb->resolve_initial_references("NameService"); - //Narrow to NamingContext - if (!CORBA::is_nil(theObj)){ - inc = CosNaming::NamingContext::_narrow(theObj); - } - }catch(CORBA::COMM_FAILURE&) - { - cout<<"Logger Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service"<_this(); - CosNaming::Name name; - name.length(1); - name[0].id = CORBA::string_dup("Logger"); - inc->bind(name,myLoggerRef); - myLogger->_remove_ref(); - pman->activate(); - orb->run() ; - orb->destroy() ; - } - catch(CORBA::COMM_FAILURE& ex) - { - cerr << "Caught system exception COMM_FAILURE -- unable to contact the " - << "object." << endl; - } - catch(CORBA::SystemException&) - { - cerr << "Caught CORBA::SystemException." << endl; - } - catch(CORBA::Exception&) - { - cerr << "Caught CORBA::Exception." << endl; - } - catch(omniORB::fatalException& fe) - { - cerr << "Caught omniORB::fatalException:" << endl; - cerr << " file: " << fe.file() << endl; - cerr << " line: " << fe.line() << endl; - cerr << " mesg: " << fe.errmsg() << endl; - } - catch(...) - { - cerr << "Caught unknown exception." << endl; - } + //cout<<" Logger::ping() pid "<< getpid()<