diff -r 000000000000 -r 72b543305e3a email/alwaysonlineemailplugin/src/AlwaysOnlineEmailLoggingTools.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/alwaysonlineemailplugin/src/AlwaysOnlineEmailLoggingTools.cpp Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,270 @@ +/* +* 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: +* Class for more comprehensive logging features +* +*/ + + +#include "AlwaysOnlineEmailLoggingTools.h" + +#ifdef AO_LOGGING_TOOLS_ON + +// ---------------------------------------------------------------------------- +// AOLogT() +// Constructor +// ---------------------------------------------------------------------------- +#ifndef AO_LOG_USE_RBUF +AOLogT::AOLogT( const TDesC& _aolFunc ) : + iAoFunc( _aolFunc ), iAoLogBuf( KAOLogToolInFunc ) + { + if (DoFilter(AoLogInOut)) + { + AOLogT::WriteAoLog(iAoLogBuf); + iAoLogBuf.Append(iAoFunc); + AOLogT::WriteAoLog(iAoLogBuf); + } + } + +#else +AOLogT::AOLogT( const TDesC& _aolFunc ) : iAoFunc( _aolFunc ) + { + if ( iAoLogBuf.Create(KAOLoggingToolsBuffer) ) + { + AOLogT::WriteAoLog(KAOLogError); + } + else + { + if (DoFilter(EAoLogInOut)) + { + iAoLogBuf.Append( KAOLogToolInFunc ); + iAoLogBuf.Append(iAoFunc); + AOLogT::WriteAoLog(iAoLogBuf); + } + } + } +#endif + +// ---------------------------------------------------------------------------- +// ~AOLogT() +// Destructor +// ---------------------------------------------------------------------------- +AOLogT::~AOLogT() + { + if (DoFilter(EAoLogInOut)) + { + // write function exit to log + iAoLogBuf.Zero(); + iAoLogBuf.Append( KAOLogToolOutFunc ); + iAoLogBuf.Append( iAoFunc ); + iAoLogBuf.Append(' '); + AOLogT::WriteAoLog( iAoLogBuf ); + } +#ifdef AO_LOG_USE_RBUF + iAoLogBuf.Close(); +#endif + } + +// ---------------------------------------------------------------------------- +// WriteContext() +// +// ---------------------------------------------------------------------------- +void AOLogT::WriteContext( const TDesC& _aolMsg, TAoValueCat valCat, TInt _aolVal ) + { + iAoLogBuf.Zero(); + // append function name + iAoLogBuf.Append( iAoFunc ); + // append space + iAoLogBuf.Append(' '); + iAoLogBuf.Append( _aolMsg ); + AOLogT::WriteAoLog( iAoLogBuf, valCat, _aolVal ); + } + +// ---------------------------------------------------------------------------- +// WriteContext() +// +// ---------------------------------------------------------------------------- +void AOLogT::WriteContext( const TDesC& _aolMsg ) + { + iAoLogBuf.Zero(); + // append function name + iAoLogBuf.Append( iAoFunc ); + iAoLogBuf.Append(' '); + iAoLogBuf.Append( _aolMsg ); + AOLogT::WriteAoLog( iAoLogBuf ); + } + +// ---------------------------------------------------------------------------- +// WriteContextNum() +// +// ---------------------------------------------------------------------------- +void AOLogT::WriteContextNum( const TDesC& _aolMsg, TInt aNum ) + { + iAoLogBuf.Zero(); + iAoLogBuf.Append( iAoFunc ); + iAoLogBuf.Append(' '); + iAoLogBuf.Append( _aolMsg ); + iAoLogBuf.Append(' '); + iAoLogBuf.AppendNum( aNum ); + AOLogT::WriteAoLog( iAoLogBuf ); + } +// ---------------------------------------------------------------------------- +// WriteContextDes() +// +// ---------------------------------------------------------------------------- +void AOLogT::WriteContextDes( const TDesC& _aolMsg, const TDesC& aDes ) + { + iAoLogBuf.Zero(); + //check that message will not be oversize and cause panic. 4 is for + //appented extra spaces etc. + if ( ( iAoFunc.Length() + _aolMsg.Length() + aDes.Length() + 4 ) < // CSI: 47 # see comment above + iAoLogBuf.MaxLength() ) + { + iAoLogBuf.Append( iAoFunc ); + iAoLogBuf.Append(' '); + iAoLogBuf.Append( _aolMsg ); + iAoLogBuf.Append(' '); + iAoLogBuf.Append( aDes ); + } + else + { + iAoLogBuf.Append( KAOLogError ); + } + AOLogT::WriteAoLog( iAoLogBuf ); + } +// ---------------------------------------------------------------------------- +// WriteContextDes8() +// +// ---------------------------------------------------------------------------- +void AOLogT::WriteContextDes8( const TDesC& _aolMsg, const TDesC8& aDes8 ) + { + //check that there is enough room for log message 4 is for extra spaces etc + if ( ( iAoFunc.Length() + aDes8.Length() + _aolMsg.Length() + 4 ) // CSI: 47 # see comment above + < iAoLogBuf.MaxLength() ) + { + //copy 8 bit descriptor + iAoLogBuf.Copy( aDes8 ); + //insert function name to first of message + iAoLogBuf.Insert( 0, iAoFunc ); + //then insert message + iAoLogBuf.Insert( iAoFunc.Length()-1, _aolMsg ); + } + else + { + iAoLogBuf.Zero(); + iAoLogBuf.Append( KAOLogError ); + } + AOLogT::WriteAoLog( iAoLogBuf ); + } + +// ---------------------------------------------------------------------------- +// WriteAoL() +// static +// ---------------------------------------------------------------------------- +void AOLogT::WriteAoLog( const TDesC& _aolMsg ) + { + RFileLogger::Write(KAOEmailLogToolsDir, KAOEmailLogToolsFile, + EFileLoggingModeAppend, _aolMsg); + } + +// ---------------------------------------------------------------------------- +// WriteAoLogFormat() +// static +// ---------------------------------------------------------------------------- +void AOLogT::WriteAoLogFormat( const TDesC& _aolMsgFor, TInt aNum ) + { + RFileLogger::WriteFormat(KAOEmailLogToolsDir, KAOEmailLogToolsFile, + EFileLoggingModeAppend, _aolMsgFor, aNum); + } + +// ---------------------------------------------------------------------------- +// WriteAoL() +// static +// ---------------------------------------------------------------------------- +void AOLogT::WriteAoLog( TDes& _aolMsg, TAoValueCat _valCat, TInt _aolVal ) + { + //pointer to map value table + const AOMapVal* tableptr = NULL; + + // set correct table pointer represented in _valCat + switch ( _valCat ) + { + case EAoMailPluginStates: + tableptr = EMailPluginStatesTable; + break; + case EAoManagerServerCommands: + tableptr = TManagerServerCommandsTable; + break; + case EAoMsvSessionEvent: + tableptr = TMsvSessionEventTable; + break; + case EAoNormalError: + tableptr = NormalErrorTable; + break; + case EAoLastValue: + default: + break; + } + + //space to message + _aolMsg.Append(' '); + + if ( tableptr ) + { + // add integer name to log message + AOLogT::AddMapValue( _aolMsg, _aolVal, tableptr ); + } + else + { + // if correct table was not found add error message to log + _aolMsg.Append( KAOMapError ); + } + + // write log + AOLogT::WriteAoLog( _aolMsg ); + } + +// ---------------------------------------------------------------------------- +// AddMapValue() +// static +// ---------------------------------------------------------------------------- +void AOLogT::AddMapValue( TDes& _aMapVal, + TInt _aVal, const AOMapVal _mapTable[] ) + { + // taple index + TInt ind = 0; + + // lop while correct integer is found or last table end is achieved + while ( _mapTable[ind]._numVal != _aVal && // CSI: 2 # can't check length + _mapTable[ind]._numVal != AO_LAST_MAP_VALUE ) // CSI: 2 # can't check length + { + ++ind; + } + + // adds string to log message, table contains TText null terminated strings + TPtrC mapPtr( _mapTable[ind]._strVal ); // CSI: 2 # can't check length + _aMapVal.Append( mapPtr ); + } + +// ---------------------------------------------------------------------------- +// DoFilter() +// static +// ---------------------------------------------------------------------------- +TBool AOLogT::DoFilter( TInt aFilter ) + { + return ( aFilter & KAoLoggingToolsFilter ); + } + +#endif //AO_LOGGING_TOOLS_ON +