diff -r 866b4af7ffbe -r 4dc88a4ac6f4 obex/obexprotocol/obextransport/src/logengine.cpp --- a/obex/obexprotocol/obextransport/src/logengine.cpp Tue Sep 28 20:14:08 2010 +0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,355 +0,0 @@ -// Copyright (c) 2005-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: -// - -/** - @file - @internalTechnology -*/ - - -#include -#include -#include "logger.h" - - -#ifdef __FLOG_ACTIVE -_LIT8(KSubsystem, "obex"); -_LIT8(KLogCmpt, "logengine"); -#endif - - -NONSHARABLE_CLASS(TLogData) - { - public: -#ifdef __FLOG_ACTIVE - TLogData(); - - void SetLogTags(const TDesC8& aCmpt); - - TInt iAccessCount; - - RFileLogger iLogEngine; - TBuf8 iCurrentComponent; -#endif - }; - - -#ifdef __FLOG_ACTIVE -TLogData::TLogData() - : iAccessCount(0), iCurrentComponent(KNullDesC8) - {} - -void TLogData::SetLogTags(const TDesC8& aCmpt) - { - if (aCmpt != iCurrentComponent) - { - iLogEngine.SetLogTags(KSubsystem, aCmpt.Left(KMaxTagLength)); - iCurrentComponent = aCmpt.Left(KMaxTagLength); - } - } -#endif - -#define GETLOG TLogData* __logger = static_cast(Dll::Tls()); - - - -EXPORT_C /*static*/ TInt CObexLog::Connect() - { -#ifdef __FLOG_ACTIVE - GETLOG; - - if (!__logger) - { - CObexLog::Write(KLogCmpt, _L8("Opening new logger connection")); - __logger = new TLogData(); - if (!__logger) - { - CObexLog::Write(KLogCmpt, _L8("Opening logger connection failed, no memory")); - return KErrNoMemory; - } - - __logger->iLogEngine.Connect(); - Dll::SetTls(__logger); - } - - __logger->iAccessCount++; - CObexLog::WriteFormat(KLogCmpt, _L8("Opening -- %d instances now open"), __logger->iAccessCount); - - return KErrNone; -#else - return KErrNotSupported; -#endif - } - - -EXPORT_C /*static*/ void CObexLog::Close() - { -#ifdef __FLOG_ACTIVE - GETLOG; - - if (__logger) - { - TInt& count = __logger->iAccessCount; - - if (count) - { - count--; - CObexLog::WriteFormat(KLogCmpt, _L8("Closing -- %d instance(s) left open"), count); - if (!count) - { - __logger->iLogEngine.Close(); - delete __logger; - Dll::SetTls(NULL); - CObexLog::Write(KLogCmpt, _L8("Fully closed and deleted, now flogging statically.")); - } - } - else - { - CObexLog::Write(KLogCmpt, _L8("Not closing -- not opened")); - } - } -#endif - } - - - -EXPORT_C /*static*/ void CObexLog::Write(const TDesC8& IF_FLOGGING(aCmpt), const TDesC8& IF_FLOGGING(aText)) - { -#ifdef __FLOG_ACTIVE - GETLOG; - - if (__logger) - { - __logger->SetLogTags(aCmpt); - __logger->iLogEngine.Write(aText); - } - else - { - RFileLogger::Write(KSubsystem, aCmpt, aText); - } -#endif - } - - -EXPORT_C /*static*/ void CObexLog::WriteFormat(const TDesC8& IF_FLOGGING(aCmpt), TRefByValue IF_FLOGGING(aFmt), ...) - { -#ifdef __FLOG_ACTIVE - VA_LIST list; - VA_START(list, aFmt); - - GETLOG; - - if (__logger) - { - __logger->SetLogTags(aCmpt); - __logger->iLogEngine.WriteFormat(aFmt, list); - } - else - { - RFileLogger::WriteFormat(KSubsystem, aCmpt, aFmt, list); - } -#endif - } - - -EXPORT_C /*static*/ void CObexLog::WriteFormat(const TDesC8& IF_FLOGGING(aCmpt), TRefByValue IF_FLOGGING(aFmt), VA_LIST& IF_FLOGGING(aList)) - { -#ifdef __FLOG_ACTIVE - GETLOG; - - if (__logger) - { - __logger->SetLogTags(aCmpt); - __logger->iLogEngine.WriteFormat(aFmt, aList); - } - else - { - RFileLogger::WriteFormat(KSubsystem, aCmpt, aFmt, aList); - } -#endif - } - - -EXPORT_C /*static*/ void CObexLog::Write(const TDesC8& IF_FLOGGING(aCmpt), const TDesC16& IF_FLOGGING(aText)) - { -#ifdef __FLOG_ACTIVE - GETLOG; - - if (__logger) - { - __logger->SetLogTags(aCmpt); - __logger->iLogEngine.Write(aText); - } - else - { - RFileLogger::WriteFormat(KSubsystem, aCmpt, aText); - } -#endif - } - - -EXPORT_C /*static*/ void CObexLog::WriteFormat(const TDesC8& IF_FLOGGING(aCmpt), TRefByValue IF_FLOGGING(aFmt), ...) - { -#ifdef __FLOG_ACTIVE - VA_LIST list; - VA_START(list, aFmt); - - GETLOG; - - if (__logger) - { - __logger->SetLogTags(aCmpt); - __logger->iLogEngine.WriteFormat(aFmt, list); - } - else - { - RFileLogger::WriteFormat(KSubsystem, aCmpt, aFmt, list); - } -#endif - } - - -EXPORT_C /*static*/ void CObexLog::WriteFormat(const TDesC8& IF_FLOGGING(aCmpt), TRefByValue IF_FLOGGING(aFmt), VA_LIST& IF_FLOGGING(aList)) - { -#ifdef __FLOG_ACTIVE - GETLOG; - - if (__logger) - { - __logger->SetLogTags(aCmpt); - __logger->iLogEngine.WriteFormat(aFmt, aList); - } - else - { - RFileLogger::WriteFormat(KSubsystem, aCmpt, aFmt, aList); - } -#endif - } - - -EXPORT_C /*static*/ void CObexLog::HexDump(const TDesC8& IF_FLOGGING(aCmpt), const TText* IF_FLOGGING(aHeader), const TText* IF_FLOGGING(aMargin), const TUint8* IF_FLOGGING(aPtr), TInt IF_FLOGGING(aLen)) - { -#ifdef __FLOG_ACTIVE - GETLOG; - - if (__logger) - { - __logger->SetLogTags(aCmpt); - __logger->iLogEngine.HexDump(aHeader, aMargin, aPtr, aLen); - } - else - { - RFileLogger::HexDump(KSubsystem, aCmpt, TPtrC8(aPtr, aLen), KNullDesC8); - } -#endif - } - - - - - - - -/** -Leave (if error) verbosely- log name of file and line number just before -leaving. -@param aFile The file we're leaving from. -@param aLine The line number we're leaving from. -@param aReason The leave code. -*/ -EXPORT_C void VerboseLeaveIfErrorL(const TDesC8& IF_FLOGGING(aCpt), - char* IF_FLOGGING(aFile), - TInt IF_FLOGGING(aLine), - TInt IF_FLOGGING(aReason)) - { -#ifdef __FLOG_ACTIVE - // only leave if an error value - if ( aReason >= KErrNone ) - { - return; - } - - _LIT8(KLeavePrefix, "LEAVE: "); - - TPtrC8 fullFileName((const TUint8*)aFile); - TPtrC8 fileName(fullFileName.Ptr()+fullFileName.LocateReverse('\\')+1); - - TBuf8<256> buf; - buf.Append(KLeavePrefix); - buf.AppendFormat(_L8("aReason = %d [file %S, line %d]"), aReason, &fileName, - aLine); - CObexLog::Write(aCpt, buf); - - // finally - User::Leave(aReason); -#endif - } - -/** -Panic verbosely- log name of file and line number just before panicking. -@param aFile The file that's panicking. -@param aLine The line number that's panicking. -@param aReason The panic code. -@param aPanicName The text of the panic code. -@param aPanicCategory The panic category. -*/ -EXPORT_C void VerbosePanic(const TDesC8& IF_FLOGGING(aCpt), - char* IF_FLOGGING(aFile), - TInt IF_FLOGGING(aLine), - TInt IF_FLOGGING(aPanicCode), - TText8* IF_FLOGGING(aPanicName), - const TDesC& IF_FLOGGING(aPanicCategory)) - { -#ifdef __FLOG_ACTIVE - _LIT8(KPanicPrefix, "PANIC: code "); - - TPtrC8 fullFileName((const TUint8*)aFile); - TPtrC8 fileName(fullFileName.Ptr()+fullFileName.LocateReverse('\\')+1); - - TBuf8<256> buf; - buf.Append(KPanicPrefix); - buf.AppendFormat(_L8("%d = %s [file %S, line %d]"), - aPanicCode, - aPanicName, - &fileName, - aLine); - CObexLog::Write(aCpt, buf); - - // finally - User::Panic(aPanicCategory, aPanicCode); -#endif - } - -#ifdef __FLOG_ACTIVE -_LIT8(KInstrumentIn, ">>%S this = [0x%08x]"); -_LIT8(KInstrumentOut, "<<%S"); -#endif - -EXPORT_C TFunctionLogger::TFunctionLogger(const TDesC8& IF_FLOGGING(aCpt), const TDesC8& IF_FLOGGING(aString), TAny* IF_FLOGGING(aThis)) - { -#ifdef __FLOG_ACTIVE - iCpt.Set(aCpt); - iString.Set(aString); - CObexLog::WriteFormat(iCpt, KInstrumentIn, &iString, aThis); -#endif - } - -EXPORT_C TFunctionLogger::~TFunctionLogger() - { -#ifdef __FLOG_ACTIVE - CObexLog::WriteFormat(iCpt, KInstrumentOut, &iString); -#endif - } -