Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

messaginghub.cpp

Go to the documentation of this file.
00001 
00002 /***************************************************************************
00003  *                                                                         *
00004  *   This program is free software; you can redistribute it and/or modify  *
00005  *   it under the terms of the GNU General Public License as published by  *
00006  *   the Free Software Foundation; either version 2 of the License, or     *
00007  *   (at your option) any later version.                                   *
00008  *                                                                         *
00009  ***************************************************************************/
00010 
00011 
00012  #include "messaginghub.h"
00013 
00014  
00015 StatusMessageWindowHolder :: StatusMessageWindowHolder( const StatusMessageWindowHolder& smw )
00016    : userData( NULL )
00017 {
00018    copy(smw);
00019 }
00020  
00021 StatusMessageWindowHolder::StatusMessageWindowHolder()
00022 {
00023    userData = new UserData;
00024 }
00025 
00026 
00027 void StatusMessageWindowHolder::unlink()
00028 {
00029    if ( userData ) {
00030       userData->counter -= 1;
00031       if ( userData->counter <= 0 ) {
00032          delete userData;
00033          userData = NULL;
00034       }
00035    }
00036 }
00037 
00038 void StatusMessageWindowHolder::copy( const StatusMessageWindowHolder& smw )
00039 {
00040    if ( smw.userData ) {
00041       unlink();
00042       userData = smw.userData;
00043       userData->counter += 1;
00044    } else {
00045       userData = new UserData;
00046    }   
00047 }
00048 
00049 void StatusMessageWindowHolder::close()
00050 {
00051    unlink();
00052 }   
00053 
00054 
00055 StatusMessageWindowHolder& StatusMessageWindowHolder::operator=( const StatusMessageWindowHolder& smw )
00056 {
00057    copy(smw);
00058    return *this;
00059 }
00060 
00061 
00062 StatusMessageWindowHolder::~StatusMessageWindowHolder()
00063 {
00064    unlink();
00065 }
00066 
00067 StatusMessageWindowHolder MessagingHubBase::infoMessageWindow( const ASCString& msg ) { 
00068    return StatusMessageWindowHolder( messageWindowFactory( msg )); 
00069 }
00070 
00071 
00072 void MessagingHubBase::message( MessageType type, const ASCString& message )
00073 {
00074    switch ( type ) {
00075       case FatalError: fatalError( message ); 
00076                        exitHandler();
00077                        break;
00078       case Error:      error ( message ); break;
00079       case Warning:    warning( message ); break;
00080       case InfoMessage: infoMessage( message ); break;
00081       case StatusInfo: statusInformation( message ); break;
00082       case LogMessage: logMessage( message, 0 ); break;
00083    };   
00084 
00085 }
00086 
00087 
00088  
00089 void MessagingHubBase::message( MessageType type, const char* msg, ... )
00090 {
00091    va_list arglist;
00092    va_start ( arglist, msg );
00093 
00094    ASCString my_message;
00095    my_message.vaformat( msg, arglist );
00096    
00097    message( type, my_message );  
00098    
00099    va_end ( arglist );
00100 }
00101  
00102   
00103 void displayLogMessage ( int msgVerbosity, const char* message, ... )
00104 {
00105    va_list arglist;
00106    va_start ( arglist, message );
00107    if ( msgVerbosity <= MessagingHub::Instance().getVerbosity() ) {
00108       char buf[10000];
00109       vsprintf ( buf, message, arglist );
00110 
00111       displayLogMessage( msgVerbosity, ASCString(buf) );
00112    }
00113    va_end ( arglist );
00114 }
00115 
00116 void displayLogMessage ( int msgVerbosity, const ASCString& message )
00117 {
00118    if ( msgVerbosity <= MessagingHub::Instance().getVerbosity() ) 
00119       MessagingHub::Instance().logMessage( message, msgVerbosity );
00120 
00121 }
00122  
00123 void fatalError ( const ASCString& string )
00124 {
00125    MessagingHub::Instance().message( MessagingHubBase::FatalError, string );
00126 }
00127 
00128 void fatalError ( const char* msg, ... )
00129 {
00130    va_list arglist;
00131    va_start ( arglist, msg );
00132 
00133    ASCString message;
00134    message.vaformat( msg, arglist );
00135 
00136    fatalError( message );
00137       
00138    va_end ( arglist );
00139 }
00140 
00141 
00142 void warning ( const ASCString& str )
00143 {
00144    MessagingHub::Instance().message( MessagingHubBase::Warning, str );
00145 }
00146 
00147 void errorMessage ( const ASCString& string )
00148 {
00149    MessagingHub::Instance().message( MessagingHubBase::Error, string );
00150 }
00151 
00152 void infoMessage ( const ASCString& string )
00153 {
00154    MessagingHub::Instance().message( MessagingHubBase::InfoMessage, string );
00155 }
00156 
00157 void statusMessage ( const ASCString& string )
00158 {
00159    MessagingHub::Instance().message( MessagingHubBase::StatusInfo, string );
00160 }
00161 

Generated on Tue Jun 24 01:27:45 2008 for Advanced Strategic Command by  doxygen 1.4.2