2 //=============================================================================
3 // File : SALOME_Logger_Server.cxx
4 // Created : nov 18 10:28:17 2002
5 // Author : Vasily Rusyaev
6 // Project : SALOME/PRO
7 //=============================================================================
9 // SALOME_Logger_Server.cxx: implementation of the SALOME_Logger_Server class.
11 //////////////////////////////////////////////////////////////////////
14 #include "SALOME_Logger_Server.hxx"
16 omni_mutex Logger::myLock;
18 /////////////////////////////////////////////////////////////////////
19 // Construction/Destruction
20 //////////////////////////////////////////////////////////////////////
24 m_putIntoFile = false;
27 Logger::Logger(const char *filename)
29 // m_outputFile.open( filename, ios::out | ios::trunc , filebuf::openprot);
30 m_outputFile.open( filename, ios::out | ios::trunc);
31 if (m_outputFile.is_open())
34 m_putIntoFile = false;
43 void Logger::putMessage(const char* message)
47 m_outputFile << message << flush;
53 int main(int argc, char **argv)
57 cout << "usage: SALOME_Logger_Server [output_file]" << endl;
63 CORBA::ORB_var orb = CORBA::ORB_init(argc,argv) ;
65 CORBA::Object_var obj = orb->resolve_initial_references("RootPOA") ;
66 PortableServer::POA_var poa = PortableServer::POA::_narrow(obj) ;
68 // NB. You can activate the POA before or after
69 // activating objects in that POA.
70 PortableServer::POAManager_var pman = poa->the_POAManager();
75 myLogger = new Logger();
77 myLogger = new Logger(argv[1]);
80 // This activates the object in the root POA (by default), and
81 // returns a reference to it.
82 SALOME_Logger::Logger_var myLoggerRef = myLogger->_this();
84 //NB. You can't use SALOME_NamingService class because it uses MESSAGE macro
85 //Otherwise, you will get segmentation fault.
87 //Get initial naming context
88 CORBA::Object_var theObj = orb->resolve_initial_references("NameService");
89 //Narrow to NamingContext
90 CosNaming::NamingContext_var inc = CosNaming::NamingContext::_narrow(theObj);
94 name[0].id = CORBA::string_dup("Logger");
96 inc->bind(name,myLoggerRef);
98 myLogger->_remove_ref();
104 catch(CORBA::COMM_FAILURE& ex)
106 cerr << "Caught system exception COMM_FAILURE -- unable to contact the "
107 << "object." << endl;
109 catch(CORBA::SystemException&)
111 cerr << "Caught CORBA::SystemException." << endl;
113 catch(CORBA::Exception&)
115 cerr << "Caught CORBA::Exception." << endl;
117 catch(omniORB::fatalException& fe)
119 cerr << "Caught omniORB::fatalException:" << endl;
120 cerr << " file: " << fe.file() << endl;
121 cerr << " line: " << fe.line() << endl;
122 cerr << " mesg: " << fe.errmsg() << endl;
126 cerr << "Caught unknown exception." << endl;