diff -r 6a20128ce557 -r ebfee66fde93 messagingapp/msgappfw/utils/inc/ccsdebug.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingapp/msgappfw/utils/inc/ccsdebug.h Fri Jun 04 10:25:39 2010 +0100 @@ -0,0 +1,447 @@ +/* +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: CS Server Debug macros + * +*/ + +#ifndef __C_CS_DEBUG_H__ +#define __C_CS_DEBUG_H__ + +// INCLUDE FILES + +// SYSTEM INCLUDES +#include +#include +#include +#include +#include + +// USER INCLUDES + +// FORWARD DECLARATIONS + +/** + * MAX_BUFF_LENGTH. + * maximum buffer used for logging + * + */ +#define MAX_BUFF_LENGTH 255 + +/** + * TIME_FACTOR. + * time factor used to convert latency time into milli seconds + * + */ +#define TIME_FACTOR 1000 + +/** + * KLogDrive. + * Log Drive + */ +_LIT(KLogDrive, "c"); +/** + * KLogDirFullName. + * Log Directory Full Name + */ +_LIT(KLogDirFullName, "\\logs\\"); + +/** + * KLogDir. + * CS Log Directory + */ +_LIT(KLogDir, "Cs"); + +/** + * KLogDir. + * CS Log Directory + */ +_LIT(KLogFile, "CsServer.txt"); + +/** + * KLogBanner. + * CS Log Banner + */ +_LIT( KLogBanner, "CONVERSATION SERVER"); + +/** + * KCSTimeFormatString. + * Time formatting string. + */ +_LIT(KCSTimeFormatString, "%H:%T:%S:%*C2"); + +/** + * Debug Marcos + */ +#ifdef _DEBUG + +/** + * Debug Marcos for WINS. + */ +#ifdef __WINS__ + +/** + * PRINT. + * Debug Marcos to print text. + * + * @param txt Text to be printed on console + */ +#define PRINT( txt ) RDebug::Print( txt ); + +/** + * PRINT1. + * Debug Marco to print text and arg1. + * + * @param txt Text to be printed on console + * @param arg1 Argument to be printed on console + */ +#define PRINT1( txt, arg1 ) RDebug::Print( txt, arg1 ); + +/** + * PRINT2. + * Debug Marco to print text, arg1 and arg2. + * + * @param txt Text to be printed on console + * @param arg1 Argument to be printed on console + * @param arg2 Argument to be printed on console + */ +#define PRINT2( txt, arg1, arg2 ) RDebug::Print( txt, arg1, arg2 ); + +/** + * CONSERVER_CREATE. + * Debug Marco to create folder and file to log debug txt. + * Not needed for WINS. + */ +#define CONSERVER_CREATE + +#else + +/** + * Debug Marcos for ARM + */ + +/** + * PRINT. + * Debug Marco to log text. + * + * @param txt Text to be logged in file + */ +#define PRINT( txt ) RFileLogger::Write(KLogDir,KLogFile, \ + EFileLoggingModeAppend,txt); + +/** + * PRINT1. + * Debug Marco to log text and arg1 + * + * @param txt Text to be logged in file + * @param arg1 Argument to be logged in file + */ +#define PRINT1( txt, arg1 ) RFileLogger::WriteFormat(KLogDir, \ + KLogFile,EFileLoggingModeAppend, \ + TRefByValue(txt),arg1); + +/** + * PRINT2. + * Debug Marco to log text, arg1 and arg2. + * + * @param txt Text to be logged in file + * @param arg1 Argument to be logged in file + * @param arg2 Argument to be logged in file + */ +#define PRINT2( txt, arg1, arg2 ) RFileLogger::WriteFormat(KLogDir, \ + KLogFile,EFileLoggingModeAppend, \ + TRefByValue(txt),arg1,arg2); + +/** + * CONSERVER_CREATE. + * Debug Marco to create folder and file to log debug txt. + */ +#define CONSERVER_CREATE {FCsCreate( );} + +/** + * FCsCreate. + * Function creates folder and file to log debug txt. + */ +inline void FCsCreate( ) + { + TFileName path(KLogDrive); + path.Append(_L(":")); + path.Append(KLogDirFullName); + path.Append(KLogDir); + path.Append(_L("\\")); + RFs& fs = CEikonEnv::Static()->FsSession(); + fs.MkDirAll(path); + RFileLogger::WriteFormat(KLogDir, KLogFile, EFileLoggingModeOverwrite, KLogBanner); + } +#endif // __WINS__ + +#else +/** + * Empty Debug Marcos + */ + +/** + * PRINT + * Do nothing + */ +#define PRINT( txt ) + +/** + * PRINT1 + * Do nothing + */ +#define PRINT1( txt, arg1 ) + +/** + * PRINT2 + * Do nothing + */ +#define PRINT2( txt, arg1, arg2 ) + +/** + * CONSERVER_CREATE + * Do nothing + */ + +/** + * CONSERVER_CREATE. + * Debug Marco to create folder and file to log debug txt. + */ +#define CONSERVER_CREATE {FCsCreate( );} + +/** + * FCsCreate. + * Function creates folder and file to log debug txt. + */ +inline void FCsCreate( ) + { + TFileName path(KLogDrive); + path.Append(_L(":")); + path.Append(KLogDirFullName); + path.Append(KLogDir); + path.Append(_L("\\")); + RFs& fs = CEikonEnv::Static()->FsSession(); + fs.MkDirAll(path); + RFileLogger::WriteFormat(KLogDir, KLogFile, EFileLoggingModeOverwrite, KLogBanner); + } + +#endif // _DEBUG + +/** + * __LATENCY_MARK. + * Marco Marks the start time for latency measurement + * + * @param str String to be logged + */ +#define __LATENCY_MARK( str ) CCsDebugWrapper::__LatencyMarkStartL(str); + +/** + * __LATENCY_MARKEND. + * Marco Marks the end time for latency measurement + * + * @param str String to be logged + */ +#define __LATENCY_MARKEND( str ) CCsDebugWrapper::__LatencyMarkEnd(str); + +/** + * PRINT_LATENCY. + * Debug Marco to log text. + * + * @param txt Text to be logged in file + */ +#define PRINT_LATENCY( txt ) RFileLogger::Write(KLogDir,KLogFile, \ + EFileLoggingModeAppend,txt); + +/** + * PRINT1. + * Debug Marco to log text and arg1 + * + * @param txt Text to be logged in file + * @param arg1 Argument to be logged in file + */ +#define PRINT_LATENCY1( txt, arg1 ) RFileLogger::WriteFormat(KLogDir, \ + KLogFile,EFileLoggingModeAppend, \ + TRefByValue(txt),arg1); + +/** + * PRINT_LATENCY2. + * Debug Marco to log text, arg1 and arg2. + * + * @param txt Text to be logged in file + * @param arg1 Argument to be logged in file + * @param arg2 Argument to be logged in file + */ +#define PRINT_LATENCY2( txt, arg1, arg2 ) RFileLogger::WriteFormat(KLogDir, \ + KLogFile,EFileLoggingModeAppend, \ + TRefByValue(txt),arg1,arg2); + +#define PRINT_TIMESTAMP(a) {_LIT(temp, a); \ + TTime time; time.HomeTime(); \ + TBuf<256> buffer; \ + time.FormatL( buffer, KCSTimeFormatString ); \ + buffer.Insert(0, temp); \ + RFileLogger::WriteFormat(KLogDir, \ + KLogFile, \ + EFileLoggingModeAppend, \ + buffer); } + +// CLASS DECLARATION + +/** + * CCsDebug + * Debug Class + * + * @remarks Lib: CsUtils.lib + * @since S60 v5.0 + */ +class CCsDebug : public CBase + { + + public: // Constructor and New functions + + /** + * NewL. + * Two-phased constructor. + * + * @return A pointer to the created instance of CCsDebug. + */ + IMPORT_C static CCsDebug* NewL(); + + /** + * Mark. + * Marks the start time for latency measurement. + */ + IMPORT_C void Mark(TRefByValue str,...); + + /** + * UnMark. + * Unmarks the start time for latency measurement. + */ + IMPORT_C void UnMark(TRefByValue str,...); + + private: // Constructor + + /** + * ConstructL. + * Performs the second phase construction of a + * CCsDebug object. + */ + void ConstructL(); + + private: // Data + + /** + * startTime. + * Start Time, when measurement is started + * Own. + */ + TTime startTime; + + /** + * endTime. + * End Time, when measurement is ended + */ + TTime endTime; + }; + +/** + * CCsDebugArr + * Debug Array + * + * @remarks Lib: CsUtils.lib + * @since S60 v5.0 + */ +class CCsDebugArr : public CBase + { + +public: // Constructor and New functions + + /** + * NewL. + * Two-phased constructor. + * + * @return A pointer to the created instance of CCsDebugArr. + */ + IMPORT_C static CCsDebugArr* NewL(); + + /** + * Push. + * Push an element into the array + * + * @param dbg Reference to instance of CCsDebug. + */ + IMPORT_C void Push(CCsDebug& dbg); + + /** + * Pop. + * Pop an element from the array + * + * @return A pointer to the instance of CCsDebug. + */ + IMPORT_C CCsDebug* Pop(); + + /** + * IsEmpty. + * Check if array is empty. + * + * @return ETure if array is empty, otherwise EFalse. + */ + IMPORT_C TBool IsEmpty(); + +public: // Destructor + + /** + * ~CCsDebugArr. + * Destructor. + * Destroys the object and release all memory objects. + */ + ~CCsDebugArr(); + +private: // data + + /** + * debugArray. + * Array of pointer to CCsDebug objects. + * Own. + */ + RPointerArray debugArray; + }; + +/** + * CCsDebugWrapper + * Debug Wrapper + * + * @remarks Lib: CsUtils.lib + * @since S60 v5.0 + */ +class CCsDebugWrapper : public CBase + { + +public: //New functions + + /** + * __LatencyMarkStartL. + * Marks the start time for latency measurement. + */ + IMPORT_C static void __LatencyMarkStartL(TRefByValue str); + + /** + * __LatencyMarkEnd. + * Marks the end time for latency measurement. + */ + IMPORT_C static void __LatencyMarkEnd(TRefByValue str); + }; + +#endif // __C_CS_DEBUG_H__ + +// End of File