--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgappfw/utils/inc/ccsdebug.h Fri Apr 16 14:56:15 2010 +0300
@@ -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 <e32svr.h>
+#include <e32std.h>
+#include <f32file.h>
+#include <eikenv.h>
+#include <flogger.h>
+
+// 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<const TDesC>(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<const TDesC>(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<const TDesC>(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<const TDesC>(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<const TDesC> str,...);
+
+ /**
+ * UnMark.
+ * Unmarks the start time for latency measurement.
+ */
+ IMPORT_C void UnMark(TRefByValue<const TDesC> 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<CCsDebug> 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<const TDesC> str);
+
+ /**
+ * __LatencyMarkEnd.
+ * Marks the end time for latency measurement.
+ */
+ IMPORT_C static void __LatencyMarkEnd(TRefByValue<const TDesC> str);
+ };
+
+#endif // __C_CS_DEBUG_H__
+
+// End of File