Listing 10: CORBA Logger implementation

void 
LoggerCORBAImpl::logMessage(LoggerService_MessageLevel level,
                            const char* message,
                            CORBA_Environment& env)
{
   logger_.logMessage((Logger::MessageLevel)level,message);
}  // end LoggerCORBAImpl::logMessage(...


void 
LoggerCORBAImpl::logMessageAndFile
   (LoggerService_MessageLevel level,
    const char* fileName,
    CORBA_Long lineNumber,
    const char* message,
    CORBA_Environment& env)
{
   logger_.logMessage(
      (Logger::MessageLevel)level,fileName,lineNumber,message);
}  // end LoggerCORBAImpl::logMessageAndFile(...


void 
LoggerCORBAImpl::logMessageAndMethod
   (LoggerService_MessageLevel level,
    const char* className,
    const char* methodName,
    const char* message,
    CORBA_Environment& env)
{
  
   logger_.logMessage
      ((Logger::MessageLevel)level,className,methodName,message);
}  // end LoggerCORBAImpl::logMessageAndMethod(...


LoggerService_StringSequence*
LoggerCORBAImpl::messagesByLevel
   (LoggerService_MessageLevel level, CORBA_Environment& env)
{
   vector<string,allocator> messages
      = logger_.messages((Logger::MessageLevel)level);

   LoggerService_StringSequence* sequence = 0;

   if (messages.size())
     {
     char** messageArray
        = LoggerService_StringSequence::allocbuf
             (messages.size());
     sequence 
        = new LoggerService_StringSequence(messages.size(),
                                           messages.size(),
                                           messageArray,
                                           CORBA_TRUE);

     int i = 0;
     for (vector<string,allocator>::iterator it 
        = messages.begin();
          it != messages.end();
          it++)
        (*sequence)[i++] = strdup((*it).c_str());
     }

   return sequence;
}  // end LoggerCORBAImpl::messagesByLevel(...

— End of Listing —