Listing 6: Logger adapter

class Logger
{
private:
   LoggerService_Logger_ptr impl_;
   ...
public:
   enum MessageLevel { LOW = LoggerService_LOW,
                       MEDIUM = LoggerService_MEDIUM,
                       HIGH = LoggerService_HIGH };
   ...
   virtual void 
   logMessage(MessageLevel level,const string& message);
   virtual void logMessage(MessageLevel level,
                           const string& fileName,
                           long lineNumber,
                           const string& message);
   virtual void logMessage(MessageLevel level,
                           const string& className,
                           const string& methodName,
                           const string& message);
   virtual vector<string,allocator> messages(MessageLevel level);
};  // end Logger

Logger::Logger()
{
   // acquire a reference to the Logger
   const string loggerName("Logger");
   CORBA_Environment env;
   impl_ 
      = LoggerService_Logger::_import
           (CORBAContext::instance().orb(), loggerName.c_str(),
            env);

   if (env.exception())
      throw string("Logger::Logger(): CORBA exception raised:  ")
         + CORBAContext::exceptionDescription(env.exception());
   else if (CORBA_is_nil(impl_))
      throw 
       string("Logger::Logger(): Cannot obtain a reference for ")
          + loggerName
          + string(" from the Naming Service.");
}  // end Logger::Logger()

— End of Listing —