Hauptseite | Klassenhierarchie | Alphabetische Liste | Auflistung der Klassen | Auflistung der Dateien | Klassen-Elemente

TraceObject.cpp

00001 /* **************************************************************************** 00002 ** 00003 ** Projekt : Class Library 00004 ** File : TraceObject.cpp 00005 ** Version : $Revision: 1.2 $ 00006 ** Author : Axel Schmidt 00007 ** Copyright : (C) 2001 by Analytica GmbH 00008 **----------------------------------------------------------------------------- 00009 ** 00010 ** $Id: TraceObject.cpp,v 1.2 2001/07/13 06:52:15 AxelSchmidt Exp $ 00011 ** 00012 ** $Log: TraceObject.cpp,v $ 00013 ** Revision 1.2 2001/07/13 06:52:15 AxelSchmidt 00014 ** Macros geändert 00015 ** 00016 ** Revision 1.1 2001/07/12 14:34:51 AxelSchmidt 00017 ** first version 00018 ** 00019 ******************************************************************************/ 00020 00021 #include "stdafx.h" 00022 #include "TraceObject.h" 00023 #include <iostream> 00024 #include <cstring> 00025 00026 CTraceObject::CTraceObject() 00027 { 00028 // Standart Trace-Levels 00029 #ifdef _DEBUG 00030 m_nTraceLevelsActive = MT_ERROR | MT_INFO | MT_WARNING | MT_DEBUG; 00031 #else 00032 m_nTraceLevelsActive = MT_ERROR | MT_INFO | MT_WARNING; 00033 #endif 00034 } 00035 00036 CTraceObject::~CTraceObject() 00037 { 00038 00039 } 00040 00041 void CTraceObject::SetTraceLevel( int nTraceLevelMask ) 00042 { 00043 m_nTraceLevelsActive = nTraceLevelMask; 00044 } 00045 00046 bool CTraceObject::GetIsTraceLevelAktivated( CTraceObject::eTraceLevel eLevel ) const 00047 { 00048 return (m_nTraceLevelsActive & eLevel ) == eLevel; 00049 } 00050 00051 void CTraceObject::AddTrace( const char * lpszMsg, CTraceObject::eTraceLevel eLevel) 00052 { 00053 00054 if ( GetIsTraceLevelAktivated( eLevel ) == true ) 00055 { 00056 switch (eLevel) 00057 { 00058 case CTraceObject::MT_ERROR: 00059 std::cerr << "Error: " << lpszMsg << std::endl; 00060 break; 00061 case CTraceObject::MT_INFO: 00062 std::cout << "Info: " << lpszMsg << std::endl; 00063 break; 00064 case CTraceObject::MT_WARNING: 00065 std::cout << "Warning: " << lpszMsg << std::endl; 00066 break; 00067 case CTraceObject::MT_DEBUG: 00068 std::cout << "Debug: " << lpszMsg << std::endl; 00069 break; 00070 } 00071 } 00072 } 00073 00074 void CTraceObject::AddTrace( std::ostrstream & oStream, CTraceObject::eTraceLevel eLevel ) 00075 { 00076 std::string sTraceText; 00077 00078 oStream << std::ends; // Stelle sicher das das Ende mit '\0' versehen wurde 00079 00080 sTraceText += oStream.str(); 00081 // Erlaube wieder Zugriffe auf den internen stream buffer 00082 oStream.freeze(0); 00083 // Setze den stream buffer wieder auf den Anfang zurück 00084 oStream.seekp(0, std::ios::beg ); 00085 00086 AddTrace( sTraceText.c_str(), eLevel ); 00087 } 00088 00089 std::string CTraceObject::GetLastErrorText( DWORD dwError ) 00090 { 00091 std::string sErrorText(""); 00092 00093 LPTSTR lpszTemp = NULL; 00094 00095 if ( dwError == 0 ) 00096 { 00097 dwError = GetLastError(); 00098 } 00099 DWORD dwRet = ::FormatMessage( 00100 FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |FORMAT_MESSAGE_ARGUMENT_ARRAY, 00101 0, 00102 dwError, 00103 0, 00104 (LPTSTR)&lpszTemp, 00105 0, 00106 0 00107 ); 00108 00109 if ( dwRet > 0 ) 00110 { 00111 if ( dwRet > 2 ) lpszTemp[ strlen(lpszTemp)-2 ] = 0; 00112 sErrorText = lpszTemp; 00113 } 00114 00115 if( lpszTemp ) 00116 { 00117 LocalFree( HLOCAL(lpszTemp) ); 00118 } 00119 return sErrorText; 00120 }

Erzeugt am Tue Mar 11 14:25:07 2008 für AnalyticaTCPIP-COMMclass von doxygen 1.3.7