messagingapp/msgappfw/utils/inc/ccsdebug.h
changeset 23 238255e8b033
--- /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