--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rtsecuritymanager/inc/rtsecmgrtracer.h Mon Mar 30 12:51:20 2009 +0300
@@ -0,0 +1,180 @@
+/*
+* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:
+*
+*/
+
+
+
+
+
+
+#ifndef _RTSECMGRTRACE_H
+#define _RTSECMGRTRACE_H
+
+#include <e32base.h>
+
+
+// Define tracer logging method if defined RTSECMGR_TRACE
+//
+// Emulator = Log to RDebug
+// Device = Log to file (RFileLogger)
+
+// ============================================================================
+
+
+#ifndef RTSECMGR_TRACE // Logging off
+
+ #define RTSecMgrTraceFunction(func)
+ #define RTSecMgrTraceFunctionRet(func,format)
+ #define RTSecMgrCreateTraceFile()
+ #define RTSecMgrTracePrintRet(a)
+#else // Logging on
+
+
+ // Macro to print function entry, exit and leave.
+ // Example: RTSecMgrTraceFunction("CMyClass::MyFunction");
+ #define RTSecMgrTraceFunction(func) TTracer function_tracer( _S(func), _S("") );
+
+ // Macro to print function return value in addition to entry, exit
+ // and leave conditions Second parameter is a formatting string used
+ // to print the return value Example to print an integer return value:
+ // RTSecMgrTraceFunctionRet("CMyclass::MyFunction", "%d");
+ #define RTSecMgrTraceFunctionRet(func,format) TTracer func_tracer( _S(func), _S(format) );
+
+ #define RTSecMgrTracePrintRet(a) RFileLogger::WriteFormat(KLogDir, \
+ KLogFile,EFileLoggingModeAppend,a);
+
+ /* #if (defined(__WINS__) || defined(__WINSCW__)) // Print to RDebug
+
+ #include <e32debug.h>
+
+ #define TRACER_PRINT(a) RDebug::Print(a,&iFunc);
+ #define TRACER_PRINT_RET(a,b) RDebug::Print(a,&iFunc,b);
+ #define RTSecMgrCreateTraceFile()
+
+ #else //Print to file
+ */
+ #include <f32file.h>
+ #include <flogger.h>
+
+ _LIT( KLogDir, "rtsecmgrtracelogs" ); // Log directory: C:\logs\rtsecmgrtracelogs
+ _LIT( KLogFile, "rtsecmgrtracelogs.txt" ); // Log file: c:\logs\tracer\rtsecmgrtracelogs.txt
+ _LIT( KFullPath, "c:\\logs\\rtsecmgrtracelogs\\" );
+ _LIT(KFullLogFileName , "c:\\logs\\rtsecmgrtracelogs\\rtsecmgrtracelogs.txt") ;
+
+ LOCAL_C void CreateLogFile() // Local function for creating Logdirectory and LogFile
+ {
+ RFs fs;
+ RFile fileHandle ;
+ if( fs.Connect() == KErrNone )
+ {
+ fs.MkDirAll( KFullPath );
+ if(fileHandle.Open(fs ,KFullLogFileName , EFileWrite | EFileShareAny ) == KErrNotFound)
+ {
+ fileHandle.Create(fs ,KFullLogFileName , EFileWrite | EFileShareAny ) ;
+ }
+ fileHandle.Close() ;
+ fs.Close();
+ }
+ }
+
+ #define RTSecMgrCreateTraceFile() CreateLogFile();
+
+ #define TRACER_PRINT(a) RFileLogger::WriteFormat(KLogDir, \
+ KLogFile,EFileLoggingModeAppend,a,&iFunc);
+ #define TRACER_PRINT_RET(a,b) RFileLogger::WriteFormat(KLogDir, \
+ KLogFile,EFileLoggingModeAppend,a,&iFunc,b);
+
+ // #endif
+
+ _LIT( KLogEnter, "%S: ENTER" );
+ _LIT( KLogExit, "%S: EXIT" );
+ _LIT( KLogLeave, "%S: LEAVE!" );
+ _LIT( KLogExitRet, "%S: EXIT, Returning " );
+
+ /**
+ * Simple tracer class that logs function enter, exit or leave
+ */
+ class TTracer
+ {
+ public:
+
+ /**
+ * inline constructor to write log of entering a function
+ */
+ TTracer( const TText* aFunc, const TText* aRetFormat )
+ : iFunc( aFunc )
+ , iRetFormat( aRetFormat )
+ {
+ TRACER_PRINT( KLogEnter );
+ }
+
+ /**
+ * inline destructor to write log of exiting a function
+ * normally or with a leave
+ */
+ ~TTracer()
+ {
+ if ( std::uncaught_exception() ) // Leave is an exception
+ {
+ // The function exited with a leave
+ TRACER_PRINT( KLogLeave );
+ }
+ else
+ {
+ // The function exited normally
+ if ( iRetFormat.Length() == 0 )
+ {
+ TRACER_PRINT( KLogExit );
+ }
+ else
+ {
+ // Log the return value
+ #ifdef __WINS__
+ TInt32 retVal = 0;
+
+ // The assembly bit. This needs to be reimplemented
+ // for every target.
+ _asm( mov retVal, ebx );
+
+ TBuf<100> format( KLogExitRet );
+ format.Append( iRetFormat );
+ TRACER_PRINT_RET( format, retVal );
+ #else
+ TRACER_PRINT( KLogExit );
+
+ #endif
+ }
+ }
+ }
+
+ private:
+
+ /**
+ * Pointer descriptor to function signature that is to be logged.
+ */
+ TPtrC iFunc;
+
+
+ /**
+ * Formatting string used to print the function return value
+ */
+ TPtrC iRetFormat;
+
+ };
+
+#endif // RTSECMGR_TRACE
+
+#endif // _RTSECMGRTRACE_H
\ No newline at end of file