telephonyserverplugins/ctsydispatchlayer/exportinc/ltsylogger.h
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
child 42 3adadc800673
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/ctsydispatchlayer/exportinc/ltsylogger.h	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,109 @@
+// Copyright (c) 2008-2009 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:
+// CommsDebugUtil logging support for the CTSY Dispatcher.
+//
+
+
+
+
+/**
+ @file
+ @internalAll 
+*/
+
+#ifndef __LTSYLOGGER_H_
+#define __LTSYLOGGER_H_
+
+#include <e32base.h>
+
+#ifdef _DEBUG
+
+#include <comms-infras/commsdebugutility.h>
+_LIT8(KTsySubSystem, "tsy");
+_LIT8(KTsyCompnt, "ctsydis");
+
+	/** Regular logging macro */
+	#define LOG(format, ARGS...)	\
+		{ \
+		RFileLogger::WriteFormat(KTsySubSystem, KTsyCompnt, format, ##ARGS); \
+		}
+	
+	/** Macros to log function entry and exit */
+	//#define TSYLOGENTRYEXIT(aFunc) 	TLogEntryExit __logger((aFunc), KTsyCompnt)
+	
+	//#define TSYLOGENTRYEXITARGS(aFunc, aFmt, ARGS...) 	TLogEntryExit __logger((aFunc), KTsyCompnt, (aFmt), ##ARGS); 
+
+	#define TSYLOGENTRYEXIT 	/*lint -save -e40*/	TLogEntryExit __logger(TPtrC8((const TUint8*)__PRETTY_FUNCTION__), KTsyCompnt)/*lint -restore*/
+	
+	// N.B. The function name does not need to be specified
+	#define TSYLOGENTRYEXITARGS(aFmt, ARGS...) 	/*lint -save -e40*/ TLogEntryExit __logger(TPtrC8((const TUint8*)__PRETTY_FUNCTION__), KTsyCompnt, (aFmt), ##ARGS)/*lint -restore*/
+
+	#define TSYLOGSETEXITERR(aErr) 	__logger.SetExitErrorCode( aErr )
+
+
+/**
+Automatic class that logs function entry and exit
+*/
+class TLogEntryExit
+	{
+public:
+	IMPORT_C TLogEntryExit(const TDesC8& aFnName, const TDesC8& aLayer);
+	IMPORT_C TLogEntryExit(const TDesC8& aFnName, const TDesC8& aLayer, TRefByValue<const TDesC8> aFmt, ...);
+	IMPORT_C TLogEntryExit(const TDesC8& aFnName, const TDesC8& aLayer, TRefByValue<const TDesC16> aFmt, ...);
+	IMPORT_C ~TLogEntryExit();
+	inline TInt SetExitErrorCode(TInt aErr);
+private:
+	TPtrC8 iFnName;
+	TPtrC8 iLayer;
+	TInt   iErr;
+	}; // class TLogEntryExit
+
+/** 
+Set the error that will be logged at function exit
+
+@param aErr error code to log
+@return the given error code. This is to allow to pipe the function call
+*/
+TInt TLogEntryExit::SetExitErrorCode(TInt aErr)
+	{
+	return iErr = aErr;
+	}
+	
+	
+	
+#else // _DEBUG
+
+	#define LOG(format, ARGS...)
+	#define TSYLOGENTRYEXIT
+	#define TSYLOGENTRYEXITARGS(aFunc, aFmt, ARGS...)
+	#define TSYLOGSETEXITERR(aErr)	aErr // So that we don't lose the return code in UREL!
+
+	
+/**
+Stub class for urel builds, required for exports.
+*/
+class TLogEntryExit
+	{
+public:
+	IMPORT_C TLogEntryExit(const TDesC8& aFnName, const TDesC8& aLayer);
+	IMPORT_C TLogEntryExit(const TDesC8& aFnName, const TDesC8& aLayer, TRefByValue<const TDesC8> aFmt, ...);
+	IMPORT_C TLogEntryExit(const TDesC8& aFnName, const TDesC8& aLayer, TRefByValue<const TDesC16> aFmt, ...);
+	IMPORT_C ~TLogEntryExit();
+	};
+
+
+
+#endif // _DEBUG
+
+#endif // __LTSYLOGGER_H_